Joined: 18 Jul 2005
|Posted: Fri Jul 22, 2005 9:59 am Post subject: Architecture and roadmap discussion
|DXUL should become the implementation of XUL GUI in D.
The below is merely my point of view, some assumptions may be naive or wrong, since I don't have too much experience in the role of a GUI architect. Everyone is invited to take part in refining the concept, defining the roadmap, etc. Especially help from anyone with solid knowledge of mozilla source code is appreciated.
Whatever I say, Mozilla developers are doing a great job!
- At the conceptual level XUL is very attractive in very many ways, one could speak for hours about it, everyone nor familiar with XUL is encouraged to at least take a look at it's concept.
- XUL has a serious background. It has been designed by thorough collaborative effort of many professionals, which means instead of attempting to design a new XML based GUI from scratch it is a good bet to take the valuable design experience of XUL as a starting point for a new ultimate GUI library for D.
- The concepts of D and XUL make me think they will perfectly interoperate in a very legant and efficient way. The code can definitely be much cleaner than mozilla's C++ source.
- It is clear that implementation of the entire XUL standard is an enormous undertaking. I wouldn't even dare to really take this as an ultimate goal. Even the way till the first window with a button is far enough. IMO any temptation to forge the first proof of concept demo application as quickly as possible should be abandoned
It is of an ultimate importance to thoroughly elaborate the architecture before writing the first lines of D code.
- In contrast to mozilla's implementation have a lightweight core and be truly modular from the beginning. This should not become a browser framework, but a GUI framework in first place. No half-gigabyte of sourcecode and tens of megabytes of binary distributions.
- The library should 'fix' the drawbacks of the mozilla's development environiment. I believe it is possible to elaborate an elegant structure much simpler and maybe even better than the overbloated ridiculously complex mess like mozilla's source tree. Drop everything not directly relating to the XUL GUI and go step by step bottom-up in development. I think alone the fact that it's D and not C++ implies that simpler structure and less code for the same functionality is possible.
- Attract more developers by elegant design and ease of getting involved. I think it is a suicide for a project like this to have a few core geeks coding in a closed manner with a postponed intention to explain how everything works some day in far future. It is not the way to achieve a more or less constant progress.
- Not even necessary to mention that it should be cross platform so as mozilla.
- Study mozilla source code in depth, decide which concepts, class structure, etc may be reused, what should be dropped/rewritten taking into account the benefits provided by D. This step must be done with extra care since it will affect anything else.
- Make all the painful decisions such as string class vs char, container and template philosophy, etc. This should not become another place to start flame wars about the concepts as such but concentrate on making the right decisions for this particular project.
- define the cross-platform drawing toolkit and implement it on linux and windows platforms.
- implement layouting and a few basic widgets with completely stripped down set of adjustable properties.
- plug in DMDScript, implement GUI event mechanism and a few event handlers for the widgets.
Once the above is done the project may be considered to have passed the bootstrapping phase and should provide a solid well documented codebase for implementation of the rest of the XUL's bells and whistles.
Everyone is welcome to join!