DarkWyrm's Haiku Site:
Tracking the Progress of the Haiku App Server

Current State: June 18, 2005

It works for some stuff, but still not really all that stable. Looks good, though. >:D

Screenshot: People and Playground

Miscellaneous Downloads

HOWTO: Getting Haiku

History

September - December 2001

Haiku was founded under the name OpenBeOS in August of 2001. I joined up that same week. Shortly after, I started working on figuring out the structure of the app_server. This began a time of extensive research on what information was available, from BeOS newsletter articles to Be Engineer contacts to using AtheOS' app_server as a model. Time was spent figuring out what things the app_server does and also stuff about general window management models, BBitmap stuff, and the app_server's structure from a 10,000 foot view. The more I worked, the more I found that it is quite a complicated beast - probably on par with the kernel. Yuck. ;D After some discussion, it was decided that the means to communicate with the server needed to be as lightweight as possible for performance reasons. I wrote my first code for Haiku - the PortLink class. There were also discussions about reverse engineering and its legality. As it turned out, it was legal under U.S. law because it was for the basis of compatibility. In December, prototype #2 was released. It had no GUI, but it demonstrated client-server communications and how the server could at least in theory run under R5 for testing.


January - April 2002

Once prototype #2 was released, I set to work on the next one, which would have a GUI. During this time, prototypes #3 and #4 were released. #3 debuted with screenshots showing a virtual screen running from within BeOS, which would be a huge help in later development. #4 ended up being a major cleanup of the graphics engine. This time also saw some research on using FreeType2 for fonts and how BBitmaps are allocated in memory. After a quiet period, April saw the release of prototype #5. #5 was probably the first major milestone in all the R&D; for the app_server, because it had a somewhat-working window that was displayed on-screen and was shown using a test app which was run from within BeOS and talked to the server.

