Download
About

Contact

Docs
CVS

There's much to be said about Flux. A lot of the most technical, hands-on information is in the Docs section. Here, on the other hand, you'll find more theoretical information, background and goals, a list of projects using Flux, benchmarks, and information about the developers.

Background
Even the smallest program operates on some kind of data, reading and writing structured formats. Larger (though not necessarily large) programs can have features like event loops, interprocess communications, buffers and logging facilities.

Programming or piecing together this per-program framework can be a tedious and time-consuming duplication of effort. You want to spend your time on an application's unique features, not waste it on stuff like event loops that can handle multi-socket communications and interface events without one thing locking up the other.

That's what prompted the development of Flux. Certain tasks and problems were popping up repeatedly in my work, and a generic remedy was in order. I started gathering the often-used parts in a glue library, and called it, yes, Flux. Also, some code which was strictly not glue, such as the IRC interface layer, found its way into the lib.

Goals

  • Simplify tasks. Provide simplified APIs to solve many common programmatical problems, while keeping more advanced functions available in API layers of increasing complexity.

  • Homogenize interfaces. Unify operations which are functionally similar and access exceptions through optional calls. Example: network sockets and interprocess pipes, which are both streams that can be buffered, waited for, etc. Here, the exceptions arise in the way the streams are established.

  • Homogenize platforms. Provide an environment that can be used to access OS funcions whose implementations differ from system to system, homogenously. Target platforms are as many Unix flavours as possible and, through Cygwin, Windows.

Assumptions

  • Application developers mostly use a small subset of the functionality in each full-blown library they link with. Example: A few selected algorithms from a crypto library providing tons.
  • Application developers want to link with as few libraries as possible. Example: Largish GNOME-based applications (this isn't as much work as you'd expect anymore, though, thanks to the gnome-config script).

Thus, Flux tries to span quite a large set of applications without providing extremely deep support for them. The idea is that you can survive using only one scheme for symmetric crypto, one for asymmetric crypto, etc. In this example, Flux will provide a few selected, well-known and strong algorithms - namely, the ones most likely to be useful. (Crypto isn't scheduled for implementation before 0.4.0, though). Read the plans for more information.

Projects using Flux
Flux is used by the Conglomerate document system, the FIDEL communication enviroment, as well as several smaller projects. We'll be providing a more complete list in the near future. If your project uses Flux, we'd very much like you to tell us.

Benchmarks
We've recently started benchmarking Flux, both comparing different modes of operation within Flux, and also comparing Flux with other libraries and packages that provide overlapping functionality. The results so far are extremely promising, and we'll be adding them to the benchmarks page as more tests are completed.

Credits
Hans Petter Jansson <hpj@simplemente.net> is the architect and lead developer of Flux. Andrei Zmievski <andrei@ispi.net> works on general development, with a focus on optimizations. Joakim Ziegler <joakim@simplemente.net> handles all sorts of miscellany around the project, including Python bindings, licensing and marketing issues, and the design and maintenance of these web pages. Simplemente are the main sponsors of the project, employing Hans Petter and Joakim to work on it (amongst other things). Belinda Laws <boysdontcry@zombieworld.com> is the artist behind the Flux nurse illustrations.

 

Flux, these web pages, and all related material are Copyright©1999-2000 Simplemente and the respective authors, and are licensed under the GNU GPL. Please see the About page for more details. Web design by Joakim Ziegler <joakim@simplemente.net>, illustrations by Belinda Laws, <boysdontcry@zombieworld.com>.