[Lazarus] Lazarus make me create better apps

Hans-Peter Diettrich DrDiettrich1 at aol.com
Thu May 6 02:36:49 CEST 2010


Razvan Adrian Bogdan schrieb:

> Lazarus could be so much better but because it inherits some old design 
> issues would probably be better if it was redesigned, made more modular 
> and follow some strict code writing rules. It needs a clear architecture 
> so that anyone can find his/her way into the code without digging for 
> days deeply into the sources.

Good documentation is expensive, at least for those people that should 
make it. The lack of a fixed concept can invalidate existing 
documentation at any time, when somebody found that things better have 
to be implemented differently, for some reason.

> Lazarus is still a great project but if we want more people to 
> contribute, it needs standards of doing things just like VCL has, code 
> must be intuitive if we want people to like doing what they do, also the 
> team should not restrict the abilities of the LCL but extend them on all 
> platforms if possible. Looking at other similar projects and borrowing 
> ideas wold only help the project become more attractive. Lazarus must 
> make it simple for people to write CrossPlatform code in a 
> non-restrictive way, allowing people to port Delphi stuff with little 
> modifications but not restrict itself to Delphi's abilities.

There exist so many different ways to design platform independent 
applications or GUI (fpgui), or multi-platform applications (LCL), or 
widgetset specific applications (Qt...). It's near impossible to fit all 
these models into one library. IMO the only general solution were a 
strictly decoupled GUI management, so that e.g. fpGui, LCL or Qt could 
be used, instead of only LCL. Then it would be possible to define some 
of theses models more precisely, and to develop the libraries according 
to these specifications - but the LCL most probably will never reach an 
stable state, that also could cover all future widgetsets or platforms; 
every new widgetset will add further incompatibilities, so that the set 
of everywhere available features will *shrink* all the time, and the 
widgetset specific differences will increase.

> The mobile world is now a perfect place for Lazarus to "sink it's teeths 
> into" if it knows how to occupy this space where there is 
> little competition on the RAD side of things. On the web part after many 
> years of Java slows apps, PHP code that let's you hit you fingers with a 
> big hammer and ASP.NET <http://ASP.NET> technology that seems to be so 
> hard to learn, Lazarus has a big change to make something that 
> integrates easily on the Server and the Client side, maybe using NaCL on 
> the client to build safe apps or simply "compile" to JS, Flash and 
> Silverlight.

This would mean to have a "Lazarus for LCL", another "Lazarus for 
Silverlight" etc., like "Delphi for PHP". Nice to have, but essentially 
these are very different projects.

> Now is the time to either write a new IDE (not the whole LCL) or 
> redesign the existing one using all the best features LCL has to offer, 
> the LCL itself could be made less object oriented on the API abstraction 
> part, and maybe the RTTI system if it is responsible for the big 
> executables.
>
> Lazarus could even replace technologies like Flash and Silverlight with 
> the right approach on the client side, i think some people are trying to 
> do just that with things like VGScene/DXScene.

All these could become such new projects, perhaps based on the current 
IDE and parts of the widgetsets, but each with a new component library. 
As a very first new project we could refactor the IDE and the LCL 
binding (designers...), into a new base for use with very different 
component libraries. This should include project management additions, 
to allow for a separation between general application code, and any 
number of additional GUIs, that can be switched at design time.

A new designer for the application-GUI interface may be added, that will 
allow to specify the project specific interface between both parts, and 
that can provide means to create skeletons for both sides (like class 
completion does). This will be the place where Actions come into the 
play, which already allow to define an abstract interface from the GUI 
to application code. The opposite direction should be supported as well, 
i.e. how application code can access parts of the GUI (show forms, read 
entry values...).

Just some ideas...

DoDi





More information about the Lazarus mailing list