Open Source is not enough

The Open Source movement is great, but it doesn’t go far enough.

When I first tried Smalltalk, one thing that really struck me about it was that not only was the source “open”, but it was right there in front of me. If I wanted to see the source code for one of the classes in the Smalltalk standard library, I didn’t have to go to the web and find the project’s source-code repository and download the code. I just clicked on the class’s name in the Class Browser, and there it was. Making changes or additions to the standard library was as easy as making changes to my own code – everything was right there in the Class Browser, and changes took effect immediately.

The Morphic user-interface system, originally created for Self and later ported to Squeak and then Lively Kernel, took things even further. With Morphic, I could right-click on anything I saw on the screen and ask to see the source code for it. If I pressed a button and it did something neat and I wanted to see how it worked, I could find out with just a few clicks. If I wanted to make a second button that did something similar, I just right-clicked the first button and said Duplicate.

Convenience matters. When I feel the Urge To Tinker, only rarely does it feel like a loud voice shouting in my brain with enough energy to propel me to find the website and download the source code and figure out how to find the part of the code that corresponds to the thing I’m looking at on the screen and make the change and restart the program and retrace my steps. Much more often it’s just a quiet voice mumbling, “Hey, it’d be kinda neat if…” and then I think, “Well, it’s Open Source, I guess I could go download the source code… but… meh, it’s so far out of my way, not worth it,” and the urge fizzles out. I think that a lot of potential human creativity is being wasted this way.

This entry was posted in Uncategorized. Bookmark the permalink.

2 Responses to Open Source is not enough

  1. Peter says:

    Very interesting, and I agree. Having the source right there at your fingertips is way better than having to go somewhere else and get it.

    But doesn’t having right there in your face require that you’re working with an interpreted, rather than compiled, language?

  2. Adam says:

    Compiled versus interpreted isn’t really the issue here – there’s no reason why a system can’t compile the source code down to machine code (so that it’ll run faster than an interpreted system) while still keeping the source code handy so that it can be tinkered with and recompiled on the fly. Plenty of systems do that, including various JavaScript implementations, as well as lots of implementations of other languages like Java and Smalltalk and so on.

    But you’re right, the standard way to distribute a program written in (for example) C++ is to compile it down to something that has no more connection with the source code. When you run the program on your machine, there’s no way for you to point your mouse at a widget in the running program and say “show me the source code for this,” because the executable file doesn’t even contain the source code. That’s the thing that I think is sad. As long as the code is under an Open Source license, and as long as there aren’t any technical reasons (like limited storage space) for not wanting to have the source handy, we might as well include the source with the executable, and offer a way for users to easily see how the source is connected to the things they see on the screen.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>