The JBoss DNA project is building an enterprise repository to capture, version, manage and understand the numerous kinds of metadata used in software systems.

Why an enterprise repository? Plain and simple: there’s so much information and metadata going into software systems that it’s difficult to get a handle on exactly it and to understand what it means for the system. What components, services, schemas, data sources, policies, and subsystems do I have? What are the relationships between them? How does my production system differ from my development and test environment? What’s the impact of a proposed change? How has the system changed over time? What do I need to know to manage and govern the system?

An enterprise repository’s job is to help answer these questions by managing the system’s metadata and making it useful. This metadata takes a wide variety of forms, including data models, service definitions, policies, schemas, messages, source code, data sources, configuration information, deployment information, just to name a few. These kinds of things are what repository folks call “artifacts” – the things that are to be managed.

But managing these artifacts is only part of the problem of understanding the information. JBoss DNA’s approach is to not only manage them, but in effect to sequence and catalog the information’s DNA. So as artifacts are added to the repository, JBoss DNA automatically looks inside them, discovers and extracts the fundamental building blocks of the information, and places that information into the repository. Over time, the repository not only contains the artifacts, but also the artifact metadata and web of integrated and interrelated information contained by the artifacts.

Another goal it to make JBoss DNA ready for enterprise use. We’re building JBoss DNA to be transactional, clusterable, and scalable (and luckily JBoss already has some great enterprise-class ingredients to build with). Large organizations also need to federate multiple repositories. Plus, there’s also a ton of very useful information in existing data sources, applications, services, and other kinds of repositories, so JBoss DNA will also provide a way to integrate all this live information into the JBoss DNA repository without copying it. Finally, we’re going to be building the tools and services that help make this information useful.

We’re building JBoss DNA on top of JCR, which provides an excellent graph-based approach for working with metadata in highly extensible, dynamic, and flexible ways. We’re designing our architecture such that our components either work along side a JCR implementation or sit entirely on top of a JCR implementation, which for us is currently Apache’s Jackrabbit.

Of course, we still have a lot of work to do. Stay tuned for news and updates on the project. I’m planning to cover a lot the features and architecture in upcoming posts. Until then, check out our project page or the project wiki for more details. If you’re interested in participating, post in our discussion forum or drop me an email.

(Originally posted: http://jbossdna.blogspot.com/2008/02/introducing-jboss-dna.html)