The “View Source” key

Don Marti has a thorough write-up of the cross-pollination happening between OLPC and a bunch of free software projects. I enjoyed the last paragraph of the article the most:

Just as the CM1’s software is getting an overhaul, so is the keyboard. “Nicholas Negroponte’s one absolute demand is to get rid of Caps Lock,” Gettys says.

And, Bender says, “There’s one new key they get that’s the important one and that’s the View Source key.”

Having “the freedom to view the source” can seem very abstract, and having a “View Source” key makes this feature of the machines clear to the users. Imagine one of these kids visiting an Apple Store1 sometime in the future and innocently asking where the “View Source” key is. “Let you view the source? But that’s our property, it belongs to us, you can’t have it.”

For anyone wondering how the technical side to the key can work: almost all of the code the user runs is written in Python, and the system keeps precise track of what’s running where.

One of the inspirations for OLPC is the powerful ability children have to learn with minimal guidance; an ability which is consistently underestimated by adults. By providing free software in this way, the very structure of the machine reflects the potential for self-guided learning that originally motivated the creation of the device.

We’ve added many new features to the laptop since I started working with OLPC — a webcam, SD card reader and dedicated NAND flash controller are the latest — but it’s going to take something very special to supplant the “View Source” key as my favourite addition.

(1: I don’t mean to pick on Apple; insert any such vendor here. I chose Apple ’cause they’re both a hardware and software manufacturer. In fact, as the article points out, Apple have helped us out significantly by agreeing to let the Squeak Foundation release the Squeak Smalltalk environment under an Apache-style license. Squeak will be one of the main programming languages used by the kids.)


  1. No caps lock key. Seems quite arbitrary and not based on any kind of educational motivation. Perhaps Papert should have been put in charge of the program.

    Do they know you can already buy a real laptop for under $300? Used ones for much less.

  2. Makes it clear to the users? I’m not sure the target demographic of the laptop would come close to understanding what “code” is. And how many users of “regular” computers want to view code right now? Only the people that would write a paragraph like that, which isn’t very many.

    I think it’s an interesting idea, but it doesn’t play at all into the purpose of that specific computer.

  3. Yeah doug you can buy a laptop for under 300 dollars, but normal laptops would be of no use in an area without power, these 100 laptops are charged with a handcrank. Also since the olpc creates a mesh network with it’s wifi card it means that everybody doesn’t have to be plugged into the wall or sitting around a wifi point to get connected to the internet.

  4. Makes it clear to the users? I’m not sure the target demographic of the laptop would come close to understanding what “code” is. And how many users of “regular” computers want to view code right now?

    I’m glad someone asked that. I think that the lack of people being interested in viewing source is a result of the huge effort needed to work with source in the current (proprietary) environment — you might get access to some source for some small part of your system, but it’ll probably be difficult to recompile and be a huge time sink. The barrier to entry is extremely high.

    Now, consider how that might change when *everything* on your machine has source available, is mostly written in an easily-modifiable language (Python), and you can get to the exact line, ready for patching, with a single keypress.

    It is dangerous to assume that people “don’t want to learn”, and is much better to err on the side of them having interest and intelligence, and providing for that. Who knows how many kids will be interested in programming when “programming” is just hitting a button and trying different code until it does what you want.

  5. View source? really? Can you give us a few compeling scenarios in a day of an OLPC user where you had to view the source? It’s a good idea for PCs made for programmers and other geeks but majority of the population that would use OLPC will grow up to be a doctor, lawyer, artist, architect… a person who doesn’t even care what source code means. Of course there are keys such as “print screen” that these non geeks don’t have much use of and they are still there on their key boards eating up some real estate…

    I agree with Mark here that the idea will target wrong demographic. Having said that if there ever comes out such an app/key combo I’d be interested i one…. but only if its free 😉

  6. Is there a `change-language` key?

    What you will call a person that speak 3 languages?
    – Trilingual

    What you will call a person that speak 2 languages?
    – Bilingual

    What you will call a person that speak 1 language?
    – American.

    For non Americans there is a need for a key to switch the current language. Most people today use a clunky combination of Shift, Control and/or the Alt keys. Some of the more fortunate that runs free operating system can assign one of the redundant Windows key for that task, but it is high time someone put a key that say “switch language” on it, perhaps with an indicator led or two.

  7. The view source key is one part educational, one part political. On the educational side, someone who just likes punching keys out of curiosity might get a taste for learning how computers work — when they might otherwise not have had the opportunity.

    On the political side, if you get people habituated to being able to see with little effort the code of the software they use, they might start to expect to have that ability all the time, and this would be to their benefit.

    Of course there are people who will never care about this, but why set the defaults to cater to them when setting them otherwise won’t disturb them in their ignorance?

    Being able to easily view HTML is a start towards both of the above goals. I wonder how many people who have a knowledge of programming these days (either professional or hobbyist,) got their start looking at HTML?

  8. This has been done. There’s a “hood release” lever on pretty much every car sold in the world. Of all the hundreds of people you know that drive cars, how many of them do you know that pull the hood release lever with any regularity? Only mechanics.

    Do you think that the hood release lever on cars has led to a greater understanding by the general public of how cars work than there would have been had it required a wrench to remove the hood?

    The barrier keeping people from fixing their own cars is *not* that getting the hood open is too difficult (nor would it be if the hood was bolted shut). Turning a wrench is trivial, understanding how the engine works, why it’s broken, and what it will take to get it fixed is the barrier keeping people from learning to fix their own cars.

    Similarly, the barrier keeping most people from programming is *not* that starting an IDE is too hard without a dedicated key on the keyboard. It’s that learning how to program is too hard.

    You want more people to program? Make programming easier to do and easier to learn. Adding a “launch debugger” key to the keyboard isn’t going to do a whole lot of good if you don’t know how the debugger works.

    And what exactly does a “view source” button do? Open the source code for the current foreground application, and jump to the currently executing line? How is this useful? I’d like to see a walk-through of the scenario in which this is helpful. This is what I’m imagining:

    1. Kid is using Application X. Kid presses enter, app does nothing.
    2. Kid thinks, “I should be able to make action Y happen when I press enter, instead of only happening when I click the mouse.
    3. Kid presses “view source”
    4. Kid sees either:

      “int main(args){…”, whatever’s on the first line of the entry point for the application. This does the kid no good, he’s nowhere near the keyboard event handler code.


      he sees “wait()” or whatever the currently executing line is, which is basically nothing when the app is waiting for input. This is also not the keyboard handling code that he wants to modify.

    Seriously, how in the heck is the kid supposed to get to anything useful with a “view source” button?

    Call me a pessimist, but I don’t see this being a useful addition to a PC. Especially if all it does is pause execution and load up the debugger. When the kid presses “view source” and his app stops doing anything until he starts pressing “step over” (BTW, people who don’t program have no idea what “step over” means), it’s just going to make the kid think the app crashed.

  9. A: The code is python, probably the most readable for non-programmers. In other words it is the best bet at getting kids to pick it up

    B: I gather that its a cross between a debugger, IDE, and compiler – basically you can modify the code on the fly. What I’m worried about is what happens if the kid screws up the code – is there a ‘revert code’ button?

    I for one taught myself to program when I was 7 years old, so I suppose I am rather biased in this matter.

    You can’t imagine the amount I wanted that button. I wanted to know how the speech synthesizer program my ATARI ST had worked. No view source button. I dreamed at that young age of an operating system where programs are simply code, and not compiled.

    I definitely agree with the removal of Caps-Lock – I never use it. However, I also think one of the above comments presents a very good idea – the switch language key. Very handy particularly when the language a person reads differs from the official language of the region. Those knowledgeable in both languages could do the translation and upload it onto the mesh.

    Some universal view source functionality should definitely go in, but perhaps not as a key. Maybe a shortcut, or a gui element. My main worry is that a kid will be chuggling along on the laptop, hit the key, have a bunch of mumbo jumbo pop up and think its broken or messed up or something.

  10. This story sums what I feel might be the main problem with the OLPC project. It appears that many of the involved consider the main objective of the program as teaching children how to write code. I would guess that would be the interest of 2 or 3% of the population, at best. These computers were supposed to help children in their educational process as a whole (language, communication skills, math, geography, the lot).

    The exaggerated focus on teaching programming seems to give reason to the critics that say the hidden goal of the project is to create cheap labor for the IT industry.

  11. Seriously, the “view source” functionality could easily be a menu item or control-something, and it wouldn’t slow the would-be source readers down that much.

    But does “view source” have value as a symbol? Would it be too easy for a uniform piece of hardware, mandated by the ministry of education, to look like an instrument of control and indoctrination without a healthy dose of invitations to peek and hack?

  12. Squeak/eToys on OLPC is not MIT or Apache style license. It’s the proprietary non-free, non-opensource Squeak License. Apple only relicensed Squeak 1.0. Not SmallLand 3.8 which the OLPC Squeak image is based on and certainly not the 3.9.9 Squeak VM.

  13. Hey! A “View source” key in any computer system is a significant improvement and this claim has nothing to do with believing in opensource but open systems: Web browsers had “View source” menu option from the very first day they were around and that only has helped more people get a clue on how HTML, Javascript and most other web technologies work.

  14. Thanks for very interesting article Chris. btw. I really enjoyed reading all of your posts. It’s interesting to read ideas, and observations from someone else’s point of view… makes you think more. So please keep up the great work. Greetings

  15. This isn’t the same as a hood release lever because you can use a hood release lever to fix your car if it breaks. A view source button lets you … view the source. The equivalent of a hood release lever would be an “edit source” button, because that would actually be useful.

    Seriously, how is this a good idea? You make the argument that kids will get used to having a view source button and be annoyed when using a computer without one. But without being able to understand the source code or actually use this function for anything useful, to most people it’s just a “display meaningless garbage” button. If kids get used to having this button at all, it will be in learning to avoid it: they’ll learn that pressing it displays something confusing that they don’t understand.


Leave a Reply

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