Is NoRM Dead ?

193 views
Skip to first unread message

reach4thelasers

unread,
Sep 20, 2011, 9:46:41 PM9/20/11
to NoRM mongodb
- Nobody answers my questions on here
- No code committed since January '11 - and that was a 'note about a
bug'
- No Real functional code committed since July '10

I'm considering moving to the 10gen driver. The learning curve scares
me and I hate to give up LINQ. However, the time and effort LINQ
saves me is wasted trying to figure out how to preform semi-complex
tasks in NoRM, and waiting for answers in this forum that never come.

Sad but true. Time to move on.

Mostafa Anoosheh

unread,
Sep 20, 2011, 10:04:43 PM9/20/11
to NoRM mongodb
Hello,
I think it's true NoRM is dead. :(
I was moved to Mongo official C# driver + FluentMongo (https://
github.com/craiggwilson/fluent-mongo)

Zzz

unread,
Sep 21, 2011, 3:24:46 AM9/21/11
to NoRM mongodb
Agreed... I switched to official driver with Fluent mongo as well.
Much more stable, NoRM really doesn't have any worthwile advantages
over Fluent anymore.

John Tsombakos

unread,
Sep 21, 2011, 10:04:27 AM9/21/11
to norm-m...@googlegroups.com
Hm. I guess that's why there's been no answer to my question either. damn. I guess we'll have to look at alternates too. Hate to rewrite code though...

Zzz

unread,
Sep 21, 2011, 5:44:00 PM9/21/11
to norm-m...@googlegroups.com
Shouldn't be a huge amount of rewrite required really.

John Tsombakos

unread,
Sep 22, 2011, 11:17:58 AM9/22/11
to norm-m...@googlegroups.com
Actually it wasn't too bad, just had to deal with the syntax difference between the two drivers. And it works - where NoRM didn't! (Pulling a document from a GridFS collection would work the first time, but everytime after it would just return 0 length.. even though in the database the file's all there...)

JakeH

unread,
Sep 22, 2011, 1:30:28 PM9/22/11
to NoRM mongodb
Well this is a sad state of affairs. The Norm driver is so much better
than the 10Gen one. 10Gen's lack of strongly typed objects and updates
is a buzz kill. Has anyone tried to create extensions on top of it to
provide these features?

Robert Stam

unread,
Sep 22, 2011, 1:52:46 PM9/22/11
to NoRM mongodb
We would like you to come to like the 10gen driver as much as or
better than any previous one! We are continuing to improve it further
with every release, and feedback from the user community is always
welcomed.

Not sure what you mean by lack of strongly typed objects and updates?
The 10gen driver fully supports serializing and deserializing strongly
typed objects (on Insert, Update as well as Save). For example:

public class Book {
public ObjectId Id;
public string Author;
public string Title;
}

var book = new Book { Author = "Hemingway", Title = "The Old Man and
the Sea" };
collection.Insert(book);

book = collection.FindOne(Query.EQ("Author", "Hemingway"));
book.Author = "Ernest Hemingway;
collection.Save(book);

The 10gen driver does not *yet* have support for LINQ based queries,
but rest assured that it is coming.

Please feel free to provide any additional feedback.

Andrew Theken

unread,
Sep 22, 2011, 2:23:59 PM9/22/11
to Robert Stam, NoRM mongodb
The short answer to this is that I have not been a good steward of the NoRM project.

I have wanted to write a longer piece about the state of this project and it's future, but since that seems to always be just beyond the horizon, I will share some thoughts with everyone now.

I would love for someone to step up and take over maintenance and enhancement of NoRM, as community members did some incredible things with the LINQ provider, fluent mappings, and just creating a generally good experience for MongoDB in C#.

However, as I don't have the time to commit to it, and the official driver has matured and is actively supported by 10gen, it is likely that most people will be served better by that driver.

A dream I once had for this project was that we would eventually roll it over to sit atop the official "low-level" bits in the 10gen driver, but as I've mentioned I have other more pressing commitments.

I don't think any Open Source project is ever truly "dead", because there is a great deal that can be learned from any well (or poorly) written code. I personally feel that we achieved an incredible amount of high-quality features in a very short period of time. This was in no small part due to a wonderful set of supporters and contributors.

Thanks to everyone who has been involved with NoRM over the last 2 years. It's been an incredible learning experience for me, and I truly hope that others have gotten benefit from the project.

//Andrew Theken


--
You received this message because you are subscribed to the Google Groups "NoRM mongodb" group.
To post to this group, send email to norm-m...@googlegroups.com.
To unsubscribe from this group, send email to norm-mongodb...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/norm-mongodb?hl=en.


JakeH

unread,
Sep 22, 2011, 2:31:33 PM9/22/11
to NoRM mongodb
Hi Robert,

Yeah it was a bit of a knee jerk reaction to hearing that Norm was
dead after I just finished integrating a bunch of stuff with it. I
used to think that the 10Gen driver didnt support strongly typed
collections but apparently it does and the serialization support for
the most part is as good or better than Norm's (except for the need
for defining BsonKnownTypes - couldnt this be inferred automatically
using reflection?). The one thing with serialization that I still need
to figure out is does the serialization process support a hybrid mode.
With Norm I was able to extend from the expando class. If a BSON field
could be mapped to a strongly typed property on the class then it
would - otherwise it would be added to the expando's internal property
collection. This is useful for when refactoring changes are done and
some old mongo documents contain references to properties that are no
longer used. Otherwise without using expando as a base class an
exception would be thrown if a property couldnt be mapped.

As far as strongly typed updates - In Norm i can something like the
following: collection.Update(new {_id = 1}, m => m.AddToSet(d =>
d.Posts, new Post { Title = "hello" }));
where as in the 10Gen driver I would need to do something like: var
update = Update.Set("Title", "hello");

It seems like writing a strongly typed wrapper around the weakly typed
Update builder wouldn't be too much work though.

The lack of Linq is a bummer but the Fluent Mongo library seems to add
that functionality well enough.

craiggwilson

unread,
Oct 25, 2011, 9:06:15 AM10/25/11
to norm-m...@googlegroups.com
Hi Jake,
  The 10gen driver is built on .NET 3.5, so the dynamic stuff in 4.0 does not exist yet.  However, it does provide a hook to grab up the extra elements in a deserialized document that don't have a corresponding property of field.  You can read about it here: http://www.mongodb.org/display/DOCS/CSharp+Driver+Serialization+Tutorial.  Search for "Class level serialization options". 
 
  In short, you can use a BsonDocument (or an IDictionary<string, object> I think) to store any extra elements that are found. 
 
  Like any open source project, the 10gen C# driver take community contributions, so feel free to contribute anything you feel would be better.

flyingpenguin

unread,
Nov 30, 2011, 11:21:37 PM11/30/11
to NoRM mongodb
The problem with the official driver is that it can't work in a shared/
medium trust hosting environment...

This is pretty important for small developers. Unfortunately, that
meas that for now I am stuck with NoRM even though it appears to be on
hiatus...

Robert Stam

unread,
Nov 30, 2011, 11:34:36 PM11/30/11
to flyingpenguin, NoRM mongodb
See:

https://jira.mongodb.org/browse/CSHARP-348

In response to recent comments on the JIRA we've moved this issue up
to 1.4 (the next release).

Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
0 new messages