Mango is now deprecated

1,023 views
Skip to first unread message

sri

unread,
Sep 25, 2014, 12:48:29 PM9/25/14
to mojol...@googlegroups.com
Some of you may have noticed this commit earlier today.


I'm very sad to announce that I've decided to stop maintaining Mango.

And it's not even about the technical shortcomings of MongoDB itself, which have been very annoying at times. Ever since the start of the project, it has been a struggle to get correct information about the wire protocol. Much of the documentation is outdated or missing, so reading the source code of certain well maintained official MongoDB drivers (Python, node.js...) has been the only way to get answers. Every major release of MongoDB has introduced new breaking changes, which are decided behind closed doors, suddenly pop up in a dev release, and require more reading of source code to understand and implement.

Write commands in MongoDB 2.6 were a total nightmare. So i was quite happy when in April of this year a private Google Group for driver authors got started, where information about upcoming changes was supposed to be shared. But since then exactly ZERO information has been shared.


The final straw for me was the release of this monstrous spec a few days ago, which i can only assume is meant to ensure job security for some folks. There would have been a simple solution that only requires this spec to be implemented once, in the core server, but perhaps there are good reasons for implementing cluster management in every driver individually, and i'm just not smart enough to understand them yet.


Anyway, i don't think it is possible to develop a halfway decent MongoDB driver without full-time staff anymore.

P.S.: I'm not sure what will happen to Minion, but i'm currently looking into alternatives to the default Mango backend.

--
sebastian

Ben van Staveren

unread,
Sep 25, 2014, 1:01:19 PM9/25/14
to mojol...@googlegroups.com
Well cock.

