Fun and useful software by
C. Scott Ananian
This page hosts those of my projects which other people actually
use. The other bits are on my Projects page.
Software packages:
2013-present
Since 2013 I have been employed by the
Wikimedia
Foundation, the nonprofit that supports Wikipedia and other
free knowledge projects. The primary software I support is
MediaWiki which
runs Wikipedia and almost all other Wikimedia websites.
All software I've written while employed by Wikimedia is
open source; highlights are on my
Wikipedia
user page.
2007-2013
I was employed by the One Laptop per Child project during 2007–2009 and again from 2011–2013 (as Director, New Technologies). All software I wrote during that period is open source, and is available via dev.laptop.org.
2019-12-27
inkscape-stellation, a software package inspired by George Hart, for making polyhedra stellations.
2009-02-04
JDoctest, an implementation of
Python's doctests for Java, integrated into javadoc.
2008-11-19
Click-to-translate
demo, for future
of OLPC i18n talk.
2008-12-06
OLPC activation
server. This django web app/database maintained records of every
XO-1 manufactured for OLPC, served update and theft-deterrence
requests, and communicated with a secure machine to generate and serve
cryptographic developer keys and activation leases.
2008-12-23
I wrote the OLPC boot
GUI: start up screen and activation lease UI. For size and
efficiency, this directly blitted to the linux framebuffer device.
2009-01-06
The OLPC upgrade mechanism was designed with a
copy-on-write functionality to allow kids to easily undo the results
of their tinkering. (See the original Bitfrost
specification for more details.) Early experiments with the vserver
copy-on-write functionality failed miserably: the races in the code
and filesystem corruption they caused almost scuttled our first
release. I wrote C and Python implementations of a lightweight and
relatively high performance COW system based on FUSE. The source code
is in OLPC's cowfs
git repository.
2008-10-14
The OLPCfs filesystem
is a fully-persistent continuously-versioned filesystem with POSIX
semantics based on content-addressable storage. It was designed to
support OLPC's Journal and Collaboration goals. A specification and source
code is online.
2009-01-08
Olpcfs2
is a scaled-down versioning filesystem based on RCS and cowfs.
2008-12-23
I implemented OLPC's initramfs, which enforces boot-time security and
provides the COW mechanisms used for Bitfrost and upgrades. The infrastructure
is based on debian-installer. The rootskel
package provides most of the actual implementation, with the exception
of the UI code from the act-gui
submodule and the cryptographic functionality in the leases
submodule.
2008-10-16
The journal2
codebase was a next-generation Journal proposal,
described at Journal,
reloaded on the OLPC wiki. It merged the notions of tags and
directories, to create a tag-based file browser that could also
display legacy filesystems (from a USB stick, for example).
2008-10-23
I also contributed to the development of Pippy, the Python learning
environment created by Chris Ball. Among other features, I added
activity-generation ability to Pippy, which then allowed me to make
Pippy self-hosting: you can open the source code to Pippy inside Pippy
with the 'view source' key, modify it, and then create a new version
of the Pippy activity. (pippy
source code.) I also created a library of tutorial
examples for Pippy, based on the Commodore 64 manual which taught
me how to program all those years ago. During a trip to Peru, I
translated the examples into Spanish and used them to teach a crash
course on Python at Universidad San Martin de Porres in Lima.
2008-12-29
I implemented the upgrade system for OLPC laptops in the field. It
consisted of a simple server
based on rsync, file
manifest creation and verification tools, an update
daemon that lived on the XO, and a control
panel plugin for Sugar. The Software update
and olpc-update
pages on the OLPC wiki describe the user-facing side of these tools.
2008-09-23
While employed at OLPC, I adopted and maintained
pilgrim,
the OLPC build image tool.
2007-06-29
Bittorrent fork with support
for unix special files and owner/group/mode information. This can
be used to distribute entire filesystem images over bittorrent. It
was created as a research project for the OLPC updater functionality.
2007-04-09
FLEX, a Java compiler
infrastructure.
Alpha, 2007-03-07
Square Dance Revolution, a
voice-controlled game based on calling a square dance.
2006-12-05
I wrote/maintain the Linux GTK UI
for Bill Ackermann's Sd square
dance choreography program.
2006-10-30
JUtil: a library of parameterized collections
for Java.
2004-01-24
JChirp: a light board application for the
chirp/cheap hardware.
2004-01-24
SinjDoc: a javadoc clone for JSR-14 Java. Also
SinjP, a javap clone.
1998-02-18
PPTP-linux, a PPTP client for Linux.
1997-12-16
Synaptics TouchPad driver for
Linux
1997-10-21
IPfwd, an IP protocol redirection tool.