Revision architecture described, timeline added.
diff --git a/NewDocumentEditor.wiki b/NewDocumentEditor.wiki new file mode 100644 index 0000000..bad33a7 --- /dev/null +++ b/NewDocumentEditor.wiki
@@ -0,0 +1,51 @@ +#summary Tracks progress of the new document editor project. + +<wiki:toc max_depth="2"/> + += Introduction = +The goal of the project is to develop and/or deploy new infrastructure for document editing in Melange. This infrastructure should provide revision control of the documents, displaying diffs between revisions, storing documents in HTML and markdown. MarkItUp! can be deployed as an optional editor. + += Revision control architecture = +I'm going to implement revision control as a separate model. Let's call it {{{Revision}}}. +Entities of this model will contain meta-information about revisions of the current document. The prototype may look as follows: +{{{ +class Revision(db.Model): + revs = db.LinkProperty(db.Key) + public = db.LinkProperty(db.Key) + private = db.LinkProperty(db.Key) +}}} + +{{{revs}}} is a linked list of entities' keys. {{{public}}} and {{{private}}} is a linked list of keys to public and private revisions. Creation date and user info are stored as properties of the documents. The approach with lists allows us to manage revision history at revision creation. And helps to avoid redundant datastore queries. + += Project timeline = +== Week 1 (24 May - 30 May) == + # Dig into GAE datastore (read [http://oreilly.com/catalog/9780596522735 "Programming Google App Engine"], review google.appengine.ext.db, play with the datastore) + # Deploy test Melange instance to appspot.com + # Design revision control architecture + +== Week 2 (31 May - 6 June) == + # Implement revision control + * Implement revision control models + * Hack out views to support revisions + +== Week 3 (7 June - 13 June) == + # Finish revision control + * Implement support for public and private revisions + * Implement revision rollback + * Fix problems + +== Week 4 (14 June - 20 June) == + # Work on diff engine + * Review existing solutions + * Try [http://www.aaronsw.com/2002/diff/ HTML diff] on existing infrastructure + +== Week 5 (21 June - 27 June) == + # Hack HTML diff for intelligent diff computation + +== Week 6 (28 June - 4 July) == + # Refactor views to support HTML diffs + +== Week 7 (5 July - 11 July) == + # Test diffs with revision control + # Fix issues + # Release full-featured revision control before mid-term evaluations \ No newline at end of file