Software Garden OLPC Home Page

This is the home page for information about the projects Software Garden is involved with that relate to the One Laptop Per Child's XO computer. Right now that consists of one project, the SocialCalc project for the OLPC XO.


Software Garden is involved in the project of Socialtext, Inc., to provide a system based on a new version of the SocialCalc spreadsheet code on the OLPC XO-1 computer which we're calling "SocialCalc" on the OLPC. Eventually we hope to have a complete OLPC Sugar Activity that provides spreadsheet capabilities based on the SocialCalc spreadsheet engine. At this point we have a simple OLPC XO Python program that invokes the OLPC browser engine and loads an HTML file that accesses many of the capabilities of the new SocialCalc version 2 JavaScript code along with a few supporting image files. All of the functionality runs in the browser using JavaScript except for saving and loading to the OLPC Journal, which is done in the Python code.

The goal of the SocialCalc project is to provide a very capable, simple spreadsheet which runs locally on your computer. The main engine is written in JavaScript and is available under Open Source licenses. Much of the code, being written in a common scripting language, should lend itself to examination, reuse, experimentation, modification, and extension.

Socialtext, Inc., is using the SocialCalc code as part of the spreadsheet component of its enterprise-level wiki and Social Networking software. For more information about that version of SocialCalc, and how it is being integrated into a wiki system with multiple distributed pages, access control, and more, please contact Socialtext. Their website is

For the XO, this project is providing a very useful spreadsheet that meets many of the needs of the OLPC. Even in the current state it can be used in a teaching situation. It would be helpful to the OLPC project if XO owners would try out the program and help find any really bad bugs (such as incorrect computational results or data loss).

Photo of SocialCalc on an XO-1

Functionality includes:

In this release, there is a simple UI for modifying the sheet with a formula bar and an editing button bar. There is a simple interface for accessing more of the functionality through tabs. There is support for operations such as fill right/down, setting cell borders, text color, background color, column width, copy/paste/move, insert/delete row/column, sort, etc.

The original SocialCalc 1.1 code, and the wikiCalc 1.0 code on which it is based, is written in Perl. They run on a server or your PC, with some JavaScript support running the browser for editing and other user interface purposes. This new version of SocialCalc is based on new code, mainly in JavaScript, that runs in a browser or other HTML/JavaScript environment like the Gecko library on the OLPC. In addition to the editing, the spreadsheet calculations are also performed in JavaScript. There is no need for a server, nor any connection to the Internet or other computers.

A new release, 0.9.1, is available for developers. It is not available in .xo form yet. This release has code that should optimize the save files somewhat. The sheet extents are more likely to include just the part that has data. Previously there were cases where deleted cells made the program think the sheet was larger than it really was. It also "canonicalizes" the saved data in other ways, such as removing no longer used formats and color definitions from the save file. Some input forms, such as "-", that were incorrectly treated as numbers, are now treated as text. Some other minor bugs were fixed.
A new release, 0.9.0, is available for developers. It is not available in .xo form yet. The main changes in this release, earning it a bump of the version number, is that it much more fully supports localization, especially of text in the user interface. All of the text that is normally seen during operation should now be easily localizable by changing a single file, socialcalcconstants.js. This version also fixes a few minor bugs.
A new release, 0.8.3, is available for developers. There is also a version, 0.8.3g, in .xo format that includes enhanced graphing and that is being released to the OLPC community. It fixes a bug special characters in custom values, such as number format definitions.
A new release, 0.8.2, is available for developers. It is not available in .xo form yet. It fixes a bug with conditionals in custom formats and with the argument prompt for VLOOKUP.
A new release, 0.8.1, is available for developers. It is not available in .xo form yet. It fixes many bugs, and adds lots of new features, including a function dialog box, a link dialog box, a multi-line input dialog box, improved vertical scrolling, improved Format tab with many more formats, Ctrl-C and -Z keyboard shortcuts, and a better UI for graphs and an API for adding graphs.
A new release, 0.7.9c, is available. It fixes a bug in 0.7.9b.
A new release, 0.7.9b, is available. It fixes a few bugs in 0.7.9.
A news feed was started, both as RSS and as HTML. They are the SocialCalc OLPC News Page and the SocialCalc OLPC News RSS Feed. They have more granular information than this list of news.
A new release, 0.7.9, is available. It adds a status bar and color choosers. Internally it has many upgrades from the previous releases that should make commands, recalculation, and redisplay more robust and fix a variety of bugs. It still has the old, primitive graphing.
Added a link to the contents of the LICENSE.txt file to the Licensing section.
Version 0.7.0 released. This adds the rest of the 109 planned formula functions, along with a simple reference listing them, their arguments, and a brief description on the Help tab.

