Hi Guys,

Just want to quickly give some feedback on the neo4j after some evaluation.

Overall, I like the neo4j a lot, but have decided not to use it.

Probably the primary reason is the tooling around Ruby. Don't get me wrong. The 
neo4j.rb is just amazing. It really is.
I even contributed couple of Pull Requests (and those were accepted).

The problem is in neo4j Java roots. The only option for me was to use JRuby 
(will say a word on REST later).
But unfortunately choosing JRuby is just too troublesome and give much more 
headache comparing to "normal" C/MRI Ruby.

Everything is so much harder (even speed is x times slower). 

On "normal" (MRI 1.9.3) Ruby I run all the specs immediately, after saving a 
file. Immediate feedback.
With JRuby I'd have to wait for almost half a minute. TDD is gone. Not good 
enough. But this is just the first "issues" that I faced.

A lot of other libraries just don't work with.
There are always small walls on my way that I have to break through, that would 
never happen with normal Ruby.
It just gives me a lot of pain.

Unfortunately I couldn't see a lot of value in the REST API either.
The core operations that are taken for granted with native bindings (traversals 
using poor Ruby constructs) would require to execute HTTP request (that's what 
SELECT N+1 in SQL world is).
Or otherwise I would have to wrap all the logic in the traversal queries. It 
would significantly overcomplicate the system with HTTP handling logic.

Also there are no decent HTTP restful clients. The only one is neography - that 
works pretty well, but doesn't give me any abstraction similar to neo4j.rb.
There is also neology. I declare it dead, I couldn't even run tests because a 
dependent gem was removed from the author's own github repository.
So I even had no way to fix any issues there.

Last one - architect4r - good idea behind. But the abstractions are leaky. You 
can't make system more or less performant without resorting to HTTP.
I also did minor contribution to it (accepted PR). But since then the author 
never replied to my tweets, neither he replied to emails.
Maybe he's just sick or something else, but that's what we have.
And there were failing specs all over the place.

So I decided to write another REST library 
(http:://github.com/dnagir/morpheus), but then gave up realising that you just 
cannot have a proper abstraction over HTTP.
(I'll probably kill off that repo).


So all in all, to summarise: I am giving up on neo4j because it forces me into 
Java world to leverage its full power.
I could have agreed on that if I would be a Java dev. But there is nothing in 
this world that can convince me to choose Java instead of Ruby (maybe other 
langs in the future).

But what DO have to mention is the dedication of people around neo4j. Everybody 
tried their best to help.
And that feels like everybody within Neo Technologies has common vision and is 
really passionate and keen to help.
I can't remember any other company that would be so dedicated.

I would really love to use neo4j, but unfortunately I can't do that until it 
will be available as native binding for C Ruby.

And as a lost note, I want to say THANKS to the neo4j community for the great 
and amazing support you all guys give.

Cheers,
Dmytrii
http://www.ApproachE.com




_______________________________________________
NOTICE: THIS MAILING LIST IS BEING SWITCHED TO GOOGLE GROUPS, please register 
and consider posting at https://groups.google.com/forum/#!forum/neo4j

Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to