BeGeistert 018 - A Personal Report

Blog post by stippi on Mon, 2008-01-14 16:28

To be honest, I was a bit desperate in the run up to BeGeistert 018. The fact that most of our core contributors were present gave me high hopes for a good push of Haiku development. Since my laptop was stolen, which was a really solid Haiku machine, I could not run Haiku natively on my main development computer. Even on some older computers I had, I could not run it anymore since the initial changes to the IDE stack. Next was the fact that I bought a new USB based KVM switch. The only USB stack with which I had a working keyboard and mouse was the original Dano stack. And even then I sometimes lost input when switching back to BeOS from another computer. With Haiku, the input devices were not working at all. So I was packing both my computer, monitor and the KVM switch for BeGeistert, all in all, it was quite a load. I was heading towards BeGeistert with a bit of mixed feelings, because Haiku wasn't working so well for me anymore and I didn't know if it was going to be fun only or with some disappointments mixed in.

When I got to the youth hostel, Ithamar, Axel and Michael Lotz were already there and Marcus arrived shortly later. Then we were in for a little surprise. The place was still pretty much a construction site. The rooms were all ready and quite nice for a youth hostel, but the conference room was nowhere near ready. I am a bit confused how the hostel could make us believe in their communication that the room for BeGeistert would be ready. But the hostel improvised. We were given the corridor in the basement, the room with the telephone equipment and the staff room. Out of these options, the staff room was the best yet, although it seemed quite small to host the actual event at the end of the week. For us developers, it was alright though. We had power and Internet, two tables and more chairs than we could possibly need, so we were good to start. It was also a funny twist that we ended up being locked in the basement literally, an image which is otherwise only used in Axel jokes. In the evening, Paolo Martino arrived from Italy and François from France. So it was us initial seven. On Tuesday, Axel was taking on different bugs, Marcus was beginning the work on the restructured and simplified IDE stack, Ithamar was trying to get his HDA driver to work on his laptop (and Michael's), François was working all over the place, though mostly on his M68K port and Michael and I were looking at all the problems that prevented my USB KVM switch from working. (Marcus owns the same model by the way, and there is even a bug report for it.) Wednesday continued pretty much like that. Pretty soon we gave up on breakfast and put our alarms to around 11 AM to at least not miss lunch. It was a good feeling to see the work of all the testers too. They helped us clean up outdated bugs or sometimes opened new ones with a fix already attached as a patch! And Stefano was committing code like he was with us in the staff room!

On Thursday, we had to move our gear out of the staff room and sit in the corridor instead. The hostel needed the room for another group. That day, Andrea Anzani arrived from Italy. Andrea has been picking up work on Ryan's WebKit port and that was what he was working on most of the time. I tried to help a little, but was so far not very useful to him. Michael and I continued to hack on the USB stack and HID driver. The HID driver is now working more correctly with regards to hot-plugging devices and it is much more efficiently implementing key repeats. Unfortunately, when using it on R5 or ZETA, the original input_server mouse device add-on, which interfaces with the hid driver, crashes when unplugging a USB mouse. It works fine when using the Haiku input_server add-on though. The USB stack had to receive a lot of fixes too, among them was EHCI interrupt transfers, which Michael actually implemented earlier, but which he forgot to enable in the stack. Another feature Michael added was USB 1.1 interrupt transfers over a USB 2.0 hub. Basically it means you can now use your USB 1.1 keyboards and mice on a USB 2.0 hub. This is good news for everybody waiting for OHCI support, since you can simply insert a USB 2.0 hub into the chain of devices on your computer, and that way your USB 1.1 devices work over EHCI instead of the missing OHCI.

Ithamar was not so lucky with his HDA driver, he just couldn't get any sound out of his laptop, even though he fixed quite a few bugs in his HDA driver along the way. Eventually, he turned his attention to the CUPS port, where he recently picked up a bounty on HaikuWare. He was much more successful than with the HDA driver. Ithamar already worked on the CUPS port for ZETA, so he had a good idea of what to do and what to do better this time. Some of the work involved fixing bugs in Haiku itself, so it was beneficial from that point of view as well.

François seemed to be enjoying himself with the M68K port and adding new apps to Haiku from his vast repository. We saw the addition of a ThemesManager as well as a Login application for future multi-user support. At the same time, François was streaming a video feed of the coding session to the BeGeistert site. Of course via his own WebCam driver from within his ZETA development installation. For that, he also extended Haiku's CodyCam to support sFTP uploads.

Axel continued to track down different bugs, at one point I could help him by enabling some existing support for the "XOR" operation in our BRegion implementation which he needed to fix a bug in the Haiku app_server. But most of the time he has been tracking down a bug in our BFS implementation and since he does not have a serial port on his new laptop, he added new debugging and tracing facilities to our kernel.

Thursday night, after we moved back into the staff room, we also saw the merge of Ingo's development branch with highly anticipated optimizations for our syscall mechanism. Now Haiku's implementation is faster than ZETA's, almost in the same league as Windows but not as fast as Linux by a factor of almost 3. He also committed a compiling benchmark which shows that Haiku is about 80% slower compiling software than ZETA. Unfortunately, the test even fails sometimes, but Ingo has an idea already where to look for that bug.

By that time, my keyboard and mouse were working well with Haiku's USB stack and HID driver and Marcus was making strides with the new IDE bus manager. When he finally told me to test it I was quite anxious. One item was already crossed off my wish list, my KVM switch was finally working, would I be able to boot Haiku natively on my main development machine? YES! It worked right the first time we tried! Previous to that, when I got lucky, I could see it working that far with the AHCI driver, but I was never able to use Haiku much, since all write operations to the hard drive timed out with various errors. But with Marcus new driver, all that worked flawlessly! It is PIO mode only for now, but it is quite fast nevertheless. I barely notice it when I start apps. That was it! My mood was suddenly very light! The coding sprint was a full success for me, all my hopes had come true thanks to Michael and Marcus.

On Friday, another interesting thing took place. Shortly before the event, I was contacted by a man named Gerrit Stratmann from a national radio station here in Germany, Deutschlandradio Kultur. The station has a series called "Breitband" (broadband) which focuses on aspects of Internet culture in general. Gerrit proposed a five minute piece on Haiku and the station agreed. So he interviewed Axel and me on Friday morning. Unfortunately, or rather fortunately for us, it turned out his microphone batteries degraded the sound quality on Axel's interview, so he came again on Sunday. That gave him the chance to repeat the interview not only with Axel, but with Ingo and Michael as well! The questions he asked were all well prepared and Gerrit had a lot of understanding for the Haiku project. He even knew about what time we must have went to bed the day before, because he follows the commit mailing list. So that went very well and we are all looking forward to the edited version of the interviews. It is planned to be available as an MP3 stream on the station's website, I will keep you posted when I hear more from Gerrit.

Friday afternoon, more and more of the BeGeistert visitors appeared. Jérôme Duval and his girlfriend were among the first. Jérôme immediately started Haiku coding, unfortunately myself and Michael were not of great help when he tried to fix an obscure problem in our system audio mixer which shows on R5. Another visitor, Bas de Lange deserves special mention, since he actually rode his bike to Düsseldorf from the Netherlands. Bas is active in the Syllable project and came because we invited people from that team to BeGeistert. I was guessing correctly, Bas fit right in. The ideals and hopes of the Syllable and the Haiku project match really nicely and so it was only natural that we had a lot of fun and interesting talks together. If one just looks at what both of these projects are trying to achieve, they should really be one and the same project, but of course this would be very hard to change now for various reasons, mostly because of all the effort already put into either code base. But we didn't even talk about that subject, the point is that we were naturally getting along well and we had great fun together. I am hoping we can return the favor next time Bas is organizing a Syllable conference.

Charlie, André and Ralf from the BeGeistert team started to organize things in a more professional manner, as much as the improvised location allowed them to and we had more and more people arriving and trying to find a spot. By Friday night, the place felt packed! But if anything, this was contributing to a very positive feeling! In total, 33 people registered for BeGeistert 018. Unfortunately Oliver Tappe of GCC, Pe and Beam fame could not come in the end and he was missed.

Saturday had some presentations scheduled. We could hold them in the lunchroom in between meals. So we had to keep them short. After Charlie was holding his usual entertaining BeGeistert welcome speech, I was the first to give a presentation. As quite a few of you probably know by now, Axel, Ingo and I are working for a company called MindWork run by Steffen Friedle, a BeOS veteran. We are making a commercial product based on BeOS/Haiku software and are thereby cross financing Haiku development. Already quite a few Haiku drivers have been written by Axel because of MindWork. Since Steffen is a great fan of Java, the recent addition of the OpenJDK team to Haiku makes us very excited and the current plan is to have Ingo join the efforts of that team. Ingo has been eager to work on a port of Java for a long time. I am guessing (hoping?) he will continue his greatly appreciated work on the Haiku kernel nevertheless. But back to my presentation... our software is essentially a content management system and media editing and playback station. Think of the "info screens" you can see in various public places. The software consists of quite a few components. We have a Java based server which acts as the repository for media objects and playback configurations. The rest of our software is BeOS/Haiku based and ranges from command line tools to a media editing and composing application and accompanying playback application. The compositing application is probably the most interesting one for future Haiku users, since it could be turned into a general purpose audio/video editor. It is acting like one very much already, but has currently the interface to the content management system built in. It also doesn't sport any features we currently don't need, like fancy video transitions or filter effects.

After my presentation we saw Team Maui's interesting presentation on a CD burning project, held by Jan, known as the author of the powerful YAB (Yet Another Basic). He outlined the plan for the new CD burning implementation with the name Lava. The backend will be provided by cdrecord or cdrtools, as usual, but Team Maui's implementation will come as a C++ class abstracting the cdrecord interaction so that it is easily integrated into any BeOS/Haiku application. Their proof of concept will be a Tracker add-on that uses attributes and queries to save previous collections of files you burned to CD. This is already in the works and has a beautifully elegant interface. On top of that, Jan disclosed the fact that the author of JABA, which is the solid CD burning app that comes with ZETA, has donated the code to Team Maui, and they will be releasing that at a later point.

Right next came Bas to demonstrate Syllable. He started his presentation by asking how many in the room already knew about Syllable or even installed or used it. It turned out many read about it, but not so many had tried it. So it was interesting to see Syllable in action and Bas showed the various programs and tools that come with the installation. Among them are an e-mail application, a CD burner and an IRC client. Though the MediaPlayer seemed to have locked up at a later point, Syllable itself ran stable and smoothly. It seemed to me like the project is in a similar state of near solidness as is Haiku. Maybe a bit further along, but I would have to try it again myself to know for sure.

The rest of Saturday was the usual enjoyable time that is BeGeistert with lots of happy talking going on between the visitors. Most of the developers tried to continue with as much coding as possible, though everyone could use the chance to talk to them about their projects and ask questions they may have about Haiku itself or development for the platform. At one time I tried to proudly install a "Haiku USB package" I prepared on a laptop of one of the visitors from France, but that didn't turn out as expected... probably because I messed something up with the scripts. Luckily I could get his machine back in a usable state with some help from Ithamar and Rémi of whom it was very sensible to bring along some bootable BeOS CDs. Ingo, now without laptop as well, was joining the efforts of Axel and Michael, doing pair programming with either one. That always proves to be very productive, since Ingo keeps things going at high pace. "Alright let's try this, let's try that, go go!" I tried to follow Michael and Ingo when they tracked down a userland cross application deadlock (concerning MIME database notifications and the application registrar) using the kernel debugger, unfortunately I was distracted at one point, but I know I should really get the hang of the kernel debugger, it's such a powerful tool!

On Sunday morning, François dragged us out of bed for the Haiku presentation. We scheduled this to be the last presentation of BeGeistert, to give us a chance to really polish Haiku up. But the embarrassing fact was that no one from us developers had a working Haiku install at this point, since the IDE stack on my machine as well as the runtime loader on Michael's notebook were a work in progress from the night before. François was doing a good job at buying us some time demonstrating the additions he did to Haiku over the week, but in our sleep deprived state of mind, we couldn't do much good, so I grabbed the last straw of hope and asked Rémi for his laptop. I knew he had a fairly well working and recent Haiku install. To my deep inner satisfaction, I noticed that he had Haiku already running with StyledEdit fired up, ready to take notes on our presentation. Thanks for the trust, Rémi! Since mostly everyone in the room had seen Haiku running on their own machines or at least on someone else's machine during the event, it wasn't so hot to demonstrate Haiku anyways, and so we reverted to enumerating our achievements of the last week. Of course, I made sure to give Michael's work on the USB Stack and Marcus' work on the IDE bus manager special mention.

As the number of visitors began to slowly decrease, Niels Reedijk, best known for his quality work on the Haiku API documentation and part of the Haiku Inc. transition team, made sure that everyone contributed to a special surprise gift for Michael Phipps, the project founder and former leader. I am sure you will hear more about it from Niels when he is ready.

Shortly before lunch, Gerrit Stratmann arrived back to redo the forementioned interviews. I sneaked in so I could listen to the interesting answers that Axel, Ingo and Michael were giving. I was impressed by how professionally they handled it. They talked clearly and elegantly. One funny moment was when Axel was asked the expected question of when Haiku will be ready. He mused it was more a matter of weeks than years now, which made Ingo's and Michael's eyes pop. When confronted later, Axel defended himself and claimed "12 weeks" are still "weeks", which caused Ingo and Michael to point out that there is something in between years and weeks called "months". I pointed out that with the same argument, he might as well have used the word "seconds". But the essence is that this reflected our very good mood with regards to the state of Haiku. The release of the First Alpha is probably farther away then a few weeks, but it has come in reach indeed. The coding sprint and BeGeistert itself have given everyone a very positive feeling. I feel like there is renewed effort from everyone. As I type this up back home, my inbox is still flooded with more commit messages. BeGeistert 018 has been a great success. I am saying this not just because my personal hopes came true, but it just seems to have had a very positive, vitalizing impact on everyone who has been there, or even on people who haven't been there!

Thanks everyone for making this such a great time! May the happiness persist!