After years of development, refactoring, brainstorms, projects, fun, more refactoring,... we open-sourced the DaliCore code. DaliCore creates the core for the social networking applications that we developed with LodgON over the past years. Some code and documentation is now available on http://java.net/projects/dalicore and we will be adding more code and documentation gradually.
Most of the projects we do at LodgON have a number of things in common:
- there is often a link to one or more Social Networks (e.g. Facebook, Twitter)
- Users and user-specific information is often key.
- Users and applications often require fine-grained or coarse-grained permissions in order to do some actions.
- Performance, scalability, transactions and other enterprise-features are important.
In order to be able to rapidly develop applications for customers, we created code that we could re-use in most of our projects. That code is DaliCore. LodgON is a long-time Java EE and Glassfish user, and DaliCore is based on the Java EE 6 API's. DaliCore starts where the Java EE 6 specification and the Glassfish implementation (containing Jersey) ends.
I've been blogging about DaliCore for some time already -- see http://blogs.lodgon.com/johan/blog/entry/DaliCore_usergenerated_content_on_top_of_Java_EE. Although it has always been our intention to make DaliCore open-source, it took a long time before we did it. There are a number of reasons for this, and lack of time is probably the most important. It is easy to take existing code, and throw it over the open-source wall, but there is little benefit in this (neither to the creator or the consumer of the projects). Successful open-source projects should be a win-win for both the original creator as well as for the external developers and community using it.
We want DaliCore to be useful for the Java developer community, and we want to be able to enhance the code based on community feedback and contributions. Using the java.net umbrella, we have found a way to deal with this.
The DaliCore code we use at LodgON contains a large number of modules, and lots of information is implicitly known by LodgON employees, or exists on flipcharts, notes, googledocs, internal issue trackers,... . When moving code and documentation to java.net, we try to document and structure the different modules. At this moment, we published three modules:
- dalicore-ejb, containing the core entities (e.g. User, Content, Group, Permission) and the core operations (in stateless Session Beans)
- dalicore-oauth, allowing applications to use (3-legged) oauth and leverage a distributed authentication system
- dalicore-externalnetwork, allowing applications to leverage authentication provided by Social Networks
We added samples with code and some basic documentation for those three modules. We realize we have to add more documentation and samples though. When browsing open-source projects myself, I often try to find the "sample" section first. Next, I look for the Javadoc -- so we added the JavaDoc to java.net as well.
We will be adding more modules in the future, but we already encourage feedback and suggestions. We realize some things might be vague, and we will do our very best to explain things.