A sane Linux boot screen implementation
The big commercial distributions have start this kind of boot splash with big, fat kernel patches pulling crazy stuff like JPEG loaders into the trustworthy kernel (or start an Xserver pretty early during the boot - ieek!). Code that never ever will made it into the upstream kernel. And other people have taken the right path pushing this kind of functionality back into user-space were it belongs: namely usplash and splashy.
However, recently a client wanted this for a project and I had to look their source and had to say: Nay! Never ever will that kind of code quality make it into the boot sequence of a product we are involved with. Namely usplash is just pure crap all over: Starting with BOGL, Ben's Own Graphic Library (huh?) and going over "my first C code" lines down to theming thru shared objects, ...
Now splashy is the other extreme, overloaded with dependencies like an XML parser (just for the config files!) over to depending on DirectFB - a graphic subsystem most often not needed for any other sane thing on workstation or embedded devices down to an overall bloatedness for all and the most trivial things in life. With the current development version they even want to change their FIFO for communication to a socket on a private loopback interface (???). Yeah - it wasn't me!
Thus I sit down to do it right once more: With a clean, structured bare minimum of code and complexity you would expect for such a trivial task as hiding your boot text and bringing graphic with progress indicator up.
For the graphic stuff it does utilize the canvas library Evas, something mature and stable and useful for a lot of other stuff on systems (in contrast to the formerly critized DirectFB or BOGL, shiver) and no complex FIFO, socket, whatever communication is needed to get your messages on the screen.
So far the Archivista Box was an early adopter and we also used a slightly tweaked version to show an splash screen on the Atmel AVR32 development board.
The work-in-progress code is available in a Subversion repository: