Where I attempt to prioritise my feature list, alongside implementation notes...
Beta 2
Stabilise current code to reach beta-2.
Use picocontainer
At the moment the framework has some "shared services", e.g. access to the GUI, preferences, etc. This handled using a Services class and a bunch of static accessor methods to get hold of the shared state.
I don't like this, so am going to switch to using picocontainer
. This will allow more flexibility, and will provide the basics of a plugin API
Build plugin API
I envisage implementing a plugin system as follows:
- Plugins are packaged as separate jars, e.g. with a "plugin.xml" file.
- At startup a picocontainer is created for plugins. This will give them access to the shared services
- Populate that container by using ClassLoader.getResources to load all "plugin.xml" files (which may just be a format that nanocontainer can load). Picocontainer than then resolve their dependencies.
- Beef up shared services, including access to the internal web server.
Implement foaf:Document, foaf:Image, etc support
Try implementing these as plugins. Encourage creation of new plugins to allow addition of metadata about books, films, music, etc, including ratings.
Signing and Encryption
This is a must. I should be able to indicate which information I want public and private, and which communities the private information is published for.
Requires a decent Java PGP library. See Java and PGP for research notes