Coding Sprint Results
Wow. What a week. The Coding Sprint is over and I am very excited at what we achieved together! Haiku has become much more usable and polished thanks to all the fixes and improvements. For example, I can now use Beam to read and send my e-mail, which is obviously quite important for me to be able to use Haiku on a day by day basis. But that was certainly not all. Read on for a detailed listing of all the achievements.
We had a lot of fun in the group, the renewed Youth Hostel facilities are great. Like at the BeGeistert in Berlin, there is now a table soccer installation which we used from time to time to dope us with adrenalin and relax a bit from coding. But all in all, the coding absolutely dominated. It was actually quite intensive, on Wednesday, I realized that I had not been outside since Sunday evening. Ingo and Oliver were the most strict with getting up early, even though they stayed up late into the night. Poor Ingo was searching for a bug for a large portion of the sprint. But after the sprint, he was able to finally commit his hard work and now Haiku builds Haiku with twice the speed as before. The bug was actually a missing underscore, so that he used an unnamed auto locker, which then didn't lock at all... Overall, I'd say that this coding sprint was at least as successful as the one in January. And Haiku has taken another great leap towards the first alpha release. I want to thank everyone who was present and also the many developers who could not come, but who intensified their work during the sprint. This was very motivating. Many thanks also to the new contributors who send their patches! One of them, Clemens Zeidler, actually came by on two evenings and worked with us. He has contributed a large patch, which I need to commit ASAP, that enables broad support for Synaptic touch pads, including a preflet and two finger scrolling! Yay!
- Oliver Tappe and Ingo Weinhold fixed an important problem with binary compatibility to BeOS applications that caused a number of bugs ranging from certain applications crashing at startup to subtle bugs like menus missing in other applications and so on.
- Marcus Overhagen and Michael Lotz fixed a problem in the PCI_IDE module that screwed up hard disk access and prevented many systems from booting when the partition was after a certain location on a hard drive. It also prevented the system from seeing partitions in the partition map that were located behind a certain offset (128 GB, IIRC).
Oliver Tappe and Stephan Aßmus
- fixed some problems in the BWindow and app_server code regarding the notifications for mouse transit. This was also important for fixing certain drag&drop operations in the Deskbar to launch files with specific applications,
- fixed BTextView class with regards to keeping the fTextRect member up to date in certain situations, which makes it more efficient and fixes some recently made visible bugs, among others, the "scroll bar becomes disabled when the window is resized" bug
- and fixed another BTextView problem in LineHeight(), which caused the text entries in the Pe Find panel to be way too small on first launch.
- Michael Lotz and Ingo Weinhold
- introduced a tail command for the kernel debugger and
- fixed a triple fault in the kernel debugger.
- Axel Dörfler and Michael Lotz both improved the type-ahead feature in Tracker to quickly select folder entries.
- Ingo Weinhold and François Revol fixed a problem in the kernel that prevented SoundPlay from ever playing the second song in the playlist.
- Axel Dörfler and Stephan Aßmus worked on the StressTest app_server test application and located two more app_server deadlocks and crashing bugs.
Individual StruggleStephan Aßmus
- did a lot of work on MediaPlayer with regards to cleaning up the file panel code and enabled playlist loading and saving. Some playback bugs were also fixed.
- fixed BNodeInfo::GetTrackerIcon() to always retrieve the correct icon,
- improved the rendering of the miniature windows in the Workspaces applet,
- fixed some UI glitches in Deskbar when changing the menu background color,
- fixed a few bugs in LaunchBox and made the icon size a preference setting,
- fixed a crashing bug and several usability problems in the FileTypes preflet,
- improved and fixed the InstalledPackages application,
- located a performance problem in the POSIX strstr() function and replaced it by a public domain implementation which speeds up opening mails in Beam by several orders,
- created a few new icons.
- fixed several annoying Tracker bugs. Fast repeatedly right-clicking the Trash icon could crash Tracker because it didn't check if the cached Trash menu was already displayed,
- fixed several bugs with regards to saving the window/view state of a folder. Some of the problems were especially annoying when using the single window navigation mode,
- worked on BColorControl to fix some layout issues.
- fixed a binary compatibility problem in the stat() function,
- improved some window management behaviour in the app_server, mostly affecting workspaces,
- fixed some bugs in the I/O scheduler,
- implemented demangling of call dumps in the kernel. The end result is that you actually see the function parameter values in the kernel debugger stack traces.
- fixed makebootable to also work on mounted BFS partitions. This will enable a much smoother experience when installing Haiku. :-)
- improved the disk device manager API and now Tracker is able to tell whether a file system supports writing before mounting a partition. If it's read-only, there is no need to display the read-only nagging alert. He also worked on mounting file devices by path.
- worked on better build system support for Virtual Box, which needs the VMDK disk images to have certain properties,
- improved an algorithm in the block cache that significantly sped up certain file system operations on fragmented volumes.
- fixed bugs in some of his audio drivers,
- updated several packages he maintains, like MESA and the timezone data to their current versions.
- contributed a lot to the Welcome documentation/introduction and refactored the beginnings of a user guide from the welcome package,
- wrote an extensive report on BeGeistert.
- fixed a bug in BDirectory::Contains() that was the cause for certain Tracker crashes,
- fixed some bugs in the disk management regarding USB card readers that have no media,
- The ACPI bus_manager received a lot of love from him and a slew of bugs got fixed in the OS layer that connects the common ACPI code from Intel with the Haiku kernel.
- implemented the new BMessage::HasSameData() method,
- fixed serious problem in the kernel with regards to detecting the failure of certain types of allocations,
- fixed two serious bugs in the recently introduced entry cache that could lead to programs overwriting the wrong files or directories.
- continued his work on the M68K port. He got it as far as the kernel running until it needs timers to work.
- plunged into Icon-O-Matic and added several neat cross application work flow features, like clipboard support for importing styled text.
- made NetSurf into a Replicant that can be embedded into the Desktop and other applications. He fixed BeHappy (an application to show documentation like the BeBook) to be able to use NetSurf instead of the previously hard-coded NetPositive. He added a new Optional Package for BeHappy.
- added FAT32 support to the boot loader. This will eventually enable booting from a disk image that is located on a FAT32 volume.
- fixed a few bugs in the UDP network layer.
- located a compatibility issue in the POSIX layer that prevented for example Beam to generate unique file names for saved e-mail files.
- fixed a problem in the runtime_loader, certain exit hooks where not called on program termination,
- did a slew of optimizations, memset() and memcpy() for the kernel now have versions written in assembler for the x86 platform. He also implemented a method to pin threads to CPUs to optimize some CPU synchronization issues.
- fixed a serious race condition in the Unix FIFO implementation,
- the page writer I/O priority is now dynamically adjusted,
- fixed several kernel bugs and implemented more optimization, which overall sped up the Haiku image build in Haiku by a factor of two!
Quite a few developers were not present at the coding sprint, but contributed a lot of work during the week:
- Stefano Ceccherini worked on the ACPI name space dump and added various other small fixes.
- Rudolf Cornelissen fixed a problem in the IDE bus_manager which extends the support for certain mass storage controllers. Haiku was not bootable on systems with these controllers before (...including my desktop machine, thanks!!).
- Stephen Deken sent a patch implementing a new BAffineTransform class and used it to enhance the BPolygon class.
- Oliver Ruiz Dorantes checked in his latest Bluetooth L2CAP code.
- René Gollent was always fast to fix build problems and other problems introduced by some of the commits. He also fixed the long standing issue that app_server mostly never remembered the number of workspaces the user configured.
- Karsten Heimrich fixed a lot of bugs, among them some quite annoying ones that affected many applications. The mysterious crashes in many applications when they were quit turned out to be a problem with offscreen BWindows/BBitmaps!
- David McPaul contributed a lot of fixes to media codecs that affect WAV and MP3 files. This improves seeking in certain media files.
- Artur Wyszynski sent a large patch implementing a new BGradient Interface Kit class based on the Gradient class in Icon-O-Matic. There are several subtypes of gradients available and he implemented all the new BView drawing functions and the app_server backend! He even wrote a small demo application show-casing his work.
- zuMi sent in batches of new icons, mainly for the background servers, among them a beautiful pidgeon icon for the mail_daemon. He also created a neat icon for NetSurf and several other applications and servers which are not even part of Haiku yet.
Does all this mean we are ready to release the alpha? Unfortunately, we have at least one remaining file system bug that corrupts data. We need this one fixed and hopefully we can find a reliable test case to reproduce it. Over the next weeks, I plan to pick up my work on the partitioning backend. It will be important to create and delete partitions from within DriveSetup. Then there is one remaining bug in the USB bus_manager which sometimes suddenly disables USB ports, so that input devices stop working. Once at least those two bugs are fixed, Haiku should be usable. I am very excited!