| 66 | = Secure Decentralized Wiki = |
| 67 | |
| 68 | Write a wiki in Google's [http://code.google.com/p/google-caja/ "caja"] dialect of !JavaScript. This wiki will load and store data directly on a Tahoe-LAFS storage grid so that it is a full "Cloud App"—there is no server. All computation is done in the user's web browser in caja and all of the storage is done by the decentralized Tahoe-LAFS storage grid. This wiki should leverage Tahoe-LAFS's secure sharing features to offer fine-grained, dynamic, and easy transclusion or client-side mashups. This project is intended to be the successor to [http://allmydata.org/trac/tiddly_on_tahoe the TiddlyWiki-on-Tahoe-LAFS project], which is a wiki written in !JavaScript and hosted on Tahoe-LAFS, but one that has been "bolted on" to Tahoe-LAFS instead of designed for Tahoe-LAFS, and is currently incapable of good transclusions or mashups. |
| 69 | |
| 70 | To get started, play with [http://testgrid.allmydata.org:3567/uri/URI:DIR2-RO:7h7syiurogz5erc2au74tjwguu:h7bdxvjtvidlkcdbld3j2d5sbgyzsbqs7wdnu6yznqrejzssc5za/wiki.html the TiddlyWiki-on-Tahoe-LAFS quick start], read the source code of [http://allmydata.org/trac/tiddly_on_tahoe/browser/tahoe_tiddly/HTTPSavingPlugin.js the !HTTPSavingPlugin] and [http://allmydata.org/trac/tiddly_on_tahoe/browser/tahoe_tiddly/TahoePlugin.js the !TahoePlugin] for !TiddlyWiki, and experiment with [http://caja.appspot.com/ writing live caja applets]. |
| 71 | |
69 | | There are a lot of applications that could potentially make good use of Tahoe-LAFS replacing the typical centralized storage of flat files or SQL databases. Currently supported projects include [http://www.tiddlywiki.com/ TiddlyWiki] (one of the Tahoe-LAFS developers hosts his blog using [http://allmydata.org/trac/tiddly_on_tahoe TiddlyWiki stored in Tahoe-LAFS]), [http://hadoop.apache.org/ Hadoop], and [RelatedProjects a number of others]. |
70 | | |
71 | | There are still many useful and interesting things that have yet to be built using Tahoe-LAFS. Perhaps the most promising is in the area of web applications; what applications can you think of that could make use of a highly reliable filesystem accessible from both desktops and [http://github.com/ctrlaltdel/TahoeLAFS-android handheld devices]? Keep in mind that Tahoe-LAFS's architecture allows sharing and delegation opportunities that are difficult or impossible to implement using other backends. Some ideas people have suggested include a calender or photo album, or porting Mozilla's [https://bespin.mozilla.com Bespin] editor). |
72 | | |
73 | | Nathan Wilcox wrote most of interactive tree browser frontend in !JavaScript (see [wiki:RelatedProjects the RelatedProjects page]); Toby Murray wrote [http://allmydata.org/pipermail/tahoe-dev/2010-March/004137.html a front-end in Cajita]; what interesting ways might this be extended? |
74 | | |
75 | | This is in some ways the most interesting area for development as it combines security and distributed systems problems with providing a user interface that lets a person who isn't particularly security minded operate safely by default. This is a hard problem, but offers great rewards in terms of learning, and even the ability to break new ground in safe-by-default interface design. |
76 | | |
77 | | Required skills: HTML and !JavaScript for web applications. For other tie-ins, will depend on the base project (for instance porting the git DVCS to run on Tahoe would good C-fu, with git experience helpful). |
| 76 | Invent your own Summer-of-Code project by building a new web app on top of Tahoe-LAFS. The [#SecureDecentralizedWiki Secure Decentralized Wiki] is one example of a Cloud App. See [wiki:GSoCIdeas/CloudApps] for other ideas. |