Softpanorama
(slightly skeptical) Open Source Software Educational Society

May the source be with you, but remember the KISS principle ;-)

Google   


Sofpanorama Mission
And Vision Statement ;-)

Simplicity is the ultimate sophistication
--  Leonardo da Vinci

It is time to unmask the programming community
as a Secret Society for the Creation
and Preservation of Artificial Complexity.

Edsger W. Dijkstra: The next forty years (EWD 1051)

There are features that should not be used.
there are concepts that should not be exploited.
There are problems that should not be solved.
There are programs that should not be written.

—Richard Harter <rh@smds.com

The mission of this site is to promote a "slightly skeptical" approach to the computer science and programming, and to help those who try to educate themselves in software technologies.   The site is mainly oriented to be a self-help site. It can be used both for on the job training and for university CS students. The latter now  need to live and survive in a rather crazy world populated by fashion-driven curriculums and then need to move to the world dominated outsourcing and crazy marketing of overly complex but fashionable software technologies. The problem is that many textbooks overcomplicate and obscure the subject and vanity-driven professors want students to learn as much useless staff as they managed to learn in 10 years in just one semester ;-)

All materials are for educational use only and are provided under the Open Content License (local copy is here).

Open source (OSS) is in essence a non-conformist and anti-conformist movement, that recently was partially hijacked by corporate types that promote productivity-killing overcomplexity and bloatware (look at Red Hat 8, 9 or 10, what a monster, not that different in complexity from windows...) and  advocates of new OSS cults. Unlike many others, we consider  scripting languages, not OSes like Linux or other bloatware OS to be the most important part of open source movement because scripting languages really help to preserve the simplicity of the system despite the tremendous growth of functionality (they move the complexity into the scripting engine and while this is bad, it still better than to deal with it directly; see Scripting languages for more information). And of course, specifications (especially in the form of standards) and algorithms both are more important then the source code itself.

Spartan style and lack of polish is somewhat intentional because of the lack of resources. We just try to help students to use open source software to fight excessive complexity, dullness and overload of a typical university curriculum. We also want to provide some information that helps to resist brainwashing. For example,  it's important to understand that contrary to Raymondism there are good open source programs and bad open source programs, open source does not automatically guarantee quality.  It's all about choice.

To help you to resist brainwashing we created a large collection of  open source humor: humor is a good antidote to the attempts to dump loads of useless information on unsuspecting university students. Unix is a classic OS that any serious student of CS, any programmer needs to know well. But like in natural languages you need to know more that one language and more than one OS to understand both strong and weak points. It's actually very difficult to appreciate Unix without knowing Windows :-). 

