A few days ago I posted that the company I work for, is going to open source all of its software, however I gave very few details. Partly that's because it was the end of the day so I didn't have much time and also because a lot of the details were, and still are, to be decided. But I felt I should follow up with the information I have.
As I said we are open sourcing pretty much everything we have in our source tree, except old versions of things and some blind alley test/experimentation code. Almost all of the code we are releasing has in some way gone towards building our Harmonise(TM) platform. This is a quote from the link back there;
"Harmonise(TM), a suite of software tools, to support the specialist work of designing and implementing information standards and architectures."
The plan is to release the code and supporting material sometime around the week of the 22nd November under the name Open-Harmonise. Within the Open-Harmonise community there will several independent projects and the Harmonise platform, which utilises the other projects.
Examples of sites running on Harmonise
National Curriculum Online: http://www.nc.uk.net/
Design Council: http://www.designcouncil.org.uk
National Theatre: Stagework: http://www.stagework.org.uk
Simulacra corporate website: http://www.simulacramedia.com
Open-Harmonise Key Features
- Complex metadata support. All objects can have any metadata, that is defined in the system with the appropriate Domain, attached to them. This can then be used for searching/matching.
- CMS for XML/link and binary resources.
- Simple Workflow creation and applications.
- Role based security.
- Full versioning of all resources.
- WebDAV interface.
- End-to-end XML publishing framework. XML templates in, XML out, XSLT/FO translation to output format.
- Java, therefore platform independent.
- Only required a Servlet engine, no J2EE dependency.
Here is a quick run down of how we think we are going to split things out into different projects, please remember that these details are not confirmed and that the names of the projects have definitely not been confirmed.
Open-Harmonise - DataStoreInterface
This is a database abstraction layer based around SQL Object representations, e.g. Select object, Update object, Column Reference etc. As part of this project we have implementations for MS SQLServer, Oracle, MySQL and Firebird. It means you don't have to worry about which database you are talking to. This covers both DDL and DML statements.
This is a collection of XML related utility classes, for example an XML printer which includes pretty printing and namespace resolving. One of the other cool items in the collection is a XML fragment parser which allows you to parse and append to a Node some XML which may begin with a Text Node.
Open-Harmonise WebDAV Interface
This is the WebDAV server interface to the CMS. This supports WebDAV, DeltaV (a variant on linear versioning with some workspace features, DASL (WebDAV searching), WebDAV Ordered Collections and a property definition standard that we have created.
Like XML Commons, a collection of utility classes, we couldn't think of anywhere else to put them. E.g. Object Caches, Abstract Pool, URI wrapper, E-mail (JavaMail wrapper), MimeTypeMapping and JDK Logging: XML File Logging implementation.
Open-Harmonise Virtual File System
Pretty descriptive name, this is the API the administration application uses to talk to the server. Includes Virtual File System implementations for WebDAV (see server code description for supported specifications), FTP and local file systems.
Open-Harmonise Swing Commons
You can probably guess what this is all about. All the utility stuff we developed to support the administration application GUI.
Open-Harmonise Server Core
This is the meat of Open-Harmonise, this is the main server code that you actually run a website with. It includes the content objects (Document, Asset, Section, User, Property etc), their database handling code and the XML publishing framework, along with a lot of other stuff. This is dependent on a lot of the other projects listed here.
Open-Harmonise Information Manager
This is the administration application, from here you can manage almost all aspects of an Open-Harmonise server. The same interface is used for content creators/editors, administrators, information architects and website developers.
Heavily Google inspired naming, but basically this is an incubator for projects that are not fully ready for release. We are seeding this with the results from some of our developer research days. This may include;
- A telnet interface to Open-Harmonise server.
- A FTP interface to the CMS.
- A collection of Web Service methods for the server.
- Lots of other little things that we have tried out over the years.
I am going to post some more details, about the whole open source initiative and these specific projects as soon as I can, but that's it for now.