Projects/GaiaBB

From OLPC
Jump to: navigation, search

GaiaBB

GaiaBB aims to be an easily modifiable, localizable peer to peer forum. The idea is to allow kids to create their own social networks, and easily share them with friends (online and offline).

For more advanced users, a key theme is to encourage kids to make code improvements, modifications ("hacks"), new themes, and new localizations. This is how I learnt how to code when I was a kid, and I'd love to create more folks who are able to create new stuff.

What is GaiaBB

GaiaBB is based upon the code of UltimaBB, a fully featured forum. UltimaBB runs a very large forum (Aussieveedubbers [1]). It will be modified to work properly with the OLPC's unique screens, run in a smaller footprint, and integrate properly into the Activities view.

Eventually, there will be a XS server version of the product based upon the mainline GaiaBB code, but the prime goal is to allow peer to peer replication of the database, so kids can manage and work with their forums offline and replicate with their friends when they go to school.

Where can you find GaiaBB?

Our primary development forum is at http://www.gaiabb.com

The development backbone is at Sourceforge

I will likely move GaiaBB to Google Code soon as I prefer their defect tracker, especially now that SF are retiring their bug tracker.

Developers: Andrew van der Stock - more welcome (will require PHP experience) License: GPLv3

You can follow my OLPC/ GaiaBB / geeky technical twitters at Twitter.

Milestones

Milestone 1. Organizational - (Started - Due 31/10/2009. About 50% done)

  • Put in a proposal for two real XO's for mesh testing - Done.
  • Accepted by the project for three laptops (Thanks!) - Completed.
  • Setup OLPC VM on VMWare Fusion - Done
  • Receive OLPCs - Arrived 23/10/2009
  • Establish OLPC wiki project page - Done
  • Revitalize GaiaBB.com to host a blank new forum with links to SF.net dev center. Done.
  • Review and possibly refresh code held in SF.net. Clear bug tracker. In progress.
  • Setup dev bench in Eclipse - In progress. Done.

Milestone 2 - Porting to XO (Due 30/11/2009 +/- 1 month)

  • (Critical path) Figure out how to get PHP to run as a webserver on XO. Current thought is via LightHTTPd due to small foot print. PHP 5.3.0 will be used as the target PHP
  • Refactor GaiaBB to use ESAPI for PHP for authC, authZ, logging, validation and output encoding. Security is vital and this will help reduce line count
  • (Critical path) Refactor GaiaBB to run atop SQL Lite (eliminates MySQL dependancy) via PDO. (This will allow gaiabb.com to remain on mysql, which is important for that VPS)

Of these - refactoring the code to make it safer could be put off, especially if ESAPI for PHP is not ready. But it will need to be done before the end of the project as there's significant poorly constructed code in GaiaBB today that needs refactoring to reflect modern security risks.

Success criteria - GaiaBB runs natively on OLPC 8.2.1 with minimal dependancies

Milestone 3 - Packaging (Due 31/12/2009, ~ holdups with previous deliverable)

  • (Critical path) Create activity for the forum admin / server to allow local management
  • (Critical path) Ensure the server can be seen in the mesh / shared network views
  • (Critical path) Create install mechanism that works within Sugar so that installation is simple as it can be for an empty / safe forum

Success criteria - GaiaBB server installs and runs as per a well behaved Sugar application, visible within Browse and Network views

Milestone 4 - Replication (Due 31/3/2009, ~ holdups with previous deliverable + considerable risk of failure)

Currently, like all forums out there, GaiaBB is a single master database. Replication is likely to be very tricky, especially as I want it to be XO friendly and integrated as possible. This is the key reason for having real XO laptops.

  • (Critical path) Write a web service and admin control panel that allows admins to make their forums visible to other XO users and participate in them.
  • (Critical path) Write a web service to retrieve objects (posts, threads, etc) since last replication checkpoint (might use rsync?)
  • (Critical path) Refactor the schema to move from integer monotonic PKIDs to GUID based PKIDs so that everyone can work separately and replicate later
  • (Critical path) Ensure that replication doesn't allow existing objects to be overwritten without permission (security risks!)

Success critiera - An forum admin can choose to share their forum in the mesh. An XO user can see the forum in the mesh, and connect and authorize with it in a Sugar (BitFrost?) way. Replication works whilst meshed, and offline activities work. Malicious peers cannot destroy a valid forum.

The last one is my biggest challenge. I am leaning towards a changeset approach, where an admin can choose to back out a bad changeset, thus reverting all damage. However, this may be non-intuitive and will need considerable R&D to make sure I choose the appropriate path.

Stuff I need help with

GaiaBB's has about 15 themes today. All of them are for typical desktop resolutions. I need a new theme for the XO - one for the black and white resolution, and a much more compact color one. If you have elite Sugar icon designing skills, I'd love to talk to you. You would not be on the critical path for a long, long time, but I do need about 80 icons created, of which 40 are unique per theme.