Developer Platform Proposal
Proposal/plan for developer platform support. We'll use this proposal to schedule tasks for the .5 release, and as a roadmap beyond that.
drivers (ted)
- PyCon 2005 (late March 2005)
- session - here's how you build a sample app with CPIA
- sprint - use the api discussed in the session, on site performance sprint (interaction w/ python core devs)
- OSCON 2005 (late July 2005)
- 3 hour building parcel tutorial
- Kibble Release
- CSG / feedback / validation
- Morgen would like to note that "extension framework" is probably the most important aspect of "developer platform" for 0.5; i.e., without strong definitions of what an extension is, other developers can't participate.
parcel management/deployment (morgen)
- Mechanisms for:
- (For 0.5) enable+disable -- Do we allow the user to temporarily disable a parcel, and if so, what does that mean? A standardized way of stopping a parcel's background tasks? Removing any applicable items from the sidebar? I say we tackle this for 0.5 as part of the "extension framework" umbrella. [1wk]
- (0.7) download+install -- One-click (with user approval) parcel download and install [5wks for this and next two]
- dependency management -- Part of the installation framework, it figures out which other parcels are needed.
- (0.7) upgrade -- Check-for-updates mechanism, with auto-download-and-upgrade; depends on schema evolution support
- (0.7) uninstall -- Remove all items from the parcel's "read-only" portion of the repository. What happens to userdata that was based on schema from an uninstalled parcel? (after 0.5)
extension framework (katie)
- developers should be able to do these things:
- extend content model
- create a scheduled task
- add a network service
- add an action/command
- add a view, customizing generic blocks by noting what attributes to display (detail view/summary view)
- add an attribute editor (used by generic detail view or generic summary table view)
- create a new detail view or summary view block
- hook into chrome: sidebar/menu/toolbar/preferences
- tasks for .5
- attribute editor framework and a set of basic attribute editors
- resolve capplet/kind filter/sidebar issues
chandler as server (morgen)
- (For 0.5) Enable portions of the system to be used outside of the Chandler application; modularize Application.py -- we need this ASAP for things like unit tests, schema doc generator, etc.
- The proposal is to break out much of what happens in OnInit?( ) into callable methods in Util.py (better module name suggestions welcomed) -- a fairly small task that's already begun.
- (Nice for 0.5) Be able to run a "headless"/server version without relying on wxwidgets framework/event-loop
- The proposal is to weed out non-UI portions of the code that depend on wx (such as how cross-thread event posting takes place)
- (Nice for 0.5) Modify the web servlet framework so that it's not Twisted-dependent (allows servlets to be more portable)
- The proposal is to create a thin layer that fits between Twisted and our servlets.
- (Nice for 0.5) Separate repository views per sevlet -- this allows each servlet to commit independently
- The proposal is to automatically give each servlet its own view
tools (ted)
- generic item edit/display - repository viewer
- schema editor
- debugging aids/tools/tips
- interactive query evaluator (twl and donn)
- sane logging (hazmat)
- data migration/upgrade tool (deal with repository version changes)
- schema evolution tool (allow updates to existing content models)
- community driven/assisted
interoperability (morgen)
- (After 0.5) Add a SOAP (or other similar RPC) interface so that outside applications can make use of repository data
- (After 0.5) Add a framework which allows 3rd party developers to write conduits for synchronization
- (After 0.5) Add import/export (to XML perhaps)
apis and documentation (ted)
- Process for API review, design, redesign (0.5)
- Designate api as platform API
- epydoc required
- check whether should be included in an overview document
- Review of new API's
- Prior to changing API, must be reviewed
- Prior to end of release, re-review for changes/alterations
- Documentation
- Roadmaps (leading up to and including Kibble)
- CPIA (0.5)
- Parcels (0.5)
- Repository (0.5)
- Functional specs (taken from design group)
- Architecture
- Overall system architecture document (0.5)
- Architectural principles document (0.7)
- Subsystem overviews
- CPIA (0.5)
- Using Blocks (0.5)
- Building your own Blocks (0.7)
- Content Model
- Description of content model schemas (0.5)
- Principles/guidelines for designing content model schemas to work well with Chandler (0.6)
- Services
- IMAP (0.5)
- SMTP (0.5)
- Twisted / Web (0.5)
- WebDAV (0.6)
- CalDAV (0.6)
- XMPP (0.7)
- Notification (0.6)
- Tasks (0.6)
- Integrating new network services/protocols (0.6)
- Parcels
- Writing, installing, uninstalling (0.5)
- Repository
- Busy Developer' Guide (Items, Kinds, Attributes, Clouds?) (0.5)
- Data model spec (0.5)
- Queries (0.5)
- Transactions/Threading/Views (0.5)
- Import/Export/Backup/Migration (0.5)
- API docs (need to specify which classes, etc)
- CPIA (all)
- Parcels (all)
- Repository (all)
- Tutorials
- How to write a simple parcel (0.5, extended example 0.6)
- Release status / project dashboard (0.5)
sample apps and sample code (katie)
- examples of extensions developers should be able to write
- Morgen's photo (servelts and possible GUI extensions)
- ZaoBao (GUI extensions and service)
- VOIP service
- Address book (GUI extensions)
- Jabber/IM client (GUI extensions and service)
- import/export services (integration with apple address book)
- project management/workflow (GUI extensions)
- document management
- mp3 application
- tasks for .5
- pick a representative sample extension and do a modest version of it for .5, well documented
- set of sample
--
KatieCappsParlante - 23 Oct 2004