<%@ include file="/mainheader.jsp" %>

Mission Statement

"Give me somewhere to stand, and I will move the earth."

Our mission is to take control of the desktop away from the major software manufacturers and put it in the hands of the world's independent software developers. The desktop has stagnated for fourteen years thanks to the reluctance of the major software manufacturers to introduce new designs in the interests of backward compatibility. It's time to change that.


To accomplish our mission, we are building a smart, visual, and autonomous information manager of all of a user's information, whether that information is data or programs, and whether it originates on the web, via mail, news, ftp, an editor, or any other application. It is not a search engine, browser, desktop, or operating system, although it shares elements of all four programs.

It is written in Java to make it portable across as many computers, operating systems, and browsers as possible, and it is free and open-source. Unlike other open-source projects like Gnu and Linux, however, to make it attractive to everyone it needs to be adaptive, autonomous, and visual from the start.

To make rapid change possible, it also needs to be well-written, flexible, extensively documented, easy to understand and modify, and easy to find and download from the web, so that any Java programmer, anywhere on earth, can extend it. If successful, it should lead to rapid improvements in user interfaces, adaptive agents, and information management schemes.


Building such an ambitious program with such a strong emphasis on software quality means building many subprograms, linking them together solely with well-designed interfaces, and creating an awful lot of documentation.

For the project to succeed, those programs, interfaces, and documents, plus the project as a whole, must have the following three properties:

In pursuit of these three goals we have to give other possible goals second place. First among them is efficiency (speed, memory use, storage use, code sharing, loop optimizing, and so on).

We all have a strong bias to produce the most efficient code possible and that is fine---code should always be as efficient as possible---but in pursuit of that we can't sacrifice flexibility (ability to reconfigure the architecture, even at the class level), robustness (strong resistance to bugs), and clarity (easily understood logical flow). Those three properties come first and foremost.

Once we have a flexible, stable, well-written program we can always worry about improving its efficiency later (or wait for faster machines with more memory! ).

Bottom Line:

if in doubt about whether to use a fast, but tricky, inflexible, non-portable, hard to understand, or hard to modify piece of code versus one that may be slower or more memory intensive, but which is simple, flexible, portable, easy to understand, and easy to modify, always choose the latter.

<%@ include file="/mainfooter.jsp" %>