Right when I'm about to start work on a new project that uses
Mojolicious, Mango and Minion as the holy trinity of
MMM-so-damn-goodness :(

But I can't blame you. 10gen has gone the route of having had a really
good bit of software, and has now gone all "enterprisey". (For another
great example of this: Splunk).

Oh well. Guess I'll ditch MongoDB from my stack and go see what else is
on offer on the NoSQL front.

Stefan Adams

unread,
Sep 25, 2014, 1:22:05 PM9/25/14
to mojolicious

On Thu, Sep 25, 2014 at 12:01 PM, Ben van Staveren <benvans...@gmail.com> wrote:
and go see what else is on offer on the NoSQL front

Report back, please.  I've been very happy with Non-Blocking Mojo::UserAgent and CouchDB to this point.  I'll admit, I've hardly leveraged CouchDB yet.  Still trying to learn it.

Ben van Staveren

unread,
Sep 25, 2014, 1:27:08 PM9/25/14
to mojol...@googlegroups.com
That's one of my "look at" things. I don't like the way it does certain
things but I guess I'll have to get over that sooner or later. Heck, I
might just go back to PostgreSQL, at least it seems PG_ASYNC works with
Mojo these days...

sri

unread,
Sep 25, 2014, 1:29:26 PM9/25/14
to mojol...@googlegroups.com
The official repo now shows a deprecation message, but of course anyone is still welcome to fork Mango.


I've invested *a lot* of time into the project, and killing it really hurts. But i think it would only get worse with every new MongoDB release. :(

--
sebastian

sri

unread,
Sep 25, 2014, 1:35:08 PM9/25/14
to mojol...@googlegroups.com
Heck, I
might just go back to PostgreSQL, at least it seems PG_ASYNC works with
Mojo these days...

I'm tinkering with something to make this a bit nicer to use with Mojolicious.

--
sebastian 

Joe Landman

unread,
Sep 25, 2014, 1:36:31 PM9/25/14
to mojol...@googlegroups.com
I've been looking at ArangoDB (https://metacpan.org/pod/ArangoDB),
Tarantool (https://metacpan.org/pod/DR::Tarantool), and a few others.
The PostGresSQL changes have had me quite interested as of late, but I
am looking for something much easier/lighter weight to deploy. We are
using InfluxDB for time series, alas it is not general enough for noSQL.

Ben van Staveren

unread,
Sep 25, 2014, 2:30:37 PM9/25/14
to mojol...@googlegroups.com
If you can get it working to the point it becomes possible to wrap as
much of it as possible into something I don't have to look at in my
code, you get extra cake :D

Right now I'm doing something inane with prepping a statement and then
checking pg->ready in a recurring timer that removes itself when it is
ready and trips the callback, but that's got to be the most hideous hack...

s...@alexbyk.com

unread,
Sep 25, 2014, 3:10:07 PM9/25/14
to mojol...@googlegroups.com
Can anybody suggest an alternative solution?


--
You received this message because you are subscribed to the Google Groups "Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious...@googlegroups.com.
To post to this group, send email to mojol...@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

olivier...@gmail.com

unread,
Sep 25, 2014, 4:27:59 PM9/25/14
to mojol...@googlegroups.com
The most sensible solution would be to use the official MongoDB driver for perl.

Though personally, I intend to fork Mango and try to update it to support MongoDB 2.8 and hopefully a good enough replicaSet support.

Ben van Staveren

unread,
Sep 25, 2014, 4:35:20 PM9/25/14
to mojol...@googlegroups.com
On 09/26/2014 03:27 AM, olivier...@gmail.com wrote:
> The most sensible solution would be to use the official MongoDB driver for
> perl.

Which doesn't support non-blocking and as far as I know still requires I
install Moose, the toilet, and the kitchen sink along with it just to
get it going.

Scott

unread,
Sep 26, 2014, 11:39:08 AM9/26/14
to mojol...@googlegroups.com
Sebastian,

Thank you for your work. I think Mojolicious is great. I have learned so much from using it and looking into the code. The non-blocking stuff has been cool to wrap my head around. I just used the monkey_patch from Mojo::Util in a helper and I realize that it is only a small part of the great tools you have provided to get real things done.

The news about Mango is tough, but I understand your reasons. If it was going to take away from Mojolicious development, then it is best for you to move away from it.

I have several sites using Mango which I can port back to the MongoDB driver relatively easily. However, since 2 of them are non-blocking code bases it may take some time. If I stay with the current MongoDB server 2.6, Mango should be fine for a time? The breakage you mentioned should not occur until 2.8?

Postgresql has also interested me of late, but I have putting off looking into it. Now looks like a good time.


Olivier,

Any news in the forum about your progress with the fork would be appreciated.


Thanks,
Scott K.

sri

unread,
Sep 26, 2014, 1:10:24 PM9/26/14
to mojol...@googlegroups.com
If I stay with the current MongoDB server 2.6, Mango should be fine for a time? The breakage you mentioned should not occur until 2.8?

To my knowledge MongoDB has no deprecation policy regarding the wire protocol, so it's impossible to say how long they will keep supporting older versions. My best guess would be as long as enterprise customers are willing to pay for it. The official drivers check the wire protocol and/or server version, and use different code paths to handle them (which is obviously very labour intensive). So Mango may keep working for a long time, break suddenly, and/or perform operations with different semantics and/or slower than the official drivers. One recent example for MongoDB 2.7.x would be the use of commands to get index and collection information, which Mango has not been updated for.

--
sebastian

perlpong

unread,
Sep 26, 2014, 5:28:01 PM9/26/14
to mojol...@googlegroups.com
On Thursday, 25 September 2014 21:10:07 UTC+2, Alex Alex wrote:
Can anybody suggest an alternative solution

For a job queue? I am very happy with Redis::JobQueue.

sri

unread,
Oct 4, 2014, 5:37:29 PM10/4/14
to mojol...@googlegroups.com
P.S.: I'm not sure what will happen to Minion, but i'm currently looking into alternatives to the default Mango backend.

For now i've removed the Mango backend from Minion and replaced the not very scalable File backend with a DBM::Deep based one.


I will also be experimenting with a PostgreSQL backend, but no idea yet where that will lead.

--
sebastian

sri

unread,
Oct 4, 2014, 5:47:10 PM10/4/14
to mojol...@googlegroups.com
...with a DBM::Deep based one.

Side note: DBM::Deep is absolutely amazing! \o/

--
sebastian 

Dominique Dumont

unread,
Oct 7, 2014, 10:01:28 AM10/7/14
to mojol...@googlegroups.com
On Thursday 25 September 2014 22:10:02 s...@alexbyk.com wrote:
> Can anybody suggest an alternative solution?

I've heard people suggesting to use Riak instead of MongoDB.

Riak is Apache 2 license.

http://basho.com/riak/

I've not tried this database.

HTH

fibo

unread,
Nov 10, 2014, 4:15:58 AM11/10/14
to mojol...@googlegroups.com
You could write something more generic, just a layer for JSON ops, and then some way to bind to a database: let the user choose which db, like DBI you know.

It would be fun to write Fango, that is Mango on filesystem, as default engine: see nedb npm package as an example.

Ken Williams

unread,
Nov 10, 2014, 10:36:02 AM11/10/14
to mojol...@googlegroups.com
Can you clarify what the "monstrous spec" is?  I'm coming (very) late to the conversation, but I don't see anything in the SERVER-1594 comments a few days before your post here, other than your own brief comment.  The ticket itself was created in August 2010 and doesn't seem to contain anything resembling a spec.

I'm asking because I'm also a Mongo user/developer (primarily through the Java APIs, but I like to have options open) and I want to make sure I understand your concerns.

sri

unread,
Nov 10, 2014, 11:35:40 AM11/10/14
to mojol...@googlegroups.com
You could write something more generic, just a layer for JSON ops, and then some way to bind to a database: let the user choose which db, like DBI you know.

Or i could just keep happily using PostgreSQL. :p

--
sebastian 

sri

unread,
Nov 10, 2014, 11:53:45 AM11/10/14
to mojol...@googlegroups.com
Can you clarify what the "monstrous spec" is?  I'm coming (very) late to the conversation, but I don't see anything in the SERVER-1594 comments a few days before your post here, other than your own brief comment.

The spec is explained in the blog post i linked to. (Yes, they are using personal blogs to announce official MongoDB Inc. developer resources)


One more data point, on Sep. 26 a company representative once again promised better communication with 3rd party driver authors in the still private Google Group. And once again absolutely nothing has happened since. Personally, i have lost all trust in MongoDB.

--
sebastian

sri

unread,
Nov 11, 2014, 1:10:54 AM11/11/14
to mojol...@googlegroups.com
P.S.: I'm not sure what will happen to Minion, but i'm currently looking into alternatives to the default Mango backend.

And Minion is back in the game, i've just released version 0.40 with DBM::Deep and Mojo::Pg (PostgreSQL) backends.


--
sebastian
Reply all
Reply to author
Forward
0 new messages