Shlomif's Technical Posts Community - What does “Simple” mean in the context of software? [entries|archive|friends|userinfo]
Shlomif's Technical Posts Community

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| Shlomi Fish's Homepage Main Journal Homesite Blog Planet Linux-IL Amir Aharoni in Unicode open dot dot dot ]

What does “Simple” mean in the context of software? [Oct. 8th, 2012|05:08 pm]
Previous Entry Share Next Entry

shlomif_tech

[shlomif]
[Tags|, , ]
[Current Location |Home]
[Current Mood |amusedamused]
[Current Music |kristian vuljar - Carry Away (feat. Shannon Harley) - from Jamendo.com]

A lot of computer programs, and especially many open-source applications like to boast that they are “simple”. But what does it mean? Given the various applications and misapplications of this word, I can think of several meanings:

  1. Easy to use.

  2. Lacks complexity (whatever that means and implies).

  3. Simplistic.

  4. Minimalistic.

  5. Lacks extraneous features.

Very often, these meanings are at conflict with one another. For example, the GNOME developers have been keen on making the feature set as minimalistic (in accordance to meaning #4) as possible, which has taken the project to spiraling depths of unusability (opposing meaning #1). Furthermore, Arch Linux taglines itself as “a lightweight and flexible Linux® distribution that tries to Keep It Simple”. However, during one day, I spent three incredibly vexing hours in trying to install it on a Virtual Box virtual machine, due to the installer's lack of usability, and if I had to do it on live hardware, it would have taken me much longer. You call that simple? I joked that it would take an engineering degree from a prestigious university to figure it out. I have that, but it did not help me much.

As a result, I have become incredibly suspicious and weary of any software that prides itself on its “simplicity”, even though “simplicity” should be a good thing.

Bjarne Stroustrup (the creator of C++) has this to say about Java on his FAQ:

Much of the relative simplicity of Java is - like for most new languages - partly an illusion and partly a function of its incompleteness. As time passes, Java will grow significantly in size and complexity. It will double or triple in size and grow implementation-dependent extensions or libraries. That is the way every commercially successful language has developed. Just look at any language you consider successful on a large scale. I know of no exceptions, and there are good reasons for this phenomenon. [I wrote this before 2000; now (2012), the language part of the Java 7 specification is slightly longer in terms of number of pages than the ISO C++11 language specification.]

So simplicity is often a function of immaturity and incompleteness.

Of course, some things that call themselves “simple” are not simple in any of the meanings, for example SOAP, the so-called “Simple Object Access Protocol” (see the S stands for Simple), is not simple in any of the meanings I have given, but it is still called like that.

I feel that like the word “Zionism” no one is no longer sure what “simplicity” means, and as a result, some people no longer consider it a good quality to have. It’s a shame, but that’s life.

LinkReply

Comments:
From: (Anonymous)
2012-10-12 06:39 am (UTC)

"Simple made Easy"

(Link)

I think you might find a talk titled "Simple made Easy", by Clojure creator Rich Hickey, enlightening in this respect. It's on the web, look it up.

Shai (I would have used a Google account to identify, but Live Journal asks for permission to "manage [my] contacts". WTF?)
[User Picture]From: shlomif
2012-10-12 11:17 am (UTC)

Re: "Simple made Easy"

(Link)


Hi Shai,




OK, I looked up that talk and in order to view it, I had to whitelist the site on NoScript and then enable the Flash applet. I listened to the first 3 minutes, but gave up because it was too boring (I don't have much energy for long videos). Furthermore, the slides, a written summary, or a transcript, are not available - so much for simplicity.




While risking an Ad-hominem tu quoque fallacy, I should note that I didn't find Clojure either easy-to-use or simple, because basic things such as declaring a variable and assigning to it, do not work properly, which are common idioms in Scheme and even Common Lisp.