Discussion:
Mango is now deprecated
sri
2014-09-25 16:48:29 UTC
Permalink
Some of you may have noticed this commit earlier today.


https://github.com/kraih/mojo/commit/d1fd06ee12bc9944978c9e495ac592b6bf32661f

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.

http://emptysqua.re/blog/server-discovery-and-monitoring-spec/

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.

https://jira.mongodb.org/browse/SERVER-1594

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
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
Ben van Staveren
2014-09-25 17:01:13 UTC
Permalink
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
2014-09-25 17:21:43 UTC
Permalink
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.
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
Ben van Staveren
2014-09-25 17:27:03 UTC
Permalink
Post by Stefan Adams
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.
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
2014-09-25 17:35:08 UTC
Permalink
Post by Ben van Staveren
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.

--
Ben van Staveren
2014-09-25 18:30:31 UTC
Permalink
Post by sri
Post by Ben van Staveren
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.
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...
Joe Landman
2014-09-25 17:36:29 UTC
Permalink
Post by Ben van Staveren
On Thu, Sep 25, 2014 at 12:01 PM, Ben van Staveren
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.
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...
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.
sri
2014-09-25 17:29:26 UTC
Permalink
The official repo now shows a deprecation message, but of course anyone is
still welcome to fork Mango.

https://github.com/kraih/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
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
s***@alexbyk.com
2014-09-25 19:10:02 UTC
Permalink
Can anybody suggest an alternative solution?
Post by sri
Some of you may have noticed this commit earlier today.
https://github.com/kraih/mojo/commit/d1fd06ee12bc9944978c9e495ac592b6bf32661f
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.
http://emptysqua.re/blog/server-discovery-and-monitoring-spec/
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.
https://jira.mongodb.org/browse/SERVER-1594
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
--
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
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
o***@gmail.com
2014-09-25 20:27:59 UTC
Permalink
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.
Post by s***@alexbyk.com
Can anybody suggest an alternative solution?
Some of you may have noticed this commit earlier today.
https://github.com/kraih/mojo/commit/d1fd06ee12bc9944978c9e495ac592b6bf32661f
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.
http://emptysqua.re/blog/server-discovery-and-monitoring-spec/
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.
https://jira.mongodb.org/browse/SERVER-1594
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
--
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
<javascript:>.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
Ben van Staveren
2014-09-25 20:35:15 UTC
Permalink
Post by o***@gmail.com
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.
perlpong
2014-09-26 21:28:01 UTC
Permalink
Post by s***@alexbyk.com
Can anybody suggest an alternative solution
Dominique Dumont
2014-10-05 16:31:41 UTC
Permalink
Post by s***@alexbyk.com
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
Scott
2014-09-26 15:39:02 UTC
Permalink
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.
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
sri
2014-09-26 17:10:24 UTC
Permalink
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
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
sri
2014-10-04 21:37:29 UTC
Permalink
Post by sri
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.


https://github.com/kraih/minion/compare/e9cf46ac872aa9fd4ec8ed397096fa54565de7c2...817471769f79d10180ce1e48cabc5d0b9ca8d7e0

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

--
sebastian
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
sri
2014-10-04 21:47:10 UTC
Permalink
...with a DBM::Deep based one.
Side note: DBM::Deep is absolutely amazing! \o/

--
sebastian
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
fibo
2014-11-10 09:15:58 UTC
Permalink
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.
Post by sri
Some of you may have noticed this commit earlier today.
https://github.com/kraih/mojo/commit/d1fd06ee12bc9944978c9e495ac592b6bf32661f
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.
http://emptysqua.re/blog/server-discovery-and-monitoring-spec/
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.
https://jira.mongodb.org/browse/SERVER-1594
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
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
sri
2014-11-10 16:35:40 UTC
Permalink
Post by fibo
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
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
Ken Williams
2014-11-10 15:36:02 UTC
Permalink
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.
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
sri
2014-11-10 16:53:45 UTC
Permalink
Post by Ken Williams
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)

http://emptysqua.re/blog/server-discovery-and-monitoring-spec/

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
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
sri
2014-11-11 06:10:54 UTC
Permalink
Post by sri
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.


https://github.com/kraih/minion/compare/v0.39...v0.40#diff-c112bb3542e98308d12d5ecb10a67abcR2

--
sebastian
--
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 ***@googlegroups.com.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
Loading...