QnA on SubSonic
Rob Conery and Eric Kemp are the main developer force behind SubSonic and interest in the project is gaining momentum.
InfoQ editors sent a few questions about the project over and both Eric and Rob responded:
InfoQ: What prompted you to create SubSonic?
Rob: About 95% of all applications built talk to a database in some way. For some reason 95% of all utilities built for Visual Studio and .NET deal with pulling the data from the DB and putting it in the UI. When I first saw the SqlDataSource and GridView in action I thought it was super neat, but broke every DAL convention I'd ever heard of. The ObjectDataSource is a great answer to this, but really why do I want to stick another tool in between my app and it's data? I just didn't get it from an architect's perspective.
I remember reading a blog entry on Fritz Onion's site where he used BuildProviders to work up an object model and I thought to myself "someday I'm gonna work that thing!". That someday came when I was refactoring the Commerce Starter Kit, trying to leverage as much Data access code into the base classes as I could. I was using generics in a way that they probably weren't designed to be used, but in the process I stumbled on a really cool pattern for generating very little code for a full data access layer. When I first got it to work I literally jumped out of my chair, swearing to myself.
I gave it about 2 weeks and tested and tested and when it didn't break or slow down, I remember thinking "I've got something here!". I had been doing some Ruby/Rails stuff at the time, and I had the idea that much of that "love" could be brought over to the ASP world. Although the real joy of Rails is the language Ruby - but maybe someday RubyCLR will be finished (or some other dynamic language package for .NET) and that's when I think SubSonic will come into it's own.
InfoQ: What is the current status of SubSonic?
Eric: While SubSonic has yet to reach its first birthday, it achieved the 2.0 milestone and the end of April, with a rich set of new features that greatly expanded on those delivered in version 1.0.6 in December 2006. Since that time we have delivered three maintenance releases, with 2.0.3 being rolled out just yesterday.
SubSonic is an extremely active project, and is consistently in the top 10 projects on CodePlex, alongside several Microsoft supported projects including the AJAX Control Toolkit, Enterprise Library, and IronPython. While it is difficult to judge true popularity, the anecdotal measures are extremely positive - SubSonic 2.0.2 achieved nearly 2500 downloads in less than three weeks, and 2.0.3 is about hit 400 downloads in its first 24 hours.
InfoQ: What are the sweetspots for SubSonic?
Eric: As a data access platform, SubSonic manages balance the power and speed of datasets with many of the advanced capabilities of ORM platforms without
forcing SQL back on to developers or requiring extensive object mapping exercises.
As a developer productivity tool, SubSonic automates the repeated, mundane processes common to data driven applications, by providing a base that supports the iterative nature software development. Through the automated generation of web-based data manipulation "scaffolds", lightweight and flexible query tools, and a growing library of functions designed to support common business data validation and transformation scenarios, SubSonic lets developers spend focus their time on building their applications, not support subsystems.
InfoQ: Who is using SubSonic?
Eric: Assessing the use of SubSonic is difficult, as we only can only judge from what people share in forums, or post on blogs. However, we do know that the
range of implementations is very broad. SubSonic powers several open source projects like dotnetkicks.com, and is currently, being integrated into one of the top ASP.NET based blogging platforms. It is being used by hobbyists on personal applications as well as in at least a few known Fortune 500
InfoQ: What are the futures for SubSonic?
Thanks Rob and Eric!
Comparison to Castle?
Also, if you want to give your project more exposure, I would suggest getting it listed on directories such as csharp-source.net, ohloh.net, and swik.net.
I am a senior lead developer for my company and we are using SubSonic to power a dynamic survey engine system that will deliver education research surveys to samples of over 100K. Soon all of our web-based survey instruments will be based on this system in addition to our in-house applications which develop the specs for these surveys.
SubSonic is extremely flexible to work with and the time it takes you to get up and running is nil.
Both Rob and Eric deserve some serious brownie points for their awesome responsive nature to the OS community.