As you know, the Oslo details at this point are still very sketchy. Certainly, the idea of a model repository is we've discussed internally, but is also something we want to be very careful with. If Oslo can facilitate our requirements, we would obviously be thrilled to have a platform to build on if it fulfills our requirements. A few random thoughts on repositories. These are my opinion
-
A fully live repository, meaning a system where every model change is immediately available to all users, is not something I'm very interested in. What I need is a system that can give me a clean version of a model, and a way to know that each version is correct. I would limit a versioned 'checkin' of a model to allow only alethically correct models, meaning that there are no validation errors in the model. This setup suggests a 'snapshot' mechanism where models can be edited locally, then submitted.
-
The snapshot mechanism needs to be maintained for easy integration of a model file into an existing development environment. Normal source code control procedures need to be applicable to model files.
-
The notion of external model references needs to be virtualized, with a read-only reference to a version of a model possible directly on top of a repository, or a local reference possible to another model file that may be editable.
-
The repository needs to support not only model versioning, but also metamodel versioning, whereby incremental changes to the domain model can be tracked through the system.
-
The respository needs to dynamically support extensions to a specific model in terms of adding additional domain models to a single model. Note that this is what the extension system does in NORMA (every extension is another domain model), but is not something that is currently easy to do in DSL. In the DSL toolkit, the designers, generated serialization code, and many other parts of the toolset assume that the metamodel is a known set and cannot be extended. This is fine for trivial cases, but not for NORMA or any other system that itself acts as a base for additional plugins.
I'd need to see a lot more spec information on Oslo to have any clue if the proposed repository satisfies these requirements, but I'm hoping it does. Certainly hints like 'integration of modeling into .NET' sound very promising. We're severely limited by the current restrictions of the Microsoft.VisualStudio.Modeling.dll being licensed only with Visual Studio. The core model components, which are the majority of the code, run great without Visual Studio loaded. In fact, our unit testing framework does not load VS. Being able to (legally) run the core model without VS would allow us to load and edit models in other environments, such as for server-side model versioning, Silverlight web UI, Word add-ins, etc.
-Matt