Few more observations for you Jeff. But overall, great questions and great feedback!!
ColdBox is not an MVC framework only. It is much more than that and you can choose what you need depending on your approaches, consider it as a set of libraries much like Spring. The transfer orm extras, are that, extras. There a set of libraries that will help you work with transfer. We will also release a set of reactor extras in 3.0 and possibly some hibernate extras for those working with coldfusion/java/groovy integrations. We already have a Groovy Loader project that can be attached to any application.http://blog.coldboxframework.com/post.cfm/groovyloader-2-0-released
Why would I want an MVC framework which is primarily designed to serve HTML applications so tightly imbedded into my model?
The model integration is going to be a standalone library by 3.0 and will be able to be used on any MVC implementation, or non-mvc implementation. It will follow the same suit of IoC frameworks and include conventions, injections by annotations, wiring in of webservices,java,groovy classes, time persisted objects, etc. So at the end, you will not be tied to the MVC implementation. Actually, you are not even tied to it now. The misconseption is that ColdBox is an MVC framework, when it is not. We follow the same pattern of services as Spring offers, same library, same branding, but with tons of services and libraries in use for enterprise development. Again, not all of it is used, loaded,etc. It is a development platform, where you can choose which services you would like to use.
The ColdBox MVC features are one thing, the ColdBox IOC engine is another. ColdBox was not designed as an MVC framework, but a development platform with switchable pieces. Why? Well, because the degree in which ioc frameworks in coldfusion are developed is too slow. Not only that, no documentation, no roadmap, codebase passed on from author to author and tons of overhead for a library that should have simplicity in its domain. That is why we started model integration and will be released as a separate library for IoC in 3.0, fully documented, documented roadmap and features, fully supported, training services and professional services.
If I wanted to put a Flex/Cairngorm MVC framework on top of that model, it would have unnecessary properties and attributes defined on the model objects and potentially not work at all.
Annotation based injection is NOT mandatory. Model integration supports setter injection, constructor injection and cfproperty (annotation) injection. Not only that, we have several applications at work that use cfproperty annotation apart from normal cfproperties for flex integration with no problems. We also have applications where I use model integration and I can easily switch them to coldspring/lightwire by just definining it in my coldbox.xml. Unless you start using the advanced DSL annotations (cache wiring, coldbox services, datasources, etc), your model will never now it is coldbox model integration. These are misconseptions.
Finally, 3.0 will also have other services offered as standalone frameworks:
- MVC
- Enterprise Cache (with multiple backend extension points: ehCache, ColdBox Cache, oracle coherence, etc)
- MockBox (Our mocking and stubbing framework)
- LogBox (Our logging capabilities framework)
- AutoBox (Model integration → Dependency Injection, IoC and AOP, yes AOP)
- Much more announced later.
I hope this offers a better insight into what COldBox is and what it is becoming. We are addressing the most challenging or setup pieces of ColdFusion development. All in sight of simplicity, extensibility and quality. HOpe you enjoy and have more questions!!
Cheers
Luis