BetterOS.org : An attempt to make computer machines run better


home | better linux | games | software | tutorials | reference | web log |

About: about | philosophy | resume | contact | donate |

About


Introduction:
The actual BetterOS philosophy is the heart and soul of the BetterOS website and software. It is the guiding principle of BetterOS.org. Here is the formal definition of the philosophy.


Efficiency:
The main goal of all software is to accomplish it's task as efficiently as possible.
BetterOS.org defines Efficiency as follows:
The speed at which a task is accomplished and CPU cycles and power consumed during execution as measured in the end-user environment.
All components must be as efficient as possible. The efficiency of one component can never rectify the inefficiency of another.


Features:
Software should be designed for one purpose. Software which implements unneeded features inevitably has some negative impact on efficiency.


Customization:
Customization is generally good, but only when it does not impact efficiency. The ideal type of customization is compile-time customization because it can produce more efficient executable code.


Ease of Use:
Ease of use for the end user is important, but plays only a secondary role to efficiency. It must also be noted that "ease of use" refers only to ease of use for the end user, not for the programmer.


Software Design:
Software is designed for the user, not for the programmer. Software should be written in a way that produces the best result for the end user. Any programming constructs or features which are aimed for easier programming should be avoided. These concepts to be avoided include recursion, abstraction, and object-oriented programming. Programmer laziness is the biggest problem with modern programming. Truly efficient software is likely to have a smaller code size by several orders of magnitude and will be easier for programmers to work with as a result, rendering object-oriented programming and abstraction obsolete.


Standardization:
Standardization and protocol adherence is useful for interoperability and usibility but should be broken if the standard conflicts with efficiency.
It should be noted that the vast majority of standard protocols are inefficient.


Licensing:
Software should be licensed in a way that allows the highest degree of freedom possible. The Beerware License is officially prefered because it contains no binding restrictions. A lack of restrictions makes it possible for others to improve upon the software and produce the best result.
Proprietary licenses should be avoided because they do not allow the software to be improved upon by others.
Copyleft licenses such as the GNU GPL should be avoided because they place further restriction on the software which prevents some others from modifying and improving upon the software.


Decentralization:
Central authorities are inherently a source of restriction, and restriction is typically a source of inefficiency. Decentralization is considered an instrument of efficiency.


Restriction:
Restriction is typically a source of inefficiency. Users should be free of restriction whenever possible. Restrictions placed on the programmer also result in inefficiencies and should be avoided as well (this includes object-oriented programming).


Portability:
Portability should not be a goal in and of itself, but can improve efficiency in cases where the underlying system the software relies on is not as efficient as possible. Portable software can be improved later by building and running the software on more efficient underlying systems. Final efficiency should never be compromised for portability, but immediate efficiency might be if it leads to an increase in final efficiency (the efficiency of the software running in the best underlying environment supported).


Tradition:
Software design and features which exist for reasons none other than preserving previous designs or functionality should be removed if there is a more efficient solution. For instance, black text on white backgrounds is efficent for paper and pen, but on computer screens, the native color is black, not white, so black backgrounds are more efficient because it requires less work for the computer to draw. Black on white designs are tradition carried over from paper based designs.