danbricklin.com/log

Background on SocialCalc "2.0" and Socialtext
Socialtext is announcing today that they are adding integrated spreadsheet capability to their enterprise-level wiki, making use of the new SocialCalc code I've been developing with them. This isn't just a repository of separate spreadsheets, nor a separate standalone system like wikiCalc, but rather a full wiki where a page can be either the traditional paragraphs of text or a spreadsheet grid. In all cases, the pages share easy linking between each other, even to the level that the formatted "printed" representation of a named range in a spreadsheet can be embedded in a text page and wiki text and links may be used within a spreadsheet cell. All pages have revision tracking, tagging, change notification, etc.

This is a major milestone in an endeavor that I started three years ago. By the end of the summer the project should be coming out of beta and be generally available to customers.

In 2005, I announced that I had started working on an Open Source spreadsheet called wikiCalc that "combines some of the ease of authoring and multi-person edit ability of a wiki with the familiar formatting and data organizing metaphor of a spreadsheet". This was based on the old model of an authoring system architected like a blogging system. You could take what I was building and run it on your web server as a traditional Perl CGI script or on your PC using a simple local server. I hoped I'd find someone to provide a hosting service, too, for those who didn't want to maintain their own service.

As Socialtext's Ross Mayfield related in his blog post in June of 2006, he and I found that our plans and needs meshed, so we made an agreement for me to work with Socialtext to bring wikiCalc from an early beta to a 1.0 level. With each beta release I added more Ajax-enabled features, slowly moving a very Web 1.0-like interface into a more interactive style. By early 2007 wikiCalc 1.0 was ready. At that point, there were some groups using wikiCalc, and even at least one company building a service around it.

In June of 2007 we released SocialCalc 1.1 which added a major new feature (named ranges) that simplified inter-sheet references, and branded the product with a Socialtext look and name.

At this point we still had a standalone product. The server-based calculation and rendering system, with its own page management code, made it hard to integrate with other systems, including Socialtext's main wiki offering. The spreadsheet editing interface had a simplistic way to scroll, with performance issues when there were more than a few hundred rows of data. The toolbar was tightly integrated with the server support, making it hard to drop into any other system or UI style. It had no undo capability. It was clear that the client-side JavaScript code needed a total re-write.

In August 2007 I embarked on the re-write of the editing code, basing it on the program logic of the original Perl code when possible, with a goal to make a more business-friendly interface with undo/redo, with locked panes horizontally and vertically, and "unlimited" scrolling without the need to do "add row" or "add column". I wanted to be able to handle more of the "real" spreadsheets companies had, including those with more than a few hundred rows, and to look and feel more like what people expected.

As the development continued, it became clear that there were good reasons to implement almost every feature client-side in the JavaScript, including all of the formatting and calculation functionality. This time I was just implemented the spreadsheet part, but not the support software that provides file saving and organizing, user management, etc. There was a goal to make this a "component" that would be easy to add to the main Socialtext wiki system (which already had enterprise-strength versions of that support functionality), and hopefully be useful in other situations, including on the One Laptop Per Child's OLPC XO computer.

In January 2008 the code was coming together quite well, and I also received the "Give 1 Get 1" OLPC XO that I ordered. Sure enough, the early version of SocialCalc "2.0", my new JavaScript component, worked well there. The OLPC people liked it, and asked me to continue to make that into a useable product on their machine, which I am doing. I liked that idea, both because I could be doing good for the world by helping school kids with XO's, and because that would give us a large number of Open Source testers to help make this new SocialCalc code as good as possible.

Around this time Socialtext determined that the SocialCalc code was finally getting to the point where it was ready for integration into their main wiki system. They started that project, with experienced Socialtext developers taking my component and building the interface code and architecting a way to have it seamlessly add spreadsheet functionality to their wiki environment. They also started working on a much more polished user interface for the toolbar and related functionality. I continued working on the component itself, adding new APIs to SocialCalc to make their job easier.

Their work is now to the point where we have beta testers, and Socialtext feels it is ready to announce the coming availability of the integrated product, the result of the vision Ross and I had when we first got together.

- Dan Bricklin, 10 June 2008

© Copyright 1999-2018 by Daniel Bricklin
All Rights Reserved.

See disclaimer on home page.