
Friday, August 24th marked the end of
Google Summer of Code 2012.
This was the sixth year that the Haiku project participated
and was one of 180 fellow mentoring organizations.
This year, five of 1,212 students were mentored by Haiku.
To give a frame of reference to the competitiveness in Google Summer of Code,
over 400 mentoring organizations and over 4,000 students applied to participate.
For both mentoring organizations (and students), it is an honor and pleasure
to be selected in Google Summer of Code.
For those not in the know, Google Summer of Code is "a global program
that offers student developers stipends to write code for various
open source software projects". In other words, simply by being one
of the mentoring organizations, many youthful computer-savvy students
may learn about HAIKU for the first time. For a carefully selected few,
they have the opportunity to receive priority from our mentors in
teaching them how to develop software for Haiku. This is a unique opportunity,
as there is no other outreach effort of this magnitude available to the Haiku project.
Since the three-quarter term report, I have continued porting userland servers and apps. The app server is fully functional, as are Deskbar and Tracker and a few other apps. I also cross-compiled all of the basic development optional packages (GCC/Binutils, autotools, make, etc.) for x86_64. Another screenshot showing the current state of things is below:
the last quarter term is mostly spent on acpi cpuidle driver implementation. I also spent about 2 days to adjust the cpuidle framework so that the cpuidle generic module is loaded by lowlevel cpuidle driver, while the later will be loaded during boot up either by bus enumeration or calling get_module() manually. I also tested the power after acpi cpuidle driver is finished. The result is as good as intel native one. Since all the goals defined in my proposal are achieved, so the project is successfully finished.
Since my three-quarter term report I’ve been working on adding audio input support to the jsound port and fixing various bugs in the JDK. Since the AWT/Java2d and jsound ports are now completed, my goals for the summer have been accomplished! The OpenJDK port is now in a fairly usable state, and community members have been using it to run some large scale Swing apps such as NetBeans and ThinkFree office.
The next thing I would like to do is merge my work in to the Haiku port repository at the OpenJDK project. From there I’d like to look into the possibility of acquiring access to the Java TCK, which will allow for comprehensive testing of the port. This will no doubt uncover many bugs and keep me busy for a while. Here are some other possible areas of expansion for the future:
Since three quarter term I've added NFS-level support for named attributes what means that virtually all important NFS version 4 feature are now implemented, as I described them in my blog posts during the coding period. What still needs to be done is to improve support of Haiku's extended attributes and a lot of bugfixing. There is also a room for performance improvement and several possibilities to organize code in a better way.
With the announcement of Ingo and Oliver’s contracts for package management, it is worthwhile to revisit how package management will function. When reading, keep in mind that this explanation will be condensed, simplified, and partially incomplete. Nonetheless, it will provide a general overview on how things will work.
I’ve recently been working on caching in NFSv4 client. It was essential in order to allow the client to be comfortably used. I can gladly say that the traffic generated by NFS client has been greatly reduced, thanks to metadata, directory, lookup and file caching. I’ve also implemented support for open delegations which, though not always available, allow the client to perform virtually all file operations without immediate server participation.
For this period, I have been working on getting resizing to work from within
Haiku, rather than just in bfs_shell. In its current state, the code works,
sometimes, if you don't stress it too much and write data to the partition while
resizing. On the bright side, recovery from various errors is working well :).
In terms of functionality, the only thing missing is the ability to grow full or
almost full file system. The problem with this is that we need to grow the
bitmap that tracks allocated blocks before we can actually make use of the new
blocks. This can be overcome with a little slyness, but it's a bit of work, and
adds some complexity.
Since midterm I have been working on the jsound port, which provides audio, MIDI input/output and the ability to control mixer volume and other parameters.
After getting my head around some of the media kit concepts the implementation has gone smoothly. I implemented audio output support first, as I guessed this would be the most used component. It works well. Then I implemented MIDI input and output support. This is untested so far because I don’t have any MIDI hardware. In the end I will probably end up constructing some dummy MIDI endpoints in another app for rudimentary testing. Audio input support is awaiting the availability of the SoundConsumer class, which might be included as a private API in libmedia, as the file cannot be included in OpenJDK because of licensing restrictions. Once this is in place I’ll get working on the audio input support.