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
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus