For optimization purposes, it is mandatory to fix some limits on what we want to do. This operating system specifically targets the people among us who own their computer and administrate them by themselves. It’s made to run on personal computers in the literal sense of this expression, and optimize this common situation as much as possible.
Our main hardware target is all computers that are at least as powerful as a modern low-end netbook. Said computers are assumed to have at least the following hardware :
- 64-bit capabilities if the processor is x86-compatible (after years of 64-bit processors, it’s time for pure x86 to go to rest). About processing power, modern netbook processors like the Atom family from Intel should do perfectly fine. x86 is not a requirement, I consider getting some ARM support in the future.
- 512 MB RAM
- Some way of booting up on removable storage devices (usb pen, optical drive…)
- At least 8 GB of mass storage memory
- A 8″-sized screen capable of displaying at least 800×600 resolution with 256 colors using hardware-independent techniques (e.g. VESA)
- A pointing device (mouse or touchscreen)
- Some mean of text input.
Applications might require more power to work, but the operating system should be fine with that. We’ll make no assumption on graphic chipsets, as support for them may prove hard to provide and is not mandatory for basic computer operation (see what Enlightenment can do using pure processor power).
Next question is : how will such people mainly use their computers ? We’ll provide support specifically for the following use cases (examples given show that optimization is possible and won’t necessarily make their way to the final operating system).
- Web/Mail/IM : A lot of people are mainly using their computers in order to browse the web, read mails, and communicate via instant messaging nowadays. This experience can and should be optimized, for example with fast browser launch times (while letting people choose the browser they want to use) and hassle-free network configuration, along with proper protection against malicious software (we’ll go more into details about that later).
- Office work : This is probably the number one kind of software that people use at work. While fully implementing and pushing forward an office suite specifically designed for this operating system is probably out of question, there should be at least a specific GUI in all compatible office suites which provides interface consistency with the rest of the operating system, for the sake of simplicity and efficiency.
- Reading multimedia data : No one should struggle in order to play its music and videos, especially when such content has been legally bought. In places where software patents are illegal, as they should always be, the operating system will do its best to provide ability to decode all common images, sound, and video files. For other countries, a “patent-compliant” edition will be released.
- Games : First the sad part : out of box support for Windows games is out of question. A compatibility layer like Wine may be provided by third parties, but we won’t support this, as it has proven to be a major source of crashes, interface inconsistency, and poor performance. However, this OS will do its best in order to help game development, through advanced yet simple multimedia APIs and highly accelerated OpenGL graphics where possible.
- Artistic work and multimedia creation : Drawing, editing photos, making videos, recording and mixing sounds, composing music, synthesizing sounds… Multimedia creation, which means creation of multimedia files, is a hot subject nowadays where computers have a lot to offer. We’ll naturally support this, for example by getting compatible with some powerful free software in this area like Gimp and Audacity and making development of such software easier.
- Software development : While this is not exactly a common task in the computer world, software development should be highly optimized, because it will have a great influence on how many people develop software for this operating system, and how well they do. In particular, it should be remembered in the design process that most developers are lazy : as much system features as possible should require no effort from them at all, otherwise they probably won’t use them. APIs should also be simple to understand and use, with as little overhead as possible, in order to facilitate amateur software development and to attract interest from more skilled developers.
- File management : Managing lots of files and applications can be tedious. And, sadly, having lots of installed applications and office and multimedia files around is common. The operating system should help people in the task of organizing and finding their data, by using an efficient internal hierarchy (like sorting applications by folders like “graphics”, “office”, “internet”…), having support for automatically generated hierarchy for search purposes (like displaying virtual folders containing all files created and modified at a certain date), and supporting search through the whole system (by name, date, content…). Symlinking should also be available, as being able to put a single file in many places is priceless in some cases.
- Various system administration tasks : Our goal is to make computing a hassle-free experience. This includes preventing the user from having to know everything about the internals of the system and the computer. However, there are some cases where user input is necessary, like managing installed applications and setting up mouse speed, along with replacing the HDD when it’s damaged. In those cases, simple configuration must be dead easy, but without sacrificing advanced administration power that may be sometimes needed. Use of “advanced” buttons in settings panels might be a good choice, along with providing CLI for the ones who can’t live without it.