How to teach the next generation of open source with Scratch


Image by opensource.com
submit to reddit
 
(9 votes)

Do you ever wish your kids would do something besides play video games on the computer? What if you could get a head start teaching them to be the next generation of open source developers?

Computers are increasingly easy to use, but programming is far more complex--and less accessible. For many of us who now have small children, programming began with BASIC programs on computers that forced you to make them do something by offering nothing but a command line.

At school, kids often learn how to use tools but not how to create. Tools become obsolete quickly, so knowing how to create is much more important, and the tools will be successively intuitive.

Andrew Baerg presented an introduction to teaching kids Scratch at Open Source Bridge. He recommends the cross-platform system, which was also the basis for the Girl Scouts game design workshop we posted about last month, for introducing kids to programming.

The drag-and-drop system of snap-together boxes makes it easy in just a few clicks to make a sprite move, wait, talk, and perform assorted tasks in seconds.

This starts things off by teaching them the most fundamental experience of programming: the computer will do exactly and only what you tell it to. This gives them the feeling of freedom to create instructions, but also that feeling of frustration when they discover the chasm between what you tell a computer and what you actually meant. Then they find the secondary freedom sometimes too rare in a kid's sphere--the freedom to make as many mistakes as they want.

"One of the biggest advantages of these opportunities is teaching your kids to be the kind of computer users you want them to be," said Baerg. "Users who are able to debug and find out what went wrong rather than getting fearful and not trying."

The freedom to explore

An early-grade-school-aged child generally experiences computers most through video games, which have a lot of walls--places your character can't go, things it can't do. They're restricted to the interface of that game system. If you ask them what's behind those walls, they often will tell you that there is something there, when really there is not. This is the opportunity to explain to them that if you can see the source of the game, it's an opportunity for you to create whatever you want beyond the wall.

As a side note, Scratch was available for iPhone/iTouch but was removed from the App Store. The explanation was that they won't allow apps that can execute code. That restriction means lost ideas. An idea with no means of expression is gone.

Kids aren't all the same, and their ideas aren't all the same. Not all kids are going to enjoy programming, and that's OK. Baerg does believe, however, that everyone is a hacker on something, whether it's drawing, making up games, telling stories, or making music. Giving kids the freedom to spend time on what they enjoy lets them explore the hacking that appeals to them, not the hacking that appeals to you. Don't get bogged down in exactly what they're doing in Scratch--just let them explore, whether it's to make up rules for a game or draw hundreds of costumes for their characters. Teach them with freedom.

Have a programming club

Baerg offered several pieces of advice for starting a programming club for your kids:

  • Let the kids drive the enthusiasm and invitations to friends.
  • Interact with parents on a trust level, but they don't have to be there.
  • Keep it to one hour--long enough to get something done, but not so long they lose interest.
  • Prepare in advance. Don't try to wing that 30 minutes of prepared program, even if you think it's simple.
  • Take and share. Sample Scratch programs are widely available online.
  • Resist the urge to make it perfect. Leave a degree of incompletion to give the kids the opportunity to make it better.
  • It's not only about games. Explore art, music, and storytelling too.

And finally, simply let them get their ideas. Your role is to help them express their ideas in programming. If they don't have ideas, you can encourage them with suggestions--"How about a sound?" or "What if something moved?"--that still leave them room to make the ideas their own.

Bring it back to open source

Scratch offers a built-in opportunity to teach kids about open source and sharing. The Scratch menu has a button called "Share this online." Click that, and anyone can go to the Scratch homepage and download the code to your project. From that, when someone adds to and reuploads the code, they have what they call remixes, which are analogous to forks. Commenting is on by default on those Scratch projects, creating analogies to the good and sometimes negative effects of working openly in a community.

Scratch an itch and get a kid programming.

""
Creative Commons License

4 Comments

Adrian Malacoda's picture

Scratch is proprietary ("semi free software" it looks like) and the next version is tied to proprietary Adobe Flash. Good idea in principle but IMHO until it's fully free and not encumbered to any proprietary technology, not the best thing to teach the "next generation" of FOSS.

Darren's picture

Page says free and also allowed download.

Adrian Malacoda's picture

Free in this context refers to "freedom" and not merely to a cost of zero. See this page for a brief description of "free software":
http://www.gnu.org/philosophy/free-sw.html

The Scratch downloadable contains proprietary components, and the publicly available source code is under a restrictive license:
http://info.scratch.mit.edu/Source_Code

The license limits the ability to "use, copy, modify, merge, publish, or distribute" to "non-commercial purposes" which is a limit on freedoms 0, 2, and 3. "Free software" actually implies that commercial usage (including commercial distribution, which means selling) is allowed (i.e. you can take a copy of GNU/Linux and sell it, or sell support contracts for it, for example). There are thriving businesses built on top of free software.

Restriction number 4 (which prohibits the user to implement a feature for uploading projects to MIT's website) is a limit on freedom 1 and is in place to ensure that the proprietary MIT version is technologically superior to any derivatives.

Restriction number 5 looks like a sort of copyleft, but the fact that it requires to make source available to "the public" on a public website may imply that the user is not free to make modifications for her own private use. The GNU GPL does not require that source be made available "to the public, on a public website" but merely that anyone who receives a copy of the derivative work also receive, or be offered, the source (i.e. you are not required to distribute derivatives of GPL programs at all, but if you do, you must do so under the terms of the GPL).

Scratch 2.0 is being implemented with Adobe Flash. See:
http://info.scratch.mit.edu/Scratch2FAQ

Adobe Flash is a tightly controlled proprietary platform. In contrast to standardized languages like C, C++, HTML, JavaScript, etc. and nonprofit and community led languages like Python, Ruby, and Perl, Adobe Flash (and associated technologies such as ActionScript, Flex, and Air) is controlled by a single entity that does not answer to any community's wants or needs. Adobe displays their disdain and indifference to the non-Windows-users who have to rely on their plugins and frameworks on a regular basis, for example when they discontinued Adobe Air for GNU/Linux out of the blue.

To any Flash/Flex/ActionScript developers out there - if this is the platform you prefer, by all means go for it. But this is NOT the ideal platform to raise the next generation of the FOSS community on. We need LESS dependence on Flash in FOSS.

PeterClarke's picture

I agree with you. I introduced it at school but quickly reached a programming situation I can't solve ( firing bullets at moving object). Who will train us to adequate level ?