WWW not only increases the amount of available information, it also contributes to information pollution and creates new kind of social pressure against non-conformists: fashionable ideas now have a much greater hold on programmers than they did before advent of WWW. The temptation to jump into new complex fashionable technology ASAP became almost irresistible. This badly affects the quality of software and actually us from the large part of classic software heritage. As Donald Knuth noted "There was a lot of  'political correctness' about how to program in those days." I would add there is a lot of political correctness about what program use in those days. 'Political correctness' is another name for conformism and it is especially visible in OSes and languages area. Paradoxically WWW stimulated "monocultures" and this site is my very limited attempt to fight this trend.  I am convinced that the following important areas are underrepresented or totally ignored in a typical university curriculum:

  1. Coexistence and integration of open source software with proprietary software including Windows and proprietary Unixes, especially Solaris (free high quality OS that in version 10 supports limited virtualization, with probably the best Unix kernel on the market; version 8 was open, version 9 and 10 are not but that's not so important as the complexity level is such that almost nobody can make useful changes to the kernel). "Fundamentalist Lunixoids" (including Raymodists and Stallmanists :-) are advised to stop reading this page here, although people who sincerely believe that the Linux kernel is the most advanced or stable kernel on the market still might find some interesting material and links. I advocate tandem of  a Windows desktop and a Unix server as an optimal development environment with Windows serving as a desktop and Unix serving as a server accessed using VNC and Samba.  I might be wrong and OS X might well be a better deal for the desktop, and UltraSPARC has a better instruction set and is more open, but still Intel architecture is cheap, widely available and due to that more democratic... With the growing role of GUI the quality of X implementation is very important. Not all X servers are created equal ;-)  In comparison with Solaris X implementation, Xfree86 is not impressive, but still usable.
  2. The importance of studying classic computer  books (and how to find better, not the most fashionable CS books, especially a semi-forgotten The Art of Computer Programming written by Donald Knuth. IMHO assembler and algorithms not OO and Java are the crucial parts of a programmer education...
  3. KISS as a software engineering principle and its application to open source development and open source licensing. According to an old saying, "Simplicity is the hallmark of truth" and I am convinced that the source code is the most valuable when a program is still short and thus modifiable by the user. Here scripting languages present a definite advantage and IMHO represent the most viable approach to open source development. For a system that is rapidly changing, a complicated architecture (especially coupled with a low level language implementation) either doesn't work or is very expensive and thus can be developed only by players with deep pockets. At the same time finding a the simplest possible architectural solution, optimal mixture of implementation languages and components is difficult and requires a lot of effort and high IQ... Open source is not a free lunch, as some people assume. It's much easier to go with the crowd and buy WebSphere :-).
  4. The value of little known and underutilized classic programming technologies (especially pipes and coroutines and compiler-based technologies).
  5. The important of less fashionable OSes in programming noosphere like Virtual Machines (VM/370, Virtuozzo, VMware), Solaris and classic BSD-style OSes (FreeBSD/OpenBSD/NetBSD). IMHO both Solaris and BSD kernels are more advanced and reliable than Linux kernel.  OpenBSD's track record --- one remote hole in the default install in nearly six years of market exposure --- is so far ahead of Linux and other Unixes that it is really stands out.
  6. Unix security and, especially, scripting languages based security tools. including undervalued and underdeveloped internal vulnerability scanners/hardening scripts.  Unix is a really great OS, but this classic environment was designed for developers and needs careful hardening for production use. 
  7. Classic Unix tools and unfashionable non-GUI tools like Orthodox file managers, Folding scriptable editors (the later category includes Orthodox editors -- scriptable editors with command line interface like THE and VIM6 ), "pipable tools" (almost all classic Unix utilities can be used in pipes); pipes as a system integration approach (note the elegance and power of the famous vi capability of processing the buffer with pipes).
  8. The two-level approach ("scripting language" + "compiled language"  like TCL + C or "Python + C") to the design of software as alternative to the fashionable "a single OO language" implementation strategy with Java or C# as one size fits all implementation languages. The value of  scripting languages that support  pipes and coroutines like Python, ksh93, Icon and to a lesser extent Perl.
  9. The problem of  information overload and a related programmer burnout problem. Unique Collection of Open Source Related Humor as a method of fighting job-related stress, brainwashing and information overload.
  10. Program understanding (especially slicing as a program understanding method -- see also Folding scriptable editors) and Reverse engineering (reimplementation with possible simplification of a (legacy) program) and autodocumentation (along the lines of Knuth's literary programming)
  11. The importance of studying the history of computer science (including Open source movement). the importance of resisting the "cult of personality" games of servile press. Critical view on such OSS figures like "Linux superstar" Linus Torvalds and "professional software freedom fighter" RMS;  see my Open Source Pioneers book. One of the most important rules (and a litmus test) of democracy is that no man should be idolized.
  12. And last but not least: Skeptical approach to cult-style attempts to eliminate alternative approaches in the name of a single "superior" approach including, but not limited to, JavaGPL, Linux, and OOP.  if we assume that  "Simplicity is the hallmark of truth", then GPL is just an invitation for creation of a better open source license. It might be that such a license already exists ;-).

Note about disappearing sites: after dot-com fallout, many interesting Web sites are gone. That means that some links in pages can be broken. Please try to use Goggle, Open directory, etc. to find a replacement link and, if you are successful please mail us a correct link See HOWTO search the WEB. This is WHYFF (We Help You For Free) site. You may wish to reciprocate by sending interesting links or books that we miss, suggestions and information about errors and broken links. Thank you in advance for your help.
 


Copyright © 1996-2008 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. Submit comments This document is an industrial compilation designed and created exclusively for educational use and is placed under the copyright of the Open Content License(OPL). Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

Standard disclaimer: The statements, views and opinions presented on this web page are those of the author and are not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with. We do not warrant the correctness of the information provided or its fitness for any purpose.

Created: May 16, 1996; Last modified: April 05, 2008