In part 1 of How to Make Activity Designers Happy, I talked about the paradoxical nature of open-source communities in developing countries, flaws in the current default activity development framework, and the urgent need for a new framework that makes activity designers happy.
By happy, I mean that the framework rewards their efforts almost immediately (roughly 15 minutes of effort) and it lets them focus on presentation and gameplay rather than infrastructure. Last time I offered some vague ideas how this framework might function. This time I will provide more details how this framework should work and why.
Building Good KARMA
Before we get too far, let's give this new activity framework a name so I can save us all a lot of excess verbiage. I call it KARMA, because the word is loosely-related to Nepal, my current residence, and I like to think creating open-source learning activities gives an individual good karma. Coincidentally, it is also the first two syllables of Rabi Karmacharya's last name--an individual put a ton of hard work and personal sacrifice into the OLPC project in Nepal.
Let's Ride The Internet Wave
The Internet is the 300-pound gorilla in the software-engineering room it will eat virtually everything, including your favorite desktop GUI framework. All of the IDE's bend over backwards to support coding of webapps, whether it is emacs, eclipse, or even vim. The software industry is making huge investments into web technologies that support the triumvirate of HTML/CSS/Javascript, witness Google's investment in V8 javascript compiler and Apple's investment in Webkit. I speculate that there are many, many more developers working on GUI toolkits for the web browser- such as JQuery, Prototype, Script.aculo.us-than for GNOME or KDE desktop frameworks.
The web will keep innovating at a breakneck pace. We need to ride that wave of innovation.
In the early days of OLPC, we all had a lot of grandiose and impractical ideas. The educational systems of developing countries would change overnight into constructionist hotbeds. Kids would build their own activities, eliminating the need for large investments in content development. A million PyGTK apps with built-in collaboration and "View-Source" key would spontaneously bloom . . . Well, we're older and wiser now. School systems anywhere are not blank slates that we can redraw from scratch using cheap laptops and Etoys. Similarly, we cannot expect thousands of developers to flock to a framework (PyGTK) that is not commercially popular.
Developing Country Developer Economics
As I wrote in Part I, the economics of open-source in developing countries is quite different than that in the developed world. Developers there have ample enthusiasm for open-source but much less time to contribute.
We need to lower the barrier of entry significantly in order to use their talents. In fact, we need to entice non-programmers such as graphic designers. In my limited experience, graphic designers are much better at designing learning activities than programmers. They better appreciate aesthetics and visual story-telling.
Web designers layout their work using CSS and (X)HTML. They implement user interaction and animations using Javascript. They design their work using Photoshop, GIMP, Adobe Illustrator, and sometimes Eclipse. They know the features and dark areas of the Firefox web browser. Sugar infrastructure developers, these people are your customers. We need KARMA to enable them to quickly buidl activities for the XO without having to learn a whole new skillset. From a programmatic point of view, Browse needs to behave as much as possible like Firefox. Any discrepancy will distract activity designers from the more rewarding parts of activity development.
Karmic Components
Well, I haven't actually made up my mind what the core technologies of KARMA should be. I need your help to work it out. Before I get into the technologies, here are my priorities. 1) These tools maximize programmer productivity and 2) are open-soure. Priority #1 is much more important than #2. 100% purely open-source activities that don't exist don't help kids learn. The current pygtk framework is purely open-source but you have to become a unix programmer to use it. As I noted in Part I, the vast, vast majority of programmers in the developing world are web developers and a successful activity framework will allow them to re-use their existing skills and tools.
It was easy to settle on HTML and CSS for the presentation but it is tougher to decide on the scripting toolset and on persistent data storage. Flash handles animations really well and it is easy to integrate audio into the animations. Adobe sells some really nice WYSIWYG tools for editing animation and adding audio. A lot of developers know flash so there is a large pool of talent we can draw from. Did I forget to mention that Flash is proprietary?
Flash Isn't Quite Open-Source
Flash is not _as_ closed-source as other software applications like Windows. The Adobe has published the specification for their SWF file format and the ActionScript 3.0 compiler is open-source. However, the Adobe's development tools such as Adobe Animator, Illustrator, Photoshop, etc. are not open-source. Nor is Adobe's flash player plugin. There is the open-source Gnash player but it does not fully support Actionscript 3 or Flash version 9. Rob Savoye and his team at Open Media Now do a great job but they seriously lack resources. Note: Rob Savoye, please correct my egregious errors.
Javascript Isn't Ready
I put in a good number of research hours into this article. I really, really wanted to find a pure javascript framework that could compete with Flash. I couldn't find one that does. There are libraries like DOJO, JQuery, and Processing.js http://ejohn.org/blog/processingjs/. Unfortunately, there aren't any IDE's that provide WYSIWYG animation editing for these tools. Every try to edit photos from a text editor? It's painful, really painful. So while real programmers use emacs (or vi, joe, sam, etc.), designers use WYSIWYG GUI's.
Sadly, Javascript can't use the Graphics Processing Unit like Flash can. Ouch, it's a pain in the ass to couple animations with sound files. Based on my research so far, pure javascript won't be able to compete with Flash for at least the next several years. Please prove me wrong. Please post a comment to this article linking to some Javascript wonderfulness that pulls even with Flash.
I will continue with the assumption that KARMA will use flash. I will happily revise this article ex post facto if someone in cyberspace points me to a pure javascript solution that makes activity designers happy.
Building Momentum for Gnash
I believe that the best way to increase interest in fully open-source flash is to make Flash more central in the evolving open-source education stack rather than minimizing its role. We definitely cannot wait for Gnash to fully support every feature of the proprietary flash before we begin using it. Open-Source starts when a single developer "scratches an itch" as the proverb goes. It follows then that the best way to bring Gnash up to speed we need to create a nasty, festering sore that irritates the open-source community into action.
Moving the Conversation Forward
Many people will likely hate my promotion of Flash for learning activities. It's OK if you hate me and Flash. I do hope you recognize that we need a more developer-centric activity framework that uses web technologies.
I have a lot more to write about Nepal's experiences developing learning activities and my ideas on Convention over Configuration in sugar activities. I will save those for another day.
Bryan W. Berry is the CTO of OLE Nepal, the Nepali NGO implementing Nepal's OLPC deployments in partnership with the Nepali government.
P.S. The graphic for Karma is actually the sanskrit word for "om" or everything and not the sanskrit word for karma. This is intentional as Om is also the name of OLE Nepal content lead Om Prakash Yadav.
OK, I'll say it...
Too bad flash doesn't run well on the XO, unless you like slide shows instead of movies!!
How has been the XO implementation in Nepal without Flash working well?
It is working fine in Nepal because we are using the propietary flash rpm. Our learning activities are not processor intensive so they run fine.
You have it backwards: you selected Flash as the medium before you even know what the project's requirements are.
That's a certified way to fail.
The right way is to create an EDUCATIONAL framework, and ONLY THEN see what the best way to present that framework is. Perhaps Flash will be needed, after all. Perhaps not.
What I can tell you is that:
1. Flash development is AWFULLY EXPENSIVE.
2. There are very few competent Flash designers when it comes to usability, web standards, etc.
Read this article:
http://www.zeldman.com/daily/0705d.shtml
The last paragraph is very valid:
"Which makes this site a double-edged one from Macromedia’s point of view. On the one hand, it demonstrates how accessible a Flash-based site can be. On the other, it shows how many expensive experts it may take to make a deep Flash site accessible."
Your idea will die quickly if Flash is the solution (I'm not an anti-Flash zealot by any means. I have used Flash extensively and like it very much; I know its strenghts and limitations).
Irv, out of curiosity: after reading Bryan's articles and hearing his requirements and thoughts, what would you consider a viable solution for the situation that OLE Nepal is in?
"Irv, out of curiosity: after reading Bryan's articles and hearing his requirements and thoughts, what would you consider a viable solution for the situation that OLE Nepal is in?"
I have no idea what the particular requirements for Nepal are. As simple as that (yes, I know; some people will pretend they know, but I'm not one of them).
I can tell you, though, that any solution must obey a certain rules that applies to any project:
Determine your project's EXACT scope.
For example, it is very possible that the best way to bring elementary education to most parts of the world is to spend all the energy on developing web-based SIMPLE applications that allow educators to post "drilling" material online.
Perhaps the "secret" is to concentrate on simple, basic, obvious solutions instead of the grandiose dreams of "revolutionizing" education. Rejection of traditional methods of education is plain dumb. Why? Because those are the methods that have provided the best results to this day. Try ANY advanced nation in the world and you will see that it educates its children in a basic, traditional manner (the one Negroponte and a few ignorant followers derided for a while). My point: if a traditional method is good enough for England, Germany, Japan, USA, France, Sweded, Canada and other nations it should be good enough for places like Nepal, Rwanda and Haiti.
Take the above NOT as a "solution" (it is not), but as an INVITATION to consider the task (educating poor children all over the world) from a simpler, fresher, more realistic angle.
Thanks Irv - my sentiments exactly. I got an XO to see how I, as a teacher, can put Direct Instruction curriculum (scripted) onto the machine and use it as a book. Unfortunately I only saw adobe acrobat as the easiest way to get stuff on there and adobe is slow and a pain.
Sometimes "discovery" education can get in the way of learning, especially for kids with developmental disabilities that don't do well. In those cases, a good teacher can do wonders. But have you seen the bulk of texts and teacher guides given by curriculum publishers? Have you seen the costs associated with curriculum.
We can do better, and offer it for free.
Traditional curriculum - it's not just for breakfast anymore.
Irv, you make a good point that we should have evaluated our requirements for a learning activity framework. We actually did do this and I included that in my original draft of the article. Unfortunately, it made the article far too long. I hope to publish it separately in the future.
One of the key elements for a learning framework or any kind of application development is that you can build the software relatively quickly. We found that we develop interactive learning activities at least 3x faster using flash than we could using PyGTK or EToys.
Wow, Bryan. You hit it squarely on the head with this article!
It's what me & the other guys are doing at http://wiki.laptop.org/go/Projects/Flash_Gamedev
Irv, what you're saying is FUD.
1. We now have commercial-grade open source flash development tools and open source tools even from Adobe to create SWFs.
See:
Flashdevelop - http://www.flashdevelop.org/ comboed with the free Flex SDK, http://www.adobe.com/products/flex/flexdownloads/ already gives people a professional production-grade Flash content authoring setup (code-side - Flex Builder is still invaluable though because of its many features like the debugger, etc). For art assets and sound, you can use any other image, sound or .swf vector authoring tool you want.
2. You are spreading FUD. That's a problem with authors, not the technology.
Again, kudos for a great article, Bryan!
Tools like AJAX and Flash are great for the XO, because any content authored with these can run on almost any other platform, thus making development more cost-efficient :)
-Naz
If you want to see a way of using javascript that could compete with flash, you should check out the Lively Kernel project: http://research.sun.com/projects/lively/
It is still a research project, but it has a lot of potential, and it is made by some of the same people who made squeak and etoys.
And do not forget LAJAX, or Local Ajax.
Embedding Databases, Web Servers, App Servers in the Browser
http://cse-mjmcl.cse.bris.ac.uk/blog/2006/04/05/1144270072884.html
This gives you the flexibility of web based AJAX applications.
Whether this will be better than Flash, and whether there will be WYSIWYG tools is another question.
Here is a page with Free SWF tools from the Gnashdev page:
http://wiki.gnashdev.org/Tools
Winter
True, so true, we really need an easy way to make web based activities. I started doing (yet another) geography activity:
http://www.dd.chalmers.se/~mattiaso/XO-Atlas.html
but I got stuck at things such as:
* How can one fix collaboration in a web based activity?
* How to make it translatable e.g. how to make
So when designing this new Karma-framework please include easy ways to get those (and other) functionalities.
//Mattias
Has anyone looked at OpenLaszlo? http://www.openlaszlo.org/
How to make developers happy? I can answer that in one word: documentation.
It doesn't MATTER what your development framework is -- if the prospective content creator can't figure out how to develop his content in that framework then content won't get developed.
Irv, you say,
"Perhaps the "secret" is to concentrate on simple, basic, obvious solutions instead of the grandiose dreams of "revolutionizing" education. Rejection of traditional methods of education is plain dumb."
So do you think that Negroponte is a con man who knows constructivism can't work better, and is purposely deceiving the world? Or do you think that he is a fool who honestly but mistakenly believes it really is better?
Eduardo asks:
"So do you think that Negroponte is a con man who knows constructivism can't work better, and is purposely deceiving the world? Or do you think that he is a fool who honestly but mistakenly believes it really is better?"
I'm 100% certain that Negroponte knows that handing kids a laptop does NOT amount to constructivism.
It has nothing to do with constructivism being or not being better than traditional methods. Don't let the sneaky rethoric confuse you, Eduardo.
So Irv, what do you think are Negroponte's real beliefs and intentions?
Eduardo asks:
"So Irv, what do you think are Negroponte's real beliefs and intentions?"
Selling as many XO's as possible is the stated and demonstrated goal.
That explains Negroponte's decision to get in bed with Microsoft, Intel, Kadhaffi or Hitler, if necessary.
Irv says,
"Selling as many XO's as possible is the stated and demonstrated goal."
Ok, Irv, now let me ask you why he wants to sell as many XO's as possible.
Is it because Negroponte honestly believes that this will help education in the developing world?
Or is it that he knows it won't do that, but wants to get rich and famous?
Or perhaps some other reason or combination of reasons?
It doesn't MATTER what your development framework is -- if the prospective content creator can't figure out how to develop his content in that framework then content won't get developed.
I share your interest in a better authoring environment. The current reality seems to be that most existing educational materials for developing countries is in books that need to be scanned (hence the push for DjVu and unfortunate need for PDFs). Ideally new courseware will be developed as HTML in wikis like wikiversity and Flossmanuals.
That leaves it as static documentation, not dynamic constructivist activities.
You say "It was easy to settle on HTML and CSS for the presentation but it is tougher to decide on the scripting toolset and on persistent data storage. Flash handles animations really well and it is easy to integrate audio into the animations."
You do a poor job of explaining the leap to Flash. Do you mean you want to put interactive multimedia in web pages? That sounds good to me, it means educational materials don't require an XO (anyone can view them in a browser) but you can still deploy them on laptops as content bundles.
But you neglect the additional HTML5 multimedia technologies that Firefox thus Browse implements. The canvas tag, SVG vector graphics, and persistent storage (offline app support), and soon the audio and video tags. Look at the SVG page on wiki.laptop.org page for some nice interactive examples. Flash's lead is diminishing.
Hey S.
HTML5 is still not widely implemented and as with most Javascript-based endeavors, tight integration of sound and video with apps is still not as good as with Flash (try dynamic linked text overlay over videos in Javascript, something like a dynamic subtitle video mashup for example - useful for picking up new languages by watching foreign language films like English with localized subtitles).
Anyway, it's great that the HTML5 spec is moving forward, and as with the case of all chicken-egg technologies, it would be wonderful if more dynamic apps would start rolling out using HTML5.
@skierpage,
Pls see this sentence
"I will happily revise this article ex post facto if someone in cyberspace points me to a pure javascript solution that makes activity designers happy."
i.e. a solution like the one you suggest w/ SVG. Pls go create some kick-ass learning activities w/ animated SVG's and I will reconsider my support of flash.
Well here's an animated SVG that teached children the importance of eating (If you don't eat then you won't grow):
http://files.myopera.com/orinoco/svg/snake.svg
What about Moonlight?
http://www.mono-project.com/Moonlight
It's the open-source version of Silverlight; it provides a well-designed virtual machine that can be programmed with any .NET language (C#, VB, etc.) with a system for visual design (um, I forget what the visual component is called). It's brand new (and possibly unfinished) so I don't blame you if you haven't heard of it.
My impression is that Flash's programming language (Actionscript) and VM were not well designed because their only purpose was to script the visual component, so they are kind of an afterthought. But maybe that's changed with the new version of Flash. And of course it's partly closed source.
Anyway, I've used neither Flash nor Silver/moonlight so I can't offer a meaningful opinion, but I thought it deserved a mention.
Anyone else having trouble getting past the CAPTCHA?