Richard Bucker

Domain Specific Framework

Posted at — Jan 23, 2012

I’m grateful that Wikipedia does not have a reference to something called a Domain Specific Framework. So I get to define it here.A Domain Specific Framework (DSF) is a set of hardware, languages, libraries, and best practices that make up a software development environment for a programmer(s) for implementing applications larger than “hello world” and of median complexity that does not require too much specialization or edge case libraries.A perfect example of an ideal DSF might be Xcode for iOS application development. What makes it ideal is that it is self-contained and has most everything an iOS developer is going to need to implement, test and deploy an application for an iOS device. A second good example would be JEE (fka J2EE). (Grails, Rails and Django are good examples too)Where I typically get derailed is when super heroes start with a base programming language, maybe they implemented version 1.0 of the application,  and then start stapling on libraries in order to develop a DSF for the team of developers that have been added to the team. These might be called a Custom Domain Specific Framework.There is good reason for avoiding DSF style of application development if an application is going to have a fixed and manageable level of complexity. But when you know that the application is going to expand beyond that in a short, albeit relative, period then a DSF might be a better way to get started.The justification for a DSF like JEE and Rails is huge. These and other DSFs are a basic common denominator for developers. It sets the bar for the conversation and for the development standards. To say that you know Ruby/RubyGems or Java/Maven and can read English is not enough to say that you know Rails or JEE development.I cannot believe I’m about to suggest this but… .NET means something. So does Rails, JEE, Django, and so on. To say “we use java and a hundred other jars” will only add friction to your development lifecycle whether it’s hiring, training, building, testing or deploying. Hey I get it. Not all of the DSFs out there use best in breed libraries. That’s a completely different issue.NOTE: The one important thing I forgot to mention is that when there is commercial potential for a DSF then it’s likely that there is going to be a commercial version… as there are several JEE vendors (IBM, Oracle). Glassfish is an open source late entry but it is certified and I do not remember who owns Jetty (probably RedHat). But the other thing is that there are plenty of books and good online documentation. You cannot say the same for a lot of custom DSF(s).