10 ms·
MongoDB Wire Protocol Specification License
- comprev 5y agoA company I worked at was hounded by MongoDB to the point where the sales rep turned up unannounced and talked his way to the dev department. He was quickly escorted off site.
- Diederich 5y agoWow, I'd love to hear more details about this if you can share them.
- deleted 5y ago[deleted]
- belltaco 5y agoWe had a far worse experience. We were thinking about upgrading to the Enterprise edition. The sales reps took all our details and several months later complained to our federal client using the details we provided making bs claims about security of the Community edition and licensing to them. All under the guise of "you didn't respond to us about the price quote". We lost face because of that, although finally the client understood that it was all bs. Stay away from MongoDB and if you have to contact them make sure they sign a strict NDA and don't reveal any details to them.
- vineyardmike 5y agoYikes! This is pretty terrible.
- AgentK20 5y agoWe had a pretty bad experience with our company as well, being bounced along nearly half a dozen sales reps (each of whom insisted on having a meeting) before actually managing to get a quote, which was ludicrously high for the one or two features we wanted. For anyone who IS looking for MongoDB enterprise, just use PSMDB (https://www.percona.com/software/mongodb/percona-server-for-mongodb https://www.percona.com/software/mongodb/percona-server-for-...) instead. OSS version of all the enterprise features of MongoDB.
- jedberg 5y agoThe original version of MongoDB valued speed over durability, which was not a good look for a database. Since then I have never been able to trust them, even though I've been told repeatedly that "they have changed now". They have great marketing and appear to solve problems for some customers, but they also seem to cause major problems for customers. So I'll just keep advocating to stay away from it.
- dabfiend19 5y agowhat does this have to do with the linked article?
- winnie_ua 5y agoWhat this makes to current version of Mongo? Whoch is far more reliable. AFAIK there are soem issues with transactions, especialy in case of sharding. But disregard transaction in has many leverls of write concern. I'm not sure regarding bugs, but it claims to have diferent write concern levels that could suit different scenarios. So AFAIK it is reliable now, if used correctly.
- gentleman11 5y agoAWS benefits heavily from a rich foss ecosystem, but foss systems also makes it easier for users to migrate to similar platforms. If they were to disrupt the foss ecosystem enough, do we enter a world of heavy reliance on proprietary cloud-based systems? If you were intending to create a profitable business, and really wanted your product to be foss, and Amazon might just fork your project, honestly, what are your options? I'm honestly curious, it seems like such a difficult situation
- aks_tldr 5y agoFoss have many licenses, you can choose strict ones.
- gentleman11 5y agoWhich in specific would help here? From a 4 freedoms point of view, where anybody can use or modify the software for any purpose, it seems tricky.
- tpxl 5y agoGNU AGPLv3 Wiki quote: > GNU Affero General Public License is a modified version of the ordinary GNU GPL version 3. It has one added requirement: if you run a modified program on a server and let other users communicate with it there, your server must also allow them to download the source code corresponding to the modified version running there. >The purpose of the GNU Affero GPL is to prevent a problem that affects developers of free programs that are often used on servers.
- hocuspocus 5y agoThe AGPL guarantees the four freedoms and specifically prevents (cloud) companies from running a proprietary fork.
- danpalmer 5y agoThis appears to be the licence for the documentation on the wire protocol, not the actual wire protocol itself. That would be essentially a part of MongoDB itself, or likely as the Google vs Oracle case decided, not something that can be licenced. At least that's my understanding. Am I missing something here? It's fairly reasonable for a company to licence their docs with a non-commercial licence like this.
- yuubi 5y agoThe "You may not use or adapt this material for any commercial purpose, such as to create a commercial database or database-as-a-service offering" language suggests that they think the license covers more than just distributing the document, which I believe is an unusual interpretation of what a spec copyright allows the author to prevent. Lawyer repellent (I hope): The quote comes from https://github.com/mongodb/docs/commit/50e48200cde7e2eaffdc6b726a9cdf2659f0e073 https://github.com/mongodb/docs/commit/50e48200cde7e2eaffdc6... , and anyone who receives this comment may copy it as they like.
- chippiewill 5y agoI think they just stuffed up the wording. I think the whole "can't use it to create a commercial database" means you can't use the document itself (i.e. "this material") as part of your own commercial database offering but you can absolutely adapt the protocol and share the document that Mongo created under the same terms (i.e. share-alike). Because it's already in source form and isn't "compiled in" into a derived form I don't think it has the same potency from an infectious license perspective as GPL does. If you bundle this document as part of your commercial database I think they can't do diddly squat as long as you make clear that the document itself is still under the CC sharealike license.
- yuubi 5y agoI (not a lawyer) understand copyright law to mostly prohibit us from copying the spec document without permission, and then the license provides permission for some copying of the document. I'm pretty sure the authors really want to prevent competing implementations that make money for someone else, and the wording expresses their intent. I believe that copyright on the document won't let them stop a company that can afford decent lawyers from implementing the spec, but it certainly doesn't make me any more likely to touch anything related.
- skunkworker 5y agoThis feels restrictive, especially in comparison to Postgresql. Where you have projects like CockroachDB which utilize the Postgresql wire protocol because of how well documented it is.
- toomuchtodo 5y agoPostgreSQL is organized as a non profit [1], Mongo is a for profit enterprise attempting to stem cloud providers from providing a wire protocol compatible service without compensating them for their work [2]. [1] https://www.postgresql.org/about/donate/ https://www.postgresql.org/about/donate/ ("PostgreSQL is an affiliated project of Software in the Public Interest. Funds donated to PostgreSQL are used to sponsor general PostgreSQL efforts. These funds are managed by the Fund raising group.") [2] https://www.computerweekly.com/news/252455700/AWS-pushes-Mongo-DB-compatible-alternative-as-licences-change https://www.computerweekly.com/news/252455700/AWS-pushes-Mon... ("AWS pushes MongoDB compatible alternative as licences change")
- Spivak 5y agoIf the courts enforce this then this is basically death to adversarial interoperability.
- tyingq 5y agoI assume that's the idea, to try and stop AWS from keeping their "Aurora Like" version of Mongo updated. See https://aws.amazon.com/documentdb/ https://aws.amazon.com/documentdb/
- jrockway 5y agoI think if you know your product is good, you're not too worried about someone developing a drop-in replacement for it. The opposite is also true.
- Yoric 5y agoIt is my understanding that AWS very nearly killed ElasticSearch. If I were [working at] MongoDB, I wouldn't want that to happen to my product, either.
- adambatkin 5y agoIs the wire protocol copyrightable? If not, then this license only affects the _document_ itself, not downstream implementations that may _use_ the document. And if there is a differently-licenses _implementation_ of the protocol, one would assume that it is possible to implement (or just use directly) that implementation without any reliance on this specific specification document. In other words: IANAL but I don't think this will accomplish what they want (which is Amazon re-implementing a wire-compatible-with-MongoDB database) As an example: I (probably) can't scan and redistribute an entire cookbook, but I can bake cookies from a recipe in the cookbook and sell them.
- calvinlh 5y agoIf the "You may not use the material for commercial purposes" clause applies to the wire protocol itself, does MongoDB itself get an exception to that for Atlas/MongoDB Enterprise?
- tyingq 5y agoThe copyright owner/holder can do whatever they want. That's essentially how you're able to have things like Gitlab Enterprise or CockroachDB Enterprise use their open source base in an extended not-open-source premium product. It does require you manage outside contributions to the open source part carefully and get approval for those contributions to land in the not-open-source part.
- laurowyn 5y agoThe license is for the published version available publicly only. There's no reason why it can't be separately licensed to an individual/entity to grant commercial use on a case by case basis. This is no different from negotiating a contract - the license defines the terms under which you are allowed to use the provided software.
- PeterZaitsev 5y agoI wonder if this MongoDB's interpretation of Creative Commons is even correct. Typically restrictions apply to reuse at the specific material not use of the knowledge derived from the material.
- otterley 5y ago"It is difficult to get a [person] to understand something, when [their] salary depends on [their] not understanding it." --Upton Sinclair
- _flux 5y agoDoes the linked license https://creativecommons.org/licenses/by-nc-sa/3.0/us/ https://creativecommons.org/licenses/by-nc-sa/3.0/us/ really mean you cannot read it, and then write a piece of software that implements it? My reading of the license implies it covers _the document_, like a book or a song could be licensed that you cannot modify and redistribute the results, or maybe not redistribute at all: not what you make with the information you gain from reading it. https://wiki.creativecommons.org/wiki/NonCommercial_interpretation https://wiki.creativecommons.org/wiki/NonCommercial_interpre... makes me think the license is about _copyright_, not about what you make with the document. The page also has the explanation about "Explanations of NC do not modify the CC license". Even if the NC clarification somehow held true, then I still don't see how it would prevent someone from writing e.g. a MIT-licensed library implementing the interface (the non-commercial use bit) and then someone else just takes it and uses it for whatever, within the limitations of the MIT license.
- rolleiflex 5y agoI think yours is the widely agreed upon definition of Creative Commons. I am likewise bewildered by their interpretation — it seems that they are suggesting anyone that reads this document is forever poisoned and thus cannot design or implement a Mongo compatible software. To my humble legal knowledge (not a lawyer) that sounds pretty specious at best.
- rubyist5eva 5y agoJust another reason why mongodb is trash - does it even go without saying anymore? Every single company I've ever worked for was crushed by the unreliability of mongo. They're ultra-expensive consulting is also a ripoff - in one case the guy came, suggested a bunch of stuff w.r.t. changing up our queries and indexes, left, then a day later the database exploded and we had to roll back everything he suggested. We tried again piecemeal, which eventually lead to the same thing happening again. Eventually spending the cash to train the engineers and admins to be able to do the tuning ourselves - which ended up being completely different than the garbage the consultant suggested. Let me emphasize that this consultant was from the MongoDB company - not some third party. Completely incompetent company at all levels. Mongodb exists to extort money from idiots on their cloud offering where costs balloon out of control. It was easily 40% of our monthly infrastructure bill and what we got out of it definitely did not reflect that. We refused to pay them. Don't ever give Atlas money.
- danpalmer 5y agoI did my masters research project at university on the issues with MongoDB's distributed consensus protocol (or lack thereof). One of my friends suggested the title "Distributed Cisterns". That said, I think that the wire protocol is probably ~fine for a schemaless document store if that's what you want. I know that Apple implements MongoDB with FoundationDB, so that there are much stronger guarantees behind it, but they can still use MongoDB drivers in various languages, and that seems reasonable.
- nextaccountic 5y agoCan you share the pdf? Thanks.
- rjzzleep 5y agoDifferent author but definitely worth a read: https://jepsen.io/analyses/mongodb-4.2.6 https://jepsen.io/analyses/mongodb-4.2.6 https://jepsen.io/analyses https://jepsen.io/analyses Older discussion for an older version of mongodb: https://news.ycombinator.com/item?id=9417773 https://news.ycombinator.com/item?id=9417773
- jmull 5y agoIt's seems a bit pointless to publish a protocol with a restrictive license. The basic purpose of a protocol is interoperability, yet the restrictive license works directly against that. I also wonder about the reach of this kind of license. It's a license on the published work. So suppose I read this, whole-heartedly agree to the terms of the license, and use it to create a MongoDB Interop framework. I include attribution and release it under BSD. Am I good? I did not use the work for a commercial purpose and provided attribution, etc. Now suppose some commercial cloud provider picks up my framework and uses it to implement MongoDB interop. Aren't they good too? They followed my license. They may not even be aware of the protocol specification, much less have viewed or used it in any way. So what exactly has the protocol specification license accomplished? (I am not a lawyer, so I'm sure I don't understand, but I'd like to.)
- wmf 5y agoThe purpose is probably to allow alternative clients but not alternative server implementations.
- floatingatoll 5y agoIs the wire protocol exclusive to server<->server communication, or is it used for server<->client communication? If the latter applies, then alternative clients would not be any more or less free of restrictions than alternative servers would be. Note that I'm not addressing whether the wire protocol's license affects server/client implementations — that's being discussed in a different top-level thread — I'm only addressing whether a difference could exist between server/client. (I am not your lawyer, please do not treat social media comments as legal advice, etc.)
- gbuk2013 5y agoThere’s the ShareAlike part of the license - presumably that means your derivative work must be licensed the same?
- jmull 5y agoYes, perhaps that's it. In that case, in my scenario I would not be good releasing my library as BSD. To my mind, writing a library according to a specification is not a derivative work of the specification. (I think a derivative work would be something like an annotated version of the specification, or a new specification that adopted parts of the original specification.) But like I say, I'm no expert on this so could very well be wrong.
- gentleman11 5y agoOut of curiosity, why did Mongo get so popular? I used it in university when it was hyped and it was pleasant to get started with. The ability to query your data is so inconvenient though, I switched to SQL and I'm confused about what made experienced developers switch from SQL to mongo in the past. Is it just because you can scale up more easily when your database gets massive? Like NodeJS and many web technologies, almost everything I read about it years ago turned out to be hype and not based on facts (eg, nodejs being faster for large numbers of requests than traditional backends is not true, but it was widely repeated on the first 10 pages of google search results) edit: very well said, thanks for all the replies!
- rapsey 5y agoBecause like NodeJS it has a low barrier to entry. This is by far the most important feature for rapid product uptake.
- mcintyre1994 5y agoI think a lot of it is how easy it is to insert, query and update nested objects compared to a normalised SQL database. I know that Postgres' JSON field has come on a lot in the mean time though.
- mjburgess 5y agoRapid application development. During which, data is naturally hierarchical and schema-less (ie., not defined, changing). Mongo makes it easy just to "save your dictionary" It's really just an "sqlite for hashmaps", and should have remained this.
- fennecfoxen 5y agoMore specifically, it's an mmap()ed series of linked lists of BSON documents, with some relatively simple B-tree indexing, a little journaling, and an unfortunate tendency to drop data on the floor.
- bogomipz 5y ago
- floatingatoll 5y agoHN is reacting as if this licensing change was made today, but it was made back in 2012, when they licensed their specification under a Creative Commons non-commercial variant. Today's linked commit is merely a text blurb reminding human beings of that license.
- w4llstr33t 5y agoExactly. I decided never to use MongoDB after that. I was already gravitating back to relational DBs anyway. MongoDB was nice for fast iteration on new projects, i.e. no alter table scripts required, but in the end it wasn't really an improvement. The data in the DB became hard to manage since different records in a collection could have different fields, due to no consistency or enforcement. Mongoose helped some with that, but then the schema just lived in the application layer instead of the DB. I also found myself needing to do multiple queries to do "joins" across multiple collections, so it ending up being less efficient. There was also the default setting of write and forget, i.e. to not wait for a confirmation that the data actually was written. Who writes a database like that? Performance focused but not data focused. Anyway, I liked the idea of having JS on the client / server (Node.js) / DB, but after some time I came back to relational DBs.
- flowerlad 5y agoCould this be targeted against people who implement Mongodb API without being Mongodb? See https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb-introduction https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb-int...