[Geany-Devel] A direction for Geany

Yosef Or Boczko yoseforb at xxxxx
Mon Nov 11 22:38:47 UTC 2013


What about redesign the GUI?

Regards,
Yosef Or Boczko

בתאריך ב', נוב 11, 2013 בשעה 9:18 AM, Lex Trotman 
<elextr at gmail.com> כתב:
> Hi All,
> 
> Recently there have been a number of proposals for significant 
> changes in Geany, different languages, GObjectification and other 
> various changes.
> 
> As good or bad as the individual suggestions may be, they have made 
> it clear to me that there is no plan for the future of Geany that 
> allows them to be evaluated effectively.
> 
> So I am starting this thread to try to get ideas on where Geany 
> should be headed.
> 
> To start the ball rolling, here are some of the things I see Geany 
> should aspire to:
> 
> 1. An architecture that allows multi-threading to be used for non-GUI 
> tasks.  The most obvious of course is parsing.  At the moment none of 
> the parsers support symbols in anything other than the global scope, 
> and adding them would significantly increase the parsing effort, but 
> doing it in a background thread would make the performance hit less 
> obvious.  But there needs to be a careful design of the passing of 
> data from the edit buffer to the parser and back to the symbol tables 
> to minimise overhead, latency and ensure its non blocking.  With such 
> an architecture other complex functionality can then also happen in 
> the background without impacting Geany's responsive feel.
> 
> 2. Language specific assistance, such as indentation, or dynamic 
> error marking and intelligent autocompletes.  I consider that these 
> hang off the previous capability of better parsing/analysis of the 
> program.  Matthew has demonstrated a prototype that provides some of 
> these facilities using libclang (for the clang languages only C, C++, 
> Obj-c).  But the current Geany architecture does not support plugging 
> such things in easily, and with the number of languages that Geany 
> supports, I would suggest that its small, light and fast tag would be 
> severely threatened if assistance for all languages were plugged in 
> at once.
> 
> 3. Proper portability.  At the moment Geany is really a Linux 
> application that has some limited (and buggy) support for Windows.  
> The main editing widget that Geany uses is available for many 
> platforms and toolkits.  If Geany had an architecture that separated 
> the target specific parts into a "backend" the way Scintilla does, 
> then it would be possible to support multiple targets more easily, 
> making Geany less at the mercy of one toolkit's direction (that means 
> you deprecating GTK) and better able to support different platforms 
> like OSX and Windows.  Work such as that Dimitar is doing for 
> spawning on Windows naturally then falls into such a backend.
> 
> 4. Multiple top level windows.  As monitors are cheaper, being able 
> to spread views of files to optimally utilise the screen space 
> available adds to the users effectiveness.  Most languages support 
> multiple modules in different files and many use multiple files for 
> related parts, such as C/C++ header and body.  Looking at and editing 
> several places/files at once has many uses.  As useful as 
> splitwindows one and two are (especially together) they still assume 
> a single rectangular top level is available for subdivision.  But 
> different desktop menu layouts or having other applications visible 
> at the same time can limit the contiguous rectangular space 
> available.  Multiple top levels can make better use of 
> non-rectangular space.
> 
> These are all big changes that don't fall into the current Geany mode 
> of "light maintenance and extra features as someone implements them". 
>  For big changes like those above however, a clear design and a 
> planned process is needed to ensure that the big changes don't clash 
> with each other and that they are not derailed by interim smaller 
> changes.
> 
> I would suggest the process to be:
> 
> 1. gather other major ideas for capabilities that Geany should plan 
> to support
> 2. develop a design that supports these (or at least the most useful 
> ones)
> 3. look at how that design can be implemented, can the existing 
> design be mutated to it, or is it a clean framework that large parts 
> of the existing functionality can plug into, or is it a whole clean 
> implementation.  This also includes issues like languages to use (C, 
> C++, Vala, Haskell etc).
> 4. depending on the outcome from 3. use a new repository organisation 
> or at least a new branch in the existing Geany repo to ensure that 
> the existing Geany is not destabilised by major changes as they take 
> place.
> 
> This is something very different to the way Geany is currently 
> operating, and I don't know if the community wants to consider such a 
> more structured approach.  If its felt that its worthwhile then I 
> suggest that steps one and two are best achieved using the wiki and I 
> will volunteer to set up and maintain page(s) for those phases at 
> least.
> 
> So to summarise, what capabilities should Geany aspire to support, 
> and what is the process to develop the best software architecture to 
> support those capabilities.
> 
> Cheers
> Lex
> 
> 
> 
> 
> 
> 



More information about the Devel mailing list