Linux.Conf.Au 2004
At lunchtime I wandered down to the lawns to watch Linus being dunked, which was all good fun. Linus was a good sport about the whole thing. After Linus, the other significant members of the community took their turns, including Rasmus, Tridge and Rusty. Lunch was provided, but their was a fair line up for the barbie.
The best of talks were a bit of a loss because I’d already seen the SCO vs IBM and Tridge’s junk code talk. In the end I went and saw tridge again.
Finally came time for the conference close, where all the sponsors were thanked, and winners were announced. Geoffrey Bennett won the hack fest, and a nice prize it was to, a $40k server from IBM. Way to go Geoff!
All in all I had an absolute ball at Linux.Conf.Au 2004. Thanks to all of the organisers and volunteers for putting on such an incredibly good event! Now to see if I can go again next year.
After the keynote I saw Marc Merlin’s “apt-get and getupdates” talk. Debian’s apt tool allows you to keep packages up to date on a system, but doesn’t really handle configuration files. That’s where getupdates comes in, get updates allows you to push (or pull) updates to machines. These updates consist of shell scripts to perform various actions such as installing a package or altering a configuration file. This allows getupdates to be used for altering the configuration of a machine without pushing out all new configuration files.
Getupdates also allows you to run a lead/gold configuration, allowing you to test updates on a selected group of machines (lead), then turn it into gold and release it to all machines.
Slides for this talk are available here.
After a slightly late start Saturday morning, Havoc Pennington gave the final keynote on Desktop Linux. In contrast to the other keynotes this week, the Havoc was neat and well presented, short hair, clean shaven, etc. He looked nothing like the other “geeks” presenting, and he was the guy interested in the normal user. Probably doesn’t mean anything but it was an interesting observation nonetheless.
Havoc sees the following as the main threats from Microsoft. XAML is coming with Longhorn, and allows user interfaces to be designed with XML and to work seamlessly as Windows Forms, or across the Internet. If XAML takes off it threatens to create a Microsoft centric web. Success of .net over Java also poses a threat to Linux desktops if there is no way to run .net applications on Linux. Finally there are the normal Microsoft lock in strategies including Microsoft Office file formats, Windows Media, DRM, Exchange and Active Directory.
Havoc then went on to outline some areas where Linux still needs work. Linux also needs to work on robustness and performance. We need better graphical management tools, so that when something goes wrong it can be fixed without resorting to the command line. Of course the command line should still be usable to fix problems, but there should be a graphical tool available for normal end users to use as well. Linux also needs to handle the reporting of daemon and kernel errors better. Where they can’t be transparently fixed, there needs to be a mechanism for getting the error into the UI and displayed to the user rather than buried into the syslog.
Interoperation is crucial for success of Linux on the desktop. A Linux desktop needs to be able to work with MS file formats, and virtually all web pages. Linux should also work as a server to Microsoft clients, or as a client to Microsoft servers.
Hardware support needs OEM involvement, otherwise the lag between release of the hardware and the availability of Linux drivers becomes unacceptable.
Multimedia support is still a problem. This is principally a patent problem as many media technologies are patent protected which makes open source development of codecs and players difficult. There are also legal challenges in the areas of DVDs, and DRM. The long term solution for this is to promote open file formats such as Ogg.
Linux already has good usability, and studies have shown that for most common operations windows users can pick up Linux almost as fast as they can pick up XP. However, we need to continually pursue great usability so that we’re not continually playing catch up to Microsoft. The community also needs to try and establish a meritocracy for usability in the same way they have for code. Usability is something that can be studied and learnt, and the community needs to recognise that not all opinions are equal in this regard.
There are a lot more Java and VB programmers in the world than C/C++. Offering only C/C++ to appliucation developers severely limits the pool of developers. Support for languages like C#, VB or Java is important for application developers who just want to get the job done in the least amount of time.
Linux developers also really need to consider the desktop as the whole network. Directory Services, Mail, Shared Calendars, File and Print Services, Authentication and Single Sign On services are all important for desktop systems but are not normally part of an open source desktop project.
Open Source Desktops also have a number of opportunities to be the best. Open source itself is an advantage because it’s the one strategy Microsoft can’t buy and shut down. Open source also prevents vendor lock in, because many companies, both large and small, can build a business around Linux.
Internationalisation could be a major area for Linux to shine. Some regions and languages are simply too small for commervial vendors to notice, or just aren’t profitable enough to warrant localisation. Linux allows people in these areas to take the code and localise it for their needs, they don’t need a vendor to do it for them. The lack of vendor lock in also means that local support is always available, and pricing of the product can be adapted to suit local conditions as well.
Linux Accessibility is already better than Windows in some areas, and still getting better.
Linux also provides a single platform for developers from server to client through to handhelds. This means developers only need to learn one API to get productive.
Linux can also win on price. Open Source is cheaper, but it also empowers the customer to chose when and how to spend their money. No forced upgrades.
Open data formats such as Ogg, OpenOffice.org documents, SVG, etc are a long term win because they ensure that even long after the original application is gone the data is still accessible. If you want long term access to your data, avoid locking your data into closed formats. Open source projects have a genuine commitment to open standards, its not just another bullet point on a feature list.
Security is another strength of Open Source. Linux was also designed as a secure multi user system from the ground up which is an inherent advantage. The many eyes principle also means that most bugs should be found and fixed before they become a major problem.
Managability is also an advantage with Linux. The many different configurations available on Linux (terminal services, workstations, etc) mean that Linux can be tailored for many different environments. There are also lock down tools available for Linux to further tailor the installation.
Overall Linux has a lot of strengths for desktop use, and there are a few areas for improvement. However, “When will Linux be ready for the desktop?” is the wrong question to ask. Linux is ready for some desktops now, a better question is “What do we need to do to get the next increment of market share?”
After all of the days sessions it was off to the Linux.Conf.Au Penguin Dinner at the Festival Theatre. Dinner was excellent and the charity auctions were a good laugh. All in all, I think we raised over $5000 for Computerbank SA auctioning off a conference Tshirt signed by all of the kernel contributors at the conference. Another $5200 was raised auctioning off the right to throw the balls at Linus in the dunk tank tomorrow. I bailed fairly early so that I’d still be awake for the Saturday proceedings, but a good night was had by all.
The second Linux.Conf.Au fixit that I want to was the Spam fixit. This was hosted by Tridge and Rusty, although somehow Rusty managed not to be there. There was a lot of lively discussion, as everyone has an opinion on Spam these days.
Initially DCC and Razor type systems were showing a good amount of promise, but these use strong checksums, which are easily defeated by inserting random words into the message. Loose checksums are less easily defeated in this way, but instead can produce higher false positive rates.
Penny black techniques were discussed, which are essentially a requirement that the sender perform a computationally intensive operation before sending the message. The sender can then quickly verify the result, and accept the message. The problem with this technique is that it disadvantages normal mail users more than it does spammers. It’ll slow down the rate of spam, but spammers can simple add more trojaned Windows boxes to their network and we’re back to the same old problem.
Someone mentioned the sendmail tool “milter sender” which looks very interesting. Milter sender verifies the from address of a message on receipt, and can cause the message to be rejected if the from address is invalid.
One attendee also mentioned that he’d tweaked Spamassasin to assign a slight negative score to messages originating in Australia and a slight positive score to messages originating in “spammy” countries like Korea, Brazil and Nigeria.
Linux.Conf.Au this year introduced the FIXITs which were BOF (Birds Of a Feather) sessions with a purpose, e.g. to produce a list of critical bugs in a piece of software. The first one I went to was the DotGNU FIXIT. Mainly because I wanted to get a feel for where the project was at, and what was happening with it.
Essentially the runtime engine and C# compile for DotGNU are basically done. The core class libraries are also basically done, but System.XML is a bit of a mess. DotGNU is portable to a number of different architectures. They’ve also started working on the Windows.Forms library which isn’t really as Win32 dependent as everyone thinks. They’ve worked around this by making primitive drawing and window operations part of the toolkit then building the rest on top. This means the basic WinForms stuff is very portable and in good shape.
Most of the difficulties people raised with DotGNU were difficulties installing the software, and that its hard to get a feel for exactly what will and won’t work by looking at the web site. The web site needs a reasonable amount of work.
The last talk I went to on day 3 of Linux.Conf.Au was Andred Tridgel’s “A tour of my junkcode directory”. Essentiually Tridge is advocating that we keep all of the little bits of code that we write when testing a bug, learning a library call, etc for later reuse. Our little bits of junk code can server as useful examples to jog your memory later, as he says “the best example code is your own”.
A few useful bits of junk code that he’s made public are… tserver, a tiny embedded web server, with basic bash CGI support. 3dttt, an OpenGL 3D Tic-Tac-Toe program.
Tridge publishes some of his junk code here, and the slides of this talk are available here.
After Lunch Damian Conway addressed Linux.Conf.Au presenting “Perl 6 in a nutshell”. Essentially, although Perl 5 is great, the source code is becoming very difficult to work with, and the language syntax is coming convoluted at times. So Perl 6 was created to learn from past mistakes, and apply hindsight to the design of Perl. In many areas the language and syntax needed a rethink.
Perl 6 runs on a new platform called Parrot, which is a new virtual machine for Perl, guaranteed to be faster than the Perl 5 interpreter. Although its currently 10 times faster than Perl 5, they expect it to slow down as they add more language featured before release, but overall the target is for at least 2 times faster. Parrot will also run Perl 5, Java and Python, and interconnect the languages. They also want Python to run faster on Parrot than it does natively. Also, because Perl 5 will run on Parrot, and can be called by Perl 6 code everything on CPAN will still work under Perl 6.
Some language differences in Perl 6. The dereferencing operator -> becomes a . to fit more closely with other languages.
There are also new syntax rules for sigils (the $ (scalar), % (hash), or @ (array) before variable names). Now, no matter what the context, you always use the same sigil with hashes and arrays. Previously accessing an element of a hash was done with $hash{index}, and the hash itself referred to as %hash, this becomes %hash{index} and %hash, in Perl 6, much simpler.
Perl 6 now supports Unicode. Both source code and data are assumed to be Unicode by default, but ASCII is still supported where required.
There is a new data type called a junction which is a single scalar that acts like several scalar values. This sounds weird but it allows you to write some really simple code such as…
if (any(@numbers) > 10) { … } #True if any of the numbers in the array are less than 10.
if (one(@roots) != 0) {…} #True if one of @roots is not zero.
Perl 5 also supports multiple comparisons, such as…
if (1 < $x < 10) {…} #True if $x is between 1 and 10.
There is now a ~~ or “generic smart match” operator. Given two values will try to find the most intelegent way to compare them, This means that you no longer have to remember to use == for numbers and eg for strings. This is also a lot like VB’s type coersion features.
There is now no need to break indentation on here documents. Heredocs can be indented in the code without indenting the document contents.
Subroutines can now have parameter lists (finally), and parameters can be strongly typed.
Perl 6 also has a switch statement. Syntax is as follows…
Given $val {
When something { }
When soimethingelse {}
Default {}
}
For loop syntax is now also modified to be just “for LIST BLOCK” so …
For @array -> $value { … }
.. is now valid syntax. Not to mention fairly easy to read.
Finally in Perl 6 classes are declared explicitly “class DogTag { … }” and may now have proper constructors and destructors.
All in all Perl 6 looks to be a significant improvement to Perl 5, but it does still retain its line noise look from Perl 5. The main problem is that some of the bits of noise now mean different things than they did in Perl 5, which is a little off putting. Its really inspired me to take a look at Python instead.
The last talk before lunch was LinuxSA and Linux.Conf.Au organiser Geoffrey Bennet’s talk on “Controlling your home lighting with C-Bus”. Geoffrey is a very bright guy who I’ve known since school, and the fact that he’s spent quite a bit of time reverse engineering his home lighting system doesn’t surprise me in the least.
Clipsal C-Bus is a home automation system allowing control of lights and power points via a programmable system. Rather than being connected directly to the lights, each switch is connected to a light via the Relay/Dimmer unit. This means that switches can be reprogrammed to turn on different lights, or do different things. Although the Windows software doesn’t allow it Geoffrey’s Linux software can also turn on and off the lights directly from a PC.
C-Bus also allows you to connect multiple switches (3 or more) to one light which is difficult to do with conventional wiring, and also to connect several lights to one switch. You can also set up a switch (e.g. by the front door of the bed) to turn all of the lights in the house off.
Clipsal only provides Windows based software to program the C-Bus controller, which Geoffrey took as a challenge. Using sersniff he was able to see what the Windows software was sending to the controller and eventually was able to reverse engineer the protocol by hand. Essentially this was a process of correlating what the Windows software was showing on the screen with changes in the data on the wire. As noted above, his cbusd software now supports some operations that you can’t do on the Windows software.
Along the way he wrote his own tool called spreech that connects any two character devices or TCP streams together in order to better be able to see what the C-Bus software was doing, and also a C-Bus simulator to help exercise the Windows software and see everything that it can do.
The next session on my Linux.Conf.Au program was the “MySQL Roadmap” session given by Arjen Lentz, Technical Writer and Trainer for MySQL AB. MySQL AB was founded in 1995 as a “virtual company” with offices and employees around the world. Arjen believes that open source provides some strong advantages for MySQL, especially in the areas of testing and QA. Jeremy’s work trailing daily builds of MySQL with Yahoo! Finance got a mentioned as a good example of this testing.
MySQL and MaxDB will never be completely merged into a single code base, although much work will be done on interoperability between the two. The eventual goal is to be able to run SAP R/3 on top of MySQL, which means that a lot of things like triggers and stored procedures, which aren’t supported currently, will need to be added to MySQL. MySQL AB is working on this at the moment.
MySQL runs an Alpha, Beta, Gamma release system. Alpha releases have gone through extensive internal testing before being released, but are considered unstable releases for testing only. Beta releases represent a feature freeze, with only bug fixes done before release. Gamma releases are release candidates, and the window between a gamma release and the final release of a version can be very short.
MySQL InnoDB tables are fully ACID compliant, and have row level record locking. Two common criticisms of MySQL are that it lacks those features. It does have them, and has had them for quite some time. InnoDB also supports clustered indexes and foreign keys with cascading deletes.
Some of the new features of MySQL 4.1 include sub-selects, OpenGIS geometric data storage and prepared statements. In 4.1 you can also specify a different character sets for each field.
MySQL AB Is expecting to have some big new features ready for version 5, including stored procedures and triggers. They’ve also bought a company working on clustering technology, and expect to have that integrated as a storage engine in version 5. We also saw a screen shot of the graphical administration tools that are on the way and these are also targeted for version 5 as well. MySQL AB expects to have version 5 released in the July to September timeframe.