Cesar Mello's web log on lightforms
30/05/2005
Some weeks ago I have started a major redesign in lightforms. The main objective is to have better performance, and to run well on Windows CE devices which in general have very modest computing power. This weekend was very productive, and the new design is working. Things are really moving again, but there's still a lot of work to catch up the features from the old design and go for the brand new 0.3. As allways, suggestions welcome. PocketPC and smartphone emulator screenshots coming soon...
28/02/2005
First post this year... The project has been stalled for a lot of time, but I didn't give up! Thanks for all that keep visiting the site and giving design suggestions and feedback. I've sent the following message to the mailing list. I'll be glad to hear opinions from everyone.
Hello all,
When I started lightforms, I decided to implement the controls (widgets) from scratch, using only basic drawing and event handling. This way, the behavior would be exatcly the same in all the platforms, with a clean interface not dependent on weird APIs. Native controls from the platform wouldn't be used.
This line of thought has advantages and disadvantages, as everything in life. :-)
The other school of GUIs say that the platform independence should be achieved by implementing wrappers around the native controls. The problem is that there are lots of specific behaviors in Windows controls, that are not available in GTK and Mac OS, for example. This makes it very difficult to create a common interface with the same behavior in all the platforms. Lots of obscure tricks must be used to hide the weird stuff. This can be seen in SWT, for example. That's why I decided to avoid it in lightforms, because I believed it would add too much complexity that I wouldn't be able to manage alone.
After discussing with Sri about this, I decided to extend the lightforms design, so that both drawn and native controls can be used. This way, I think more people will be interested in lightforms, because it would fullfill the expectations of everybody.
So I'll describe the idea below. I would like to have feedback from everybody on the list about this, if possible.
The idea is to keep implementing drawn controls in all the platforms. But, the same controls will be implemented also as wrappers to native ones in some platforms (just Windows for now, but maybe others in the future). The user will have the option to decide which implementation to use, through preprocessor defines.
So, let's suppose someone makes a program that has a button and a textbox. The source code will use the classes "Button" and "Edit". By default, these controls will be drawm in all the platforms. But if during compilation the flag "USE_NATIVE_CONTROLS" is defined, then that same source code will map to native "button" and "edit" controls. That's the idea. Please tell me what you think.
The impact on the design is that only features available in the native controls can be used in the basic controls. More advanced features could be implemented in subclasses and wouldn't be available in native controls.
Some may say that I'm adding complexity that I won't be able to manage in a 1-person project. This is true, I depend on other people to implement this. The reason I accepted this complexity is that Sri wants to contribute to it.
Thanks for the attention.
Best regards!
Cesar
06/12/2004
lmake is still something I'm interested in doing in paralell to lightforms. I've posted some ideas about it in a forum available in my personal website. It's available here Please feel free to comment, give suggestions, say bad things, etc. :-)
30/11/2004
I'm back finally. Today was my last university class this year, and definetly now I'll have free time to work on lightforms. These are the things I'll be addressing now:
- Optimizations for the xlib version: must make it run smoothly in my Pentium 133;
- Formal design, UML and new roadmap based on this;
- Clean the build, decrease header dependencies, and optimize for precompiled headers use with GCC 3.4;
- Finish basic stuff like dialogs, graphics, proper font handling;
- Controls, controls, controls...
28/10/2004
What a long time since I last touched this project... I'm working on most of my Saturdays, and when I get home I'm really tired. But things are starting to calm down a bit, and I expect to continue the work from where I have stopped 2 months ago.
Last month I bought something I dreamed with for some years: a Toshiba Portege 300CT, with a Pentium 133 processor, 1.6 GB hard disk and 32 MB of RAM. A very cool, small and unexpensive machine. It's running Gentoo Linux, with a brand new xorg. I must say I got disappointed with the current display performance of lightforms in this machine, compared to other toolkits like GTK. So expect a lot of optimizations for the next weeks. I'll definetly publish a new roadmap to see what can still be done for this year.
15/08/2004
I'm thinking on "yet another build tool" for lightforms applications and even lightforms itself. Thiago had already suggested this, and I've been talking with Hugo about it right now. Must think more about it... Here are my initial thoughts:
- Single platform independent project file format. Create it once and compile your project in any platform with no changes;
- Allow multiple source directories;
- Allow library dependency specification;
- Allow making libraries and executables;
- Custom header generation with information about installed libraries and machine configuration, like automake;
- Allow future integration with a lightforms IDE (same C++ classes would be reused);
lmake would be divided in two parts:
- Build system setup (lmake.conf): a global setup done once in the machine. This is used for configuring the desired compiler, global compiler options for the machine, and installed library listing (like pkgconfig). Once configured, a machine is ready to compile any lmake project.
- lmake projects: each project would have a "lmake.build" file, for setting up library dependencies, source files, preprocessor definitions, source directories, name of the target executable/library, etc. This same project file could be compiled in any machine with a working "lmake build system".
Installed libraries would be listed in lmake.conf. In a far future, packaged library sources could be automatically downloaded to satisfy dependencies (like Gentoo).
This idea really got started because I'm wasting too much time with automake trying to setup stuff that are not working on FreeBSD and Debian. More ideas needed...
08/08/2004
Today Hugo P.L. joined the project and contributed this new web site. Thanks Hugo for the excellent work and welcome!
I didn't touch lightforms code last week again, and I had to work in the weekend also. But today I got a good rest. :-) I believe next weeks won't be so busy.
02/08/2004
Last week was a busy one. I need to learn lots of new things at work (Windows CE, Linux, Wine...). This is all very exciting! But it also makes me arrive at home much more tired. So my free time is spent basically in reading these last days.
This means lightforms development will be in a slow pace in the next weeks. There is some nice work going on slowly for version 0.2.2 though. Apart from basic layout management and theme abstraction, I'm also working on some performance problems. The automake stuff for Linux must be worked on also, this is something I need help.
When will version 0.2.2 be released? My first guess would be on August 16, maybe August 9. Until there I can measure my new free time constraints and show a roadmap hopefully.
26/07/2004
My vacations are over, must sleep earlier now. I'm currently working on the basis for several new parts: layout management, themes (skins) and scrollable panes. There are the tutorials also, but I'm delaying them a bit more because I plan some API changes with the stuff I'm working now. My plans are to release them later this week.
25/07/2004
Released lightforms 0.2.1 with Font support. Screenshots here and here.
21/07/2004
Created my personal blog.
14/07/2004
I must give a small break in lightforms development again because I'm doing an extra work. But should come back next week. Font support is underway and will be released soon (version 0.2.1).
13/07/2004 12:00 -0300
Released lightforms 0.2. Available in tar.gz and zip formats as usual, plus test binaries for Linux. Some paths are hard coded in the makefiles, help much appreciated for the automake stuff. Special thanks to Thiago Adams, Sri and Diogo Hiller who helped me in this release. NOTE: SourceForge mirrors seem to be lagged in the file distribution, so please try later is you get an error when trying to download.
13/07/2004:
So here am I starting my own blog, totally lightforms-oriented of course. :-) Lots of news:
- I'm almost packaging the so late 0.2 release, with support for loading images in PNG/JPG formats, and source build through automake scripts;
- Since July 5th I've been on vacation from job, so I'm having lots of free time to work on lightforms;
- Also writing some tutorials which will be online very soon;
- Also updating the Project Goals section. Just added my comment on open source software. :-)
08/06/2004:
Found this nice link from Andrew Chant looking for info on Xft2 on Google. Thanks Andrew! This got me started on coding anti-aliased font support. Also installed a brand new Gobolinux on my machine, real cool stuff! Screenshots soon when the anti-aliased fonts get working.
31/05/2004:
Released version 0.1.4 with selection capabilities for the Edit control working for both xlib and Win32. Available in .tar.gz and .zip distributions. Notice the increase in the distribution size: it is due to embedding cxImage, the very nice lib I'll be using for imaging. The cxImage sources are checked in but I haven't implemented any imaging support yet, that's what I'm working on to release version 0.2. I failed in the last release date previews, but I think it'll be ready in the next 2 weeks.
24/05/2004:
Please be patient, a new version will be released next Sunday! I'm late in the release date but I'm actively working and having progress. UPDATE: no new version last Sunday... Still working on the imaging stuff...
25/04/2004:
Released version 0.1.3, with a brand new caret for the xlib version and several small bug fixes for both versions. Here are the links for downloading in tar.gz and zip formats. I think I'll delay the planned May 1st 0.2 release one or two weeks. But things are going nice!
13/04/2004:
The xlib version of lightforms is under an extensive rewrite. I found this excellent book , which changed the way I'm developing the xlib version: before it was a slow, buggy trial-and-error process, because of the lack of good documentation. Now I'm learning xlib from the ground up, and it's being fun. My estimate is to have the 0.2 version in May as planned, and it'll be the first usable version for xlib hopefully.
05/04/2004:
My new motherboard is working and I have installed a brand new Mandrake Linux 10 on it as my development environment. Still struggling to find out about xlib internationalization though...
28/03/2004:
Almost one month has elapsed and due to extra work I couldn't touch lightforms code since then. Also my Athlon still is having trouble, but hopefully my new motherboard will arrive next week. Sorry for these bad news. But, there are some good news too: today I could find some time and checked in a fix for the Windows version: now the dead key chars are working again. Another good news is that I have successfully compiled lightforms under mingw, and added a small build script for it (please be patient the makefiles will arrive soon :-). And last, I'm uploading an updated distribution with these fixes, and a new .tar.gz file with decent paths. It's available in the project page.