KForge Roadmap Rufus Pollock 2004-10-09

KnowledgeForge Roadmap

Introduction

KnowledgeForge is an online digital knowledge community designed for collaboration and reuse. Please see the KForge overview to read more.

Features

The Platform

  1. Users and Projects
  2. Repository system supporting:
    1. versioning
    2. permissions and access control
  3. Database systems (postgresql)
  4. Easy-to-use publication mechanism including automation of 'compilation' to standard output formats and packaging of 'source' data and text.
  5. Project administration system including:
    1. Roles system that integrates with repository system and other tools
    2. Wiki
    3. Mailing lists
    4. todo list
    5. bug/issue tracking

The Host

  1. Bandwidth and hardware
  2. Clear legal framework utilizing Creative Commons licenses
  3. Backup, mirroring etc
  4. A centralized announcement and recruitment system for open knowledge/content projects
  5. Independent of any academic or governmental institution

The Tools

  1. Easy-to-use publication mechanism including automation of 'compilation' to standard output formats and packaging of 'source' data and text. (Piping framework + standard html/xml data format for text)
  2. Knowledge suite packaging framework. (apt-get system)
  3. Basic toolset for KForge users (as well providing a focal point for further development of software tools for knowledge creation)

Design

ISSUE: Major design decision over language and architecture.

can separate into segments. (TODO: nice picture a la Java)

		Overall OKF core project relationship:
			
			--------------------------
			|  K F O R G E  |
			------------| K |
			| O | I | O | F |
			| K | A | K | O | .......
			| P | I | L | R |
			| R |   |   | G |
			|   |   |   | E |
			--------------------------
			
		KForge:
			------------------
			|  KF HOST |  T  |
			| ---------|  O  |
			|   KForge |  O  |
			| Platform |  L  |
			| ---------|  S  |
			|  TOOLS         |
			------------------
		
		OKPR = Open Knowledge Project Registry
		OKL = Open Knowledge Licenses
		IAI = Information Accessibility Initiative
		
		TOOLS:
		
Guis/Editors 'compilers'
(publication systems)
converters other
processors
Data Formats (want to be as extensible as possible .... (of course). This is meaningless without some qualification)

Core Ideas (that cross modules)

  1. versioning (and stable vs. unstable). what does this mean for databases?
  2. Compilation as conversion
  3. Solving the m+n mn problem in data format conversion. don't write a converter for each format to every other format (resulting in M * N converters) try and go through a standard common format (resulting in M + N converters)
  4. plugin systems (how do you write them, how are they best architectured ...

Phases, Tasks and Todo:

Phases

  1. Do research on project management system and work out what would need to be built or customized. In particular examine GForge including installing and experimenting with it.
  2. Versioning and Repository system (probably subversion) with rudimentary user management (name + password). No interface other than that provided by existing clients. Full daily backup and replication implemented.
  3. LAUNCH prototype
  4. Basic project admin system. Roles and permissions. (Maybe integrate into step 1).
  5. Test and debug.
  6. Bug/Problem tracking + todo list
  7. Publishing System implemented for standard approved (text) formats. To solve the MN problem probably need to settle on a core base xml format ...?
    Perhaps want to think of a general plugin system for doing stuff to source ....? Publishing to site, packaging releases etc.
  8. Improve versioning. Ability to add metadata (author, title ...? TO WHAT and WHEN?). Make branching and tagging easy ...

Tasks

  1. Sort out a bug/task system ;)
  2. Set up a chroot system on managed host with gforge installed on it. Experiment with gforge and check out svn integration
  3. Set up kforge-dev mailing list. suggested members: martin keegan, rufus pollock, prodromos tsiavos, peter murray-rust

Resource Needs

  1. Personnel:
    1. sysadmin: 1 part time (RP for time being)
    2. web development: 1 web developer (html, css, php). 1 month for setup and then minor thereafter.
    3. 1 coder (python, java)

Issues

  1. Need conceptually to cleanly separate the host (the place where the knowledge projects are) from the place where the system and tools are developed. Maybe call these the kforge system and the kforge site/community. Weird thing is that kforge system could self host (i.e. development work could be in the same place). This is confusing if on the same machine. So how do we do this? Call kforge the system and knowledgeforge the community ...? dforge the system and kforge the community ...? Or could go for both called kforge but one is .org and other is .net?

    Solution (partial): KForge system run out of gforge (though need to patch for subversion access ...?) Do a preliminary take on gforge

  2. How could someone else get involved? Need to be able to give shell access, kforge access etc etc
  3. Need to get a kforge server up and running. The options:

    codeabode machine sm1 machine new machine
    plus already set up and running for subversion. However no mailing lists etc rp has direct control and access. unlimited bandwidth. 0 extra cost dedicated to kforge so cleanly separate projects. Only put in those programs that are needed by kforge
    minus limited bandwidth. Can't give access to others w/o permission from francis. shared with matthew. what i do affects him. Have to replicate functionality from other machines. would like to centralize. have to rent a whole new machine
  4. What about licensing? If one uses gforge then locked into the GPL (even if one links to the library ... what does that mean). Want to create one's own stuff and that is GPL'd to outside and owned on the inside by the OKF. Is this really feasible? ANSWER: Go for open source licensing (GPL) for this. Everyone you actually write goes under something more liberal initially but when integrated is GPL'd. In fact all code should have a copyright place holder ... Fact is if you want open source coders to participate you have got to make it an open project.

Misc

Repository Wants

Subversion:

  1. Diffing within a line (for knowledge line length may be very long)

Dbs:

  1. How does one version DBs? does one version data or schema. Obviously can just dump to text and then version that .... Db is just another convenient interface to text.