Last Saturday (February 21st) I visited the Free and Open Source DEvelopers
Meeting in Brussels, Belgium.
Registration
FOSDeM has no formal registration and
name tags, which appeared to be a good thing, as there were many more
visitors this year (around 1400 on the first day alone) than last year
(around 300). With 1400 people, registration processing might take forever.
Open Protocols and Data Formats
Due to getting lost earlier, I dropped in late on Tim O Reilly’s
talk. "The Internet is open source’s biggest success
[…] open protocols and data formats are even more important than open
source".
I felt right at home, as my colleagues at CQ2 are completing the
implementation of the OA-x (Open Archive extended) protocol and data
format.
Contemplating on this, I see that open protocols and data formats are more
accessible than open source - since you can choose whichever programming
language and operating system you want to make use of the protocol and the
data (TCP-IP and e-mail being succesful examples of this). Even if one part
of the protocol is complex (i.e. The ‘google server’) you can
write a simple client (google access with soap) re-using the implementation
and installation complexity someone else has resolved for you.
For I-tor this might mean the amount of people working on the i-tor server
might remain small - since it contains a lot of advanced features not
always needed, while other people might more easily make clients for
editing specific kinds of OA-x documents, or make simple servers publishing
and storing documents in OA-x format. The i-tor server acts as an
intermediary for combining collections of oa-x documents, publishing them
through a web-interface and allowing them to be queried interactively by
end-users.
Ruby
I went to Richard Kilmer’s talk on Ruby , to see how someone who uses it
everyday presents it, and to pick up some stuff I might have missed. New
stuff I picked up from this talk:
- YAML (included in ruby 1.8) - a non-XML human readable/editable
serialization format for ruby and perl. The library uses ruby’s class
extension facilities effectively - after loading YAML all your objects have
a ‘to_yaml’ method. YAML is made for readability and ease of
use. Existing serialisation methods are more efficient.
- ROMP - "(the Ruby Object
Message Proxy) is a set of classes for providing distributed object support
to a Ruby program."
ROMP does the same as DRB (Distributed Ruby), but is much more efficient
according to Rich Kilmer. (I couldn’t get more than 50 messages a
second out of DRB, but apparently, there now is a faster version. ROMP
handles up to 40000 messages per second). It is also very easy to use -
with a few lines of ruby, you can make an object available on a tcp port.
Using ROMP seams a decent way of splitting presentation from storage of
objects. The server stores objects and deals with concurrency, and several
presentation server applications and threads can access the objects.
Ruby-GNOME
This talk was on the integration of Ruby with GTK libraries. The design of
GNOME is interesting, since it is highly plugin-oriented, with a
pipes-and-filters like architecture for multimedia applications. The
ruby-bindings convinced me less, since creating a GUI is doable, but
requires double steps - the GUI ends up in a separate configuration file
from the code, and the names of events have to be specified twice. For
small applications, such as the media player that was demonstrated, this is
doable. For larger applications I foresee it will be difficult to keep an
overview on everything defined.
ReiserFS - the fast pluggable filesystem
Hans Reisers’ talk on ReiserFS once again proves
that good design and high performance software are not opposites, but go
hand in hand. ReiserFS version 4, to be released this week, features
plugins for various aspects of the filesystem, from allocating blocks, to
storing individual files. The reason for the plugin architecture was, as
mr. Reiser said, that optimizing a filesystem is an empirical science. You
need to try something at least three times, fail two times and then find a
better solution. The plugins allow many people to try out their hypotheses.
The ReiserFS distribution can then include the most succesful plugins.
One of the plugins planned for the near future is compressed files (like
e.g. Atacker in the old days, only more reliable), since disk speed has not
kept up with cpu speed increases, this will allow for faster disk (read)
access. To me it seems a good solution for storing XML files… Another
thing which is easy to do with plugins is encryption.
The vision behind ReiserFS is also interesting - the file system should
take care as much as possible for things like atomicity, so applications
built on top of it can be as simple as possible. ReiserFS is intended to
replace databases as a means of storing many small objects - it does not
allocate a lot of space for individual files anymore, so it is possible to
efficiently store each object in its own file, even if it is just a few
fields of data. ReiserFS takes care of efficiently storing all the objects.
The explanation of ‘dancing trees’ (a variation on B-Trees) was
interesting. A file system is basically a huge map, with file-id’s as
keys, and file data as values.
Concerns influencing the design of ReiserFS, such as plugins and
granularity of security are familiar to me, since we face them in designing
I-Tor as well, so maybe a close mapping on ReiserFS could enhance
performance (small objects optimized by the filesystem) and facilitate
development (atomicity, security).
Frequent releases
Agile Software development things like frequent releases come through. I
was talking to the GNOME packager for MandrakeSoft at dinner, and he said
they recently switched to weakly developer releases, regardless of content
(just release frequently), and every 6 months there is an end-user release,
where stable features are chosen and released. API’s can change every
6 months, old methods are deprecated and kept for one more release,
ensuring a stable application development environment, as well as evolution
of the API’s.
Summary
FOSDEM is an interesting conference for free and open source software
developers. You can quickly get an idea what is going on in major open
source projects. Also, many groups take the opportunity to actually develop
software together in the developers’ rooms for specific projects.
|