Screenshots: [Prototype #5]

May - August 2002

Another quiet period followed after all this coolness, but elsewhere on the project work was being done, most notably, the registrar and BRoster. This was significant because the registrar works with the app_server and the input_server as the basis for BeOS. Over the summer, I began working on specifications on what the server needed to be able to do and how it would be designed. Little did I know how much experience I lacked in the design department, but it had to be done. In the meantime, more work on prototyping was done, and server prototype #6 came around, with its major achievement being window decorators.

A roadmap for the registrar was created. Some thought was given to color management. Toward the end of the summer, a new preferences application, Appearance, saw its first release. Amongst its uses was to show previews for the various window decorators that would be used by the app_server. The research earlier in the year on BBitmap allocation was put to work and a BitmapManager class was created for the server prototypes.

Screenshots: [Appearance] [Prototype #6] [A Mockup of Possible R1]

September - December 2002

The fall of '02 saw more research and one last prototype. Much effort was put into researching font support and it was this very reason that #7 was begun. Font support saw a number of things, including text transformations, and prototype #7, when it was released in December, had support for rotated and/or slanted (sheared) text of various shapes and sizes. The font engine started in this prototype would carry over into the real server code and last, in some form, for quite a long time.

This period also saw thought about quite a few other subjects. There was significant dicussion and thought about support for multiple monitors attached to one machine. Haiku was given permission to utilize color management though the LittleCMS library under the MIT, which was formerly GPL. Work on a BScrollBar which was vastly different from BeOS R5's implementation was also done shortly before the new year.

Screenshots: [Font Demo #1] [Font Demo #2]


January - April 2003

Up to this point, not much was in the CVS tree. The beginning code for the server was checking into the tree. The real coding has begun after about a year and a half of time spent in research and prototyping. One of the new features of Haiku over BeOS R5 was the addition of the system cursor code, which would largely be left to the wayside for quite some time. Adrian Oanca (known better as Adi) began working with me by tackling BWindow. Basic skeleton code for BView and BPicture also was developed. By April, the real server code had reached the point where it could display a screen, do client-server communications, and display a sort-of working window like prototype #5 did. On top of this, though, The Appearance app saw some retooling, too.

Screenshots: [Retooled Appearance] [A Second R1 Mockup]

May - August 2003

After some time spent resting, the app_server made some more significant progress: real, working BWindows, decorator support, and a means of supporting system cursors without changing the public API. FreeType was upgraded and a preliminary, hackish means to build the app_server for development under R5 was released.

Screenshots: [System Cursors] [BeOS Decorator] [MacOS 8 Decorator] [Windows Decorator]

September - December 2003

After much time spent on BView and BWindow, Adi started to work getting them to play nice-nice with the app_server. This meant someone else working on the app_server besides myself. While hard for me to get used to, Adi proved to be a valuable addition to the team in general. The client-server messaging PortLink class was joined by his BSession, which was meant to help with performance when dealing with the many messages sent to the server having to do with drawing the screen. The code for redrawing the screen and clipping drawing calls saw major fixes. While all the work on the app_server was done, I still managed to find time to do some more updates to Appearance and the ScrollBar preferences app. The new, internally different BScrollBar code also saw some more features and fixes.

Screenshots: [Scrollbar Preferences] [Tweakable Window Tabs]

January - April 2004

All the work that Adi had done for the different parts of managing the desktop, such as the window manager, were checked in. Seeing the great amount of redundant code for the graphics engine, it was decided that a slightly different model was needed for the graphics engine, so it received major changes at this point.

March proved to be a very difficult time. All the work up to this point had put a major strain on the muscles and joints in my wrists, hands, and arms, and I'd had more than enough. Something had to change, and I thought that I had to almost completely stop using computers entirely. Thankfully, I was wrong. All the time spent resting through May made it possible for me to begin writing code again. Cubital Tunnel Syndrome and Carpal Tunnel Syndrome would continue be my nemesis, however.

June - August 2004

The summer proved to be quite productive after all the time off. Pahtz designed a BPortLink class which would combine the PortLink and BSession messaging methods into one unified format, and a blessing it was. The app_server received a feature freeze to get quite a few TODO items done and fix a bunch of bugs. Bill Hayden of the Cosmoe project also began occasionally submitting patches made in integrating the app_server into his OS.

Perhaps the most significant event of the summer, however, was WalterCon. The convention was held in Columbus, OH. It was at WalterCon that OpenBeOS would officially become Haiku. Ironically enough, it was also at this point that the new website went down the same day as the first official day of the convention. I was also promoted to team lead for the Interface Kit. It was an awesome time and an opportunity for people to put faces with the names that they saw in the community each day.

September - December 2004

To start the fall season off with a bang, a major server milestone was reached: the first application to be able to draw to the screen using the same kinds of methods as a regular BeOS app - the BView API. This prompted some significant time on adding support to more graphics calls and making it work better. The milestone definitely brought with it some much-needed morale and momentum. Near the year's end, it was decided that the vector graphics library Anti-Grain Geometry would provide all the heavy lifting for the server's graphics engine. At the year's end, Stephen Assmus joined the app_server team, bringing the team to four people.

Screenshots: [Drawing Milestone]


January - April 2005

Starting fresh in the new year, Stephan began working on the Painter drawing class, which would privde the entry point for the app_server to access all the code in Anti-Grain Geometry. Detail work on some of the controls, such as BCheckBoxes and BButtons, was also made. The font code also received some needed attention. Client-server communications also reached a point where mouse messages were being sent to the client, so it was possible to actually click on a BButton, for example. Adi checked in a new window manager which was better than the first revision. There were bugs, but these would be fixed later. Adi checked in another revised window manager, better than the second revision. Bugs existed, but they were going to be fixed in short order. After some time, Stephan's Painter class was integrated and the entire graphics engine was reviesed. Gabe unbroke the AccelerantDriver, which allowed the server to once again work with real hardware. Adi mostly finished the window management code, complete with numerous screenshots and was well-received when the news broke. It was a good thing that Adi, Stephan, and Gabe were doing work because, learning my lesson from a year previous, I decided to take a rest for a few months, but not before I did a little work in getting the project ready for the changeover to Subversion for source control over at BerliOS.

Screenshots: [AGG Library Demo #1] [AGG Library Demo #2] [Window Manager News Release] [Compare Haiku to BeOS]

May - June 2005

The fast and furious work that Stephan and Adi were doing was joined by Axel (of the Kernel team) and Jack Burton. Another milestone was reached: a real, working application that someone could do something with. In this case, it was a test app Stephan wrote called Playground.