A
SoftwareMasterpiece is just that. As in art, architecture, whatever, the main
criterion is to withstand the test of time.
In a field that is only a little more than half a century old (give or take a decade, and not counting Babbage), can we truly say that anything to date qualifies?
There seems to be some disagreement over the definition of
SoftwareMasterpiece;
see
SoftwareMasterpieceCriteriaDiscussion. I (Anonymous) propose factoring
this page into three separate pages as follows, in the hope of clearing up the
confusion.
SoftwareMasterpiece(s):
You can vote on these. Add new ones only if you've dealt with their source.
- Huh? I've read the original source to ZorkGame on DEC 10s, I've read the source to both TecoEditor and C/elisp emacs, TexTheProgram, MetaFont, and lots of Scheme/Lisp interpreters, but whoever said that...vanishingly few have, so I doubt you have! So why the requirement?
See also
ProgramsToRead
I don't think we should talk about external properties of the programs, because
they exist independently of the programs. I think we should talk about the
beauty, cleanness, design and buglessness of the source.
I refactored away everything that talks about ideas, not actual pieces of
software, because things that are not software are discussed in more detail
elsewhere and cannot be software masterpieces.
Vote exclusion of
SchemeLanguage (I added
LispLanguage above). What makes
Scheme a masterpiece? Seeing as it's basically just another LISP... Some new
stuff, some changes, sure, but does that make a
SoftwareMasterpiece innovation
compared to the original (
JohnMcCarthy) LISP? Granted I haven't read any Scheme
source, but ''would an improved version of a Picasso, no matter how much
"improved", ever count as a masterpiece?'' I think not. --
SimonBrenner
IMHO,
UnixOs ranks as a
SoftwareMasterpiece. It has inspired so many and it
refuses to die or even become obsolete. --
JavaSchrod
TheUnixHatersHandbook tells you otherwise. I'm a long time Unix user, but I
think their criticism hits the point. --
PanuKalliokoski
It's a funny book, with lots of on-target criticism, but they're all about
(highly annoying) side issues, not about Unix per se. The things that make Unix
a
SoftwareMasterpiece are unrelated to the complaints in that book. --
DougMerritt ----
TetrisGame. The game concept has been ported (to almost everything - including buildings! http://www.blinkenlights.de/arcade/games.en.html ) and cloned more times than you can count (look out for the cheap LCD copies in every toyshop), and has spawned innumerable variants, if not an entire genre of games. I'd say it's a SoftwareMasterpiece if only for the fact that I've been playing it since 1991, and I still enjoy every single game. --EarleMartin
If "time" was the test, then surely
FortranLanguage and
CobolLanguage belong on this list too. --
BillZimmerly
Which implementation?
- Just wait a few more years and FortranLanguage will make it to the list, it already almost qualifies.
How about
SmallTalk?
Smalltalk-80 sure was one. As was Xerox's
InterLisp-D environment.
Functionality, utility, and art are not particularly the same things. These
terms shouldn't be loosely thrown around. Just because software is long lived
and useful does not mean it is a
masterpiece.
There are two definitions that I use regularly in my own thoughts. A
masterpiece is either the best thing you have ever done, or (more importantly)
the specific piece of work that proves you are a master. Perhaps this would be
more of a "
MasterWork" :), with the distinction being important only to me.
Being a "master", to my mind, is when your peers consider you to be a master,
preferably when they judge you based on your work. --
JeffBay
So, what qualifies
EmacsEditor as a masterpiece?
It has withstood the test of time, and it has proven itself to be quite
extensible, to say the least.
What do you think of the
MathematicaPackage? Isn't it a masterpiece?
Not if you use
MaximaPackage. --Anonymous
Maxima isn't a masterpiece. Just look at its source code.
''Mathematica isn't a masterpiece either, just look at the source code... you
can't? oh, never mind then.''
What about the
MathematicaLanguage?
One candidate is sendmail. Ignore the horrible sendmail.cf syntax -- the
program handled and continues to handle a huge stream of email every day.
Possibly more than any other mail transfer agent. One of the earliest
widely-used parts of
ArpaNet (later the Internet), email may be said to be the
foundation upon which remote collaboration was built, and sendmail can be
credited for being the software that made it happen. It deserves recognition
for its longevity and power. --
StevenNewton
Sorry, please not sendmail. See chapter 4 of the
TheUnixHatersHandbook, or at
least the small part of it that discusses the sendmail program itself and not
the major portions that discuss all sorts of other mail-related software
behaving badly, but not having anything to do with sendmail other than trying
to lay blame there because
sendmail is the ubiquitous MTA on the Internet
and just about every mail message with a problem somewhere will have touched a
sendmail daemon.
''It may not be beautiful, but it enabled email to grow to the prominence it
has today, and it continues to handle massive volumes of messages (Sadly, most
of them are spam). So what are the criteria? Can we call something a
masterpiece because of its place in the genre? Would the Model T be a
masterpiece? Why not?''
Because popularity doesn't equal masterpiece. Being a masterpiece is about
aesthetics, it's about beauty, it's about elegance and simplicity. If it isn't
beautiful, it isn't a masterpiece no matter what it accomplished. A
masterpiece should inspire the viewer, it should make you want to do something
just like that, it should serve as a model of perfection or near perfection.
Windows dominates the computer OS market, no competitor is even close, but it
isn't a masterpiece of OS design. Masterpiece's aren't always the winner, or
the most popular,
WorseIsBetter for the masses. But the masterpieces inspire
and influence future designs far more than reqular stuff. As a language, Lisp
is a masterpiece, and you can see that by how many of it's features have made
it into other languages over the years. Most languages are still in the
process of reinventing Lisp. I'd say
SmallTalk is a masterpiece for the same
reason.
No, not sendmail. But the
QmailSystem is a masterpiece. sendmail works, but
qmail not only works better, it is beautiful. --
RalphJohnson
IMNSHO, sendmail is the #1 example of a program that is very far from being
software masterpiece. BIND is another high candidate. Qmail might be a
software masterpiece in reliability (I don't know), but not usability - its
configuration and weird magical e-mail addresses (or were those from ezmlm?)
are a hairy ball.
sendmail is an anti-masterpiece in that it inspired me to write my own mail server because that would be easier (it proved to be *much* easier, in fact) than getting sendmail to work correctly for a very typical network. So, it inspired, but not in the way a masterpiece should.
Software Masterpiece: A program in the developer's mind before the first line
of code is written (It goes down hill from there).
''Just wanted to say that the above definition of a Software Masterpiece is a
masterpiece in itself. You really nailed it, in a very deep way. Sorry for the
interruption, back to your regular programming.'' ----
Someone placed
RubyLanguage on the list. I'd disagree on the grounds that it's
too young and perhaps unproven to merit being considered a masterpiece. Perhaps
when they're on version 10?
Ruby was created on February 24, 1993, according to
WikiPedia, making it over
10 years old now. Is that too young?
Compared to something like Emacs, yes.
Any language that breaks itself between updates and flip-flops between syntactic systems from
minor version to minor version is absolutely not a candidate for inclusion in a list of software masterpieces. Inclusion of Ruby is laughable. I don't see Perl up there and its got a far more glorious and storied history than Ruby. I don't know that Python belongs, either, though perhaps its successful and consistent use of limited syntax is worthy of honorable mention (and perhaps some CPython implementation bits are themselves masterpieces, but this does not extend to the entire project).
Some possibilities in various genre:
- rsync (no way, the handling of lost connections was abysmal yet in 2002)
- Adobe Photoshop (no way, the last time I used photoshop is was very flaky - that was quite some time ago, but no way can this be a software masterpiece)
- you must try the present iteration of Photoshop - it is truly a masterpiece for PersonalUseComputing. -- 2008
- It's too cluttered and confusing.
The deepest meaning of this page is that there is little agreement on which software are masterpieces, perhaps because as a field software
engineers/programmers pay little respect to learning from the past.
- It is more than that, it is what is and what continues to be used because ItWorks, it is Useful, Useable and Used.
LiterateProgramming would encourage us to read good programs like books. But
which good programs are these? As a profession we need clarify what our
'scriptures' are. --
RobinChauhan
I would say
PostScript probably fits the bill. I haven't really read the
source code of any implementations, but it works so well that you generally
don't see that it's there. I'd say that's a good indication of mastery.
ColorForth is a masterpiece. It embodies
ChuckMoore's decades of experience in
refining the
ForthValues of minimalist design. Reading it is like seeing an
Aikido master effortlessly deflect half a dozen attackers; what Chuck achieves
seems impossible in the tiny amount of code involved.
I believe
LuaLanguage qualifies because it is a very compact implementation of a simple and elegant language, written in a very portable style of C. Not only is it production quality, shipping in many products, but it is an exemplar learning tool. It has a one pass parse that directly emits the IL, a unique implementation of closures using a technique called upvalues, and several other innovative features. The authors are also very open about explaining and documenting their work. It's a real contribution to the art.
- X11 XwindowProtocol, whilst the implementation may be arguably inelegant, the design and extensibility definitely are elegant.
- telnet, it is inconceivable that such ugly programming forms the basis of networking over 20 yrs. (I find that ugly coded programs can be regarded as a masterpiece; masterpieces have undeniable effects in the computing world and technical merit, rather than to depend on the taste for coding style of various Wikipedia contributors.)
- PostScript definitely.
- Google; no need to download! Which of the various GoogleTechnology are you referring to?
- xv, once ubiquitous image viewer
- WordPerfect 5.1, best word processor ever.
GNU
ScreenMultiplexor is definitely a masterpiece in usefulness. It is simple,
easy to learn and allows lots of activities otherwise impossible over an SSH
link (or in a console that gets interrupted when quitting and restarting X11).
I haven't had a look at the source though.
I'd vote in
DirMagic (the DOS utility that is still better/faster than windows
explorer) and several of the TSR's I used to use. What about the original
Norton DOS defrag? or
PartitionMagic? Those were so useful and powerful they
were revolutions.
GREATEST SOFTWARE EVER:
- VI, versions 1.0-1.2 only, please.
- Ed.
- Mugwumps.
- Lynx.
- Top.
- Did I mention EdIsTheStandardTextEditor?
- The portion of EMACS that quotes Zippy the Pinhead.
SQLite. Most widely deployed sql database engine in the world. As powerful as other database engines ten times the size. Clean, nicely-commented sourcecode.
- SQLite can't really be compared to most other database engines, because it's an embedded DBMS. There is no free-running server, nor are there the networking, security and concurrency control mechanisms required in a free-running server, nor does it support stored procedures. Foreign key constraints are recognised but ignored, though they can be awkwardly implemented with triggers. As such, it can't really be compared to the Oracle DBMS, MySQL, PostgreSql, and so on. It would be more appropriate to compare it to other embedded database engines like the Berkeley DB, which are not ten times the size. From SQLite's own Web site: "Think of SQLite not as a replacement for Oracle but as a replacement for fopen()."
Colorforth: I want to believe. But I couldn't find any help or documentation. When I tried it, it just gave me a place to type. Clueless, I tried typing random characters...and it crashed. Tried again, same. How do I grok the colorforth?
First, become familiar with ForthLanguage (e.g., via GForth) so you have some understanding of Forth to start off with. ColorForth assumes you grok Forth first. Then, basically, read the source. As indicated above, ColorForth is a very, very minimalist system. It is essentially an interactive assembly language for a hypothetical dual-stack virtual machine that maps very closely to real hardware; unlike GForth, ColorForth imposes no protections
for you (otherwise, it's not minimal!), so yes, you can crash the system trivially if you don't know what you're doing with it. --SamuelFalvo
XMMS - less bugs than anything I know, spectacularly clean code, useful comments, lightweight, and handy.
If you've got VMS there, you should consider Plan 9 as well. Very elegant design and a clean way to solve many problems. 9P is a fabulous idea which spawned FUSE. The C source code is also well written and available for reading.
http://plan9.bell-labs.com/plan9/about.html
I elect
SmlLanguage, as per The Definition of Standard ML. Or would this be more of a
SpecificationMasterpiece?
I (
NatPryce) suggest the
GitVersionControl. The command-line tools are clunky but the model underlying them is a beautiful example of elegant simplicity.