Taking the open source road - Announcing Frog.NET

Friday, October 02, 2009 9:12:29 AM (Romance Standard Time, UTC+01:00)


Having worked with database applications for many years, I have come across a number of different object-relational mapping strategies and tools. However, most of them has had built-in design issues that caused me to dislike them after a short while. One of the latest was Castle ActiveRecord.

Fortunately - in the software industry - if you dislike something, you can code your own solution. After a talk with my colleague Lars Thorup and some inspiration by Christian Liensberger I decided it was time to create something that was simpler, more flexible, more testable and promoting better design. Frog.NET was born, and is now an open source project hosted on Google Code.

We have been using Frog.NET on an internal project for a couple of months now, and it has been great to get rid of some of the problems we experienced with Castle ActiveRecord.

Check it out here: http://frogdotnet.googlecode.com/

By Sune Gynthersen
Monday, October 12, 2009 11:26:17 AM (Romance Standard Time, UTC+01:00)
Thanks for sharing - checking out the code as I'm writing this.

One question though: what was the motivation for writing your own ORM? I can understand that Castle's ActiveRecord might be limiting in some scenarios but why not use NHibernate directly without the AR abstraction layer?
Monday, October 12, 2009 11:35:11 AM (Romance Standard Time, UTC+01:00)
does it support LINQ?

where is the rest of the documentation?
Thelonecabbage
Monday, October 12, 2009 11:41:38 AM (Romance Standard Time, UTC+01:00)
Honestly, I disliked the learning curve of NHibernate. Defining and changing mapping files certainly isn't my favourite activity.

Also it seemed that just a bit too much magic was going on when using NHibernate :-) We experienced a couple of scenarios where much more data was fetched, than was actually needed - partially because of ActiveRecord though.

I certainly think the beauty of POCO classes is compelling - on the other hand, adding a few attributes is a trade-off I'm willing to make, in order to keep things simple.
Sune Gynthersen
Monday, October 12, 2009 11:47:27 AM (Romance Standard Time, UTC+01:00)
Thelonecabbage: Depends on what parts of LINQ you are refering to :-) You (usually) get IEnumerables of some object type from the database, meaning that you can use all sorts of LINQ extension methods.

Documentation is here: http://www.bestbrains.dk/frogdotnet/
It's still in an early stage, but feedback is appreciated :-)
Sune Gynthersen
Monday, October 12, 2009 11:55:43 AM (Romance Standard Time, UTC+01:00)
Looks like this is doomed to fail. Imho there is nothing new. It's more or less just the same old orm. What's the catch?

Needless to say, people are currently moving away from simple ORMs. Content Repositories with standardized APIs like JCR looks like the way of the future. In MS platform there isn't JCR compliant implementation, but SharePoint might be the standardized repository for .NET applications in the future. Also the NoSQL movement is raising their heads with cloud services supporting the ideas alternative to SQL. Document DBs (XML DBs), Graph DBs, Key-Value Stores, etc. A Repository can abstract the underlaying storage engines - ORMs are too tied to storage engine. Well, you can always build repository abstraction on top of ORM (or ORM can help building one).

But don't let these words slowing you down. Who knows, you will come out with something beautiful in the end. It's a long rocky road to walk. First steps are usually easy.
bungle
Monday, October 12, 2009 12:19:24 PM (Romance Standard Time, UTC+01:00)
Bungle: I appreciate your concerns and partially agree with them. First of all, success/failure is a matter of definition. The code was written for a project that needed to get rid of AR - from that perspective it has already succeeded. As a side-effect it is also open source. I agree that ORMs are really to too tied to traditional relational database (hence the abbreviation). This is also true for Frog.NET - but currently I don't see any need in any of our projects for XML-DBs, Graph DBs, etc. The same holds true for supporting cloud storage.

Thanks for the feedback!
Sune Gynthersen
Monday, October 12, 2009 1:05:48 PM (Romance Standard Time, UTC+01:00)
Hi Sune

I share your frustration with a lot of the existing ORMs out there. I am currently using SubSonic for a project I am working on, you might want to take a look if you don't know it already..

http://subsonicproject.com/

Have a nice day!
- C
Claus S
Monday, October 12, 2009 1:09:07 PM (Romance Standard Time, UTC+01:00)
Hi Claus,

Thanks for letting me know - I will take a look at it!

/ Sune
Sune Gynthersen
All comments require the approval of the site owner before being displayed.
Name
E-mail
Home page

Comment (HTML not allowed)  

Enter the code shown (prevents robots):

Live Comment Preview