|
Softpanorama
(slightly skeptical)
Open Source Software Educational Society |
May the
source be with you,
but remember the KISS principle ;-)
|
About Softpanorama
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
Statistics
Extended abstract
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:
- 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.
- 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...
- 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 :-).
- The value of little known and underutilized classic programming
technologies (especially pipes and
coroutines and compiler-based
technologies).
- 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.
- 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.
- 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).
- 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.
- 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.
- 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)
- 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.
- 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,
Java,
GPL,
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.
Created: May 16, 1996; Last modified:
November 23, 2008