ReadAhead-NG

What?

ReadAhead-NG is the next-generation of readahead programs for Linux, to superceed readahead and readahead-list. It is licensed under the BSD license.

Why?

ReadAhead-NG was created because of multiple deficiencies in current readahead daemons. ReadAhead-NG was also made to handle a broader base of tasks than traditional readahead.

How is ReadAhead-NG different?

ReadAhead-NG is designed to solve different problems than typical readahead daemons. The old daemons were meant to read in a list of files at boot and exit, to speed up the boot process; by contrast, ReadAhead-NG is designed for the following tasks:

ReadAhead-NG will be primarily a library supplying a stable and useful API for such operations. This library will export functions to trigger monitoring and logging of access to directories; replay of collected logs; and specific readahead() of individual files in a separate thread. These threads can be made to wait until other such threads finish their readahead() calls, and stopped so they write out logs of access.

The two main differences from other readahead daemons are the access logging functions and special file handling. ReadAhead-NG will be capable of logging file accesses for later playback, allowing profiled, adaptive readahead() calls without manually created lists of files. ReadAhead-NG will also operate on ELF files specially, only reading in the portions used in dynamic linking to give the greatest benefits while wasting the least page cache and avoiding pushing out earlier read in data or being caught up with by the CPU.

Why BSD License?

The MIT license is similar to the BSD 2-clause license that FreeBSD uses. It is functionally equivalent to the OSI approved 3-clause BSD license, without the non-endorsement clause. I was going to chose MIT to avoid confusion with the "BSD License" by calling out the 2-clause FreeBSD license; but the MIT license doesn't appear to me to require the disclaimer to remain in tact. I fell back to 3-clause BSD.

The reason I chose BSD over GPL or LGPL is simple: I'm not worried about the code. Nobody is going to grab it up and release an "awesome boot process speed-up for $39.95" or use it as a major feature in their programs. At the same time, they still get to use the library or even just the code for their own benefit.

Most basically, the authors of the GPL and LGPL have a particular flavor of philosophy that reminds me of socialism. I say "reminds me of" rather than "is" because it's not socialism; it's psychosis far beyond idealistic views that can never actually be stabally implemented in the real world. The GPL3 is a great example of this psychosis as RMS crusades on his way to attempt to destroy anything he disagrees with.

The views of these people are that you have "rights" that shouldn't be "restricted" when you use someone else's software; but I see the GPL as a way to restrict other peoples' rights to how they can publish their software, and will have no part of it. If you want to use my code, link to my library, integrate it into your GPL or closed source code, go ahead.

I have no philosophical problem with anyone licensing their software under LGPL; in fact, I encourage it. Unless you, like me, do not particularly care if someone yanks your code and throws it wherever, use the LGPL. I do not agree with the GPLv2 as I've read it; as for the GPLv3, the chatter it's creating tells me it's not worth reading, it's obviously crap.

As a closing, and a break from pure philosophy, I would like to cast my rationalism behind these views. Some companies are afraid of the GPL; their legal basically tells them not to touch it, because if some programmer uses a GPL library in a closed source product the results are disasterous. It scares management, it seems volatile and they can't let go of the image of an ooze moving slowly and consuming everything it touches. The GPL is a strong-arm tactic attempting to force a change in business model in the software industry; but the software industry is an entropy system and attempting to place strong controls on it only serves to generate an entropic trend around or away from the control.

In other words, if you make a system where software vendors are forced to open source their code to work with it, software vendors will avoid contributing to open source software and using open source (GPL) libraries. You must entice them to see that the model produces a better product, and lure them into a business model that focuses around capitalizing on this phenomena. LGPL is more appropriate for this than BSD or MIT, but also more than GPL. ReadAhead-NG is only BSD because, unlike Anjuta or GNOME, I don't have to worry about some company stealing it and stamping their name on it.

Copyright (c) 2006 John Moser john.r.moser@gmail.com, all rights reserved.