Also posted a new blog post about this version.
Version 0.6.3 released. This adds more formula functions, copy/cut/paste, merge/unmerge, insert/delete row/column, Open Source licensing, sort, and a very primitive graph display. The UI look is more in the style of the XO.
Blog post about this project on Dan Bricklin's Log.
This web page was created.

There is a new 0.9.1 release available for SocialCalc developers. You can use it with a normal browser to try it out here, but you can't save or load.

To execute it with a browser and see how it operates (with no save or load), go here.

To download a .zip file with all of the JavaScript and image components, download:

There is a 0.8.3g version available as a ".xo" file for the XO for running under Sugar. This version includes much better graphing options, initially written by Nicholas Doiron, and is the one most people intend to use on the OLPC. For more information about that, and SocialCalc on the XO and Sugar in general, go to: SEETA: SocialCalc on Sugar

Please report bugs to:

Bugs and update information are often listed on the SocialCalc OLPC News page, which has an RSS feed.

Right now the only documentation is on the Help tab available when running the program. Please read it. There is a copy here online: "SocialCalc 0.8.1 Help Text."

This product consists of components licensed under different licenses. Some are licensed under the Common Public Attribution License (CPAL) and others under the Artistic License 2.0. Check the contents of each file for a statement of the license for that file. The sheet calculation, manipulation, and rendering code are released under the Artistic 2.0 license (the one Perl uses). The JavaScript scrolling and editing user interface code are released under the CPAL 1.0 license (a license approved by the Open Source Initiative that was written by Socialtext based on the MPL 2.0 license) with some limited attribution requirements. The license for the Python code for the Sugar interface (not in the release above) is currently Artistic 2.0.

A copy of the contents of the LICENSE.txt file from the release, with the specifics of the attribution requirements, is available online here.

The SocialCalc code is:

(c) Copyright 2009 Socialtext, Inc.
All Rights Reserved.

The software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the Licenses for the specific language governing rights and limitations under the Licenses.

This code is early and surely has bugs.

The OLPC part of this project has been coordinated by Manusheel Gupta of OLPC with guidance from Walter Bender and others of OLPC.

The Python code for the OLPC XO-1 was initially coded by Luke Closs of Socialtext, Inc.

The JavaScript SocialCalc code was initially coded by Dan Bricklin of Software Garden, Inc., for Socialtext, Inc.
Based in part on the SocialCalc 1.1.0 code written in Perl.
The SocialCalc 1.1.0 code was:

Portions (c) Copyright 2005, 2006, 2007 Software Garden, Inc.
All Rights Reserved.
Portions (c) Copyright 2007 Socialtext, Inc.
All Rights Reserved.
The Perl SocialCalc started as modifications to the wikiCalc(R) program, version 1.0.
wikiCalc 1.0 was written by Software Garden, Inc.

wikiCalc, Garden, and Software Garden are registered trademarks of Software Garden, Inc.
Socialtext, SocialCalc, and the Socialtext logo and Dreamcatcher are trademarks of Socialtext, Inc.
Dan Bricklin's is a registered trademark of Daniel Bricklin.