Personally I'm really glad we didn't go that route. ReQL is an amazing, well thought out language. You could make the same argument about Mongo should have emulated SQL. In practice other factors dominate.
Mongo already had "won" the NoSQL battle. So if rethink had made it compatible with mongo's query language, I can imagine that when Mongo was getting all the bad-press many would have jumped their backend to Rethink, without having to worry about modifying their application.
Of course, this is with the benefit of looking back, but the parent's hypothesis has legs.
What are you talking about man? There are tons of successful NoSQL databases with non-JSON query syntax. Neo4J, Redis... should I continue. I never missed this format using ReQL and it would be a bloat to support both in parallel.
Exactly. RethinkDB had basically the same traits as MongoDB, with real-time features as a bonus. It was never really competing with other RDBMS (that support transactions, etc.), it was competing directly with MongoDB.
MongoDB is like the Microsoft of operating systems. Well promoted and easy to get going with. Hopefully they use the money they have to rewrite MongoDB to be better.
Okay...but if Rethink couldn't make their business self-sustaining, why would Mongo when there are a plethora of other open source databases/datastores that can do Mongo's job better than Mongo?
EDIT: We'll just wait for Mongo to burn through all their cash then.
Because having the better product (often) doesn't matter: see Windows vs Apple in the early days.
Mongo has a strong community, which translates into a plethora of articles/blog-posts/tutorials/etc that secures its niche. From there it's possible to make money with things like consulting fees to help fix the problems it created in the first place.
It's all about execution. Case and point: I know what (purportedly) makes MongoDB special. I have no idea what RethinkDB is supposed to do, other than store data. Yes, I could check their site, but the point is I'm already familiar with Mongo's reputation. All of this contributes to a lesser product winning over a better one.
Well, real streaming queries, not just oplog tails for starters... a document database with the ability to do on-server joins. There's a few other things, but those are the two biggest ones over most others in the same mold... All that applies to Mongo, applies to rethink.
Oh, yeah... and the ability to do shard + redundancy, where mongo you're either or have to do both. So scaling works a bit better. The admin tooling for rethink is better than anything I've really used in non-sql databases. And frankly even better than db admin tools, including sql based ones.
It's just a really great, stable database with really good scaling for the majority of use cases.
At my last workplace, I finally asked: "Since you guys bitch about mongo so much, why do we use it? Why not something else?". Response: "It's not actually that bad, it does the job".
Half the crap people speak about Mongo seems to be from either the early days, or from people who just like to complain. It certainly has it's issues, but there doesn't seem to be much community will to replace it with $superdupernosqldb.
Despite some of it's crappiness MongoDB actually has a bunch of features that other databases (such as PG) don't such as easy to set up sharding and replication.
We run Mongo side by side with PG, and even though the PG is just replicated and not also sharded like our Mongo cluster is, Mongo was more easy to configure.
I think MongoDB's biggest problem is that it was marketed as the general purpose DB in the Node.js community when actually it is a specialised tool. So now you have thousands of developers wondering why they're on this weirdly behaving document store when they could've scaled fine on something more generic like PG.
More on topic: RethinkDB was aiming to be the best of both worlds, generic like PG yet document oriented and horizontal scaling like Mongo. I think their problem is that they didn't manage to pierce the communities. It would have gone better if they had evangelists for every major platform that just produced a stream of blog posts, small open source projects and tools and crashed random meet ups.
MongoDB is killing it in the Big Data space right now with excellent integrations with Spark and Hadoop, strong relationships with Hortonworks and Cloudera and really good enterprise support. I know many Fortune 500 companies and equivalents overseas who are customers.
But please enlighten us poor fools which open source databases can compete with MongoDB in this space. It sure as hell isn't PostgreSQL.
Yes. Enterprise companies are paying for it many you would know e.g. eBay, LinkedIn, Adobe etc.
In Big Data specifically when we are spending tens of millions on Hadoop/Spark/NVidia clusters buying a few extra licenses for MongoDB is nothing. And what makes Big Data even more compelling for database vendors is that often by law or for privacy reasons we are forced to run everything inhouse i.e. strictly no cloud.
Most of the the points are for issues that were fixed years ago and then you get classics like "forces the poor habit of implicit schemas in nearly all usecases" as if some developer is going to somehow stumble on the fact is it a schemaless database.
It's like trying to say "Linux is shit" because of issues found in 1.0 of the kernel.
Normally when things are citing @aphyr, I tend to give them some weight, but even aphyr's post is rather old. Thanks for the heads up, I'll do more investigation before posting the link again.
Most of those points are fearmongering, outdated, opinions, or improperly cited. Every database has problems. Mongo has more than most. But I honestly think people dislike it so vehemently primarily because they've monetized so strongly.
I believe this is because the Node.JS community still recommends MongoDB as the perfect database engine for their projects. There is even a name for their stack — MEAN, MondoDB + Express.JS + Angular.JS + Node.JS — which is kind of ironic because considering the rapid evolution of the JavaScript ecosystem having an acronym like that will make no sense in a couple of months since now people prefer React-like libraries / frameworks. Besides the JavaScript community I don't know of any other that enjoys to use MongoDB — which to be fair it's not that bad for what it offers, but you know — or ships it by default in bundle installers which are preferred by many young and/or newbie developers.
Regarding rapid change, I've just come off 90 minutes of troubleshooting, whose end result was "upgrade npm to latest". I've never before used a package manager which had to be so often upgraded to solve issues.
MongoDB is very popular in the Big Data and IOT spaces.
In most enterprises around 2/3 of the data in the lake is unstructured and comes from multiple systems we don't control or have visibility into. So it just gets dumped into HDFS until someone creates the relevant HCatalog schemas. Having a database like MongoDB at least allows you to extract and access some of the data in an automated fashion e.g. JSON reflection. It's especially useful for adhoc and lightweight model scoring and feature engineering.
FWIW I've been in the Node/JS community for a few years and I've honestly rarely seen MEAN or Mongo be mentioned outside of blogs and corporate Hackathons (where Mongo is usually a sponsor). Maybe companies use it (I rarely pay attention to what people do with Node at companies) but I'll bet it's because of "hype" and its apparent popularity. Most JS devs I follow or talk to use a SQL database and dislike Mongo.
I'm somewhat frequently exposed to absolute beginners and MEAN does occasionally pop up as one of the various flavours of "I picked a thing before learning the language, now what?".
Other popular contenders are similar "full stack" or "full featured" solutions like Sails, Meteor and Total.js.
This is generally a result of beginners to Node trying to find something that does everything instead of spending some time learning the basics with a library like Express and going on from there.
Why not PEER? It's catchier, a common English word, and even kinda fitting given RethinkDB's distribution capabilities. And it has much nicer connotations than the MEAN stack.
Don't laugh -- there's now a thing called MERN, which is basically MEAN with Angular replaced by React.
The entire sell of MongoDB in the Node community seems to be "it speaks JavaScript and you can store objects in it". Which of course fails to take into account any of the strengths and weaknesses of MongoDB (in the latter case especially the lack of cross-collection transactions or fast joins -- which in my experience account for 90% of the problems Node developers face with MongoDB).
The main reason MongoDB is popular in the Node community is that both reached peak hype around the same time. So it made perfect sense to bundle both of the "hottest" technologies together. Except by the point Angular 1 reached peak hype MongoDB was already facing criticism, so MEAN mostly seems to bask in its afterglow.
If you had asked me last month, my prediction would have been a RethinkDB+Node+React (or RethinkDB+Node+Angular2) stack popping up to challenge MEAN, though the RethinkDB+Node bit seems to have already been addressed by Rethink's own Horizon.
Could be worse - might be ANGER - Angular.js + Node.js + Grunt + Elixhir + RethinkDB. That might even live up to it's name! Though I guess you could always go full tilt towards insanity and choose MongoDB + Angular.js + Node.js + Grunt + Express.js - MANGE.
I hope this isn't true. Having worked at/on multiple competitors I have nothing but respect and admiration for the work the RethinkDB team has done to make a great database and development platform.
This was real technology! I'm truly sad that the environment is such that great work like this can't continue to be funded.
Thanks for showing everyone how to write amazing documentation, caring about the fundamentals, and for the incrediblly snazzy admin panel.
Non profit companies still need to make money to keep the lights on. That means targeting technologies that can attract lots of donations. Databases are a very mature technology so the number of companies running into issues with them is vanishingly small. Who is going to donate to a non profit spending its time developing a solution a problem almost nobody has?
I don't know, I feel like lots of people donate to universities to spend their times solving problems that almost nobody has. Or maybe they don't, but somehow that money still exists. How does that work?
Why are we assuming that everything has to be done by companies? What if we establish a National Science Foundation for fundamental CS research?
Or maybe they don't, but somehow that money still exists. How does that work?
This isn't that difficult of a question.
1) Universities get money from the students who pay tuition and fees for their education.
2) Universities get money from wealthy benefactors who donate their money to a cause they believe in.
3) Universities get money from for-profit companies that have sufficient commercial success to invest into research and such for what they hope will be later commercial benefit.
4) Universities get money from people who confiscated the money from other people, under threat of force and who might not have given it otherwise, and give it to a cause they believe in.
Not necessarily in that order by whatever measure you may choose. Note that, In no case did the wealth magically just appear. The wealth to consume was produced somewhere by someone.
Sounds like you're proposing 4 as you imply that the we that is not the companies won't be trying to create the wealth you want to use in your cause.
Not sales. Marketing.
In today's world having someone push a new database for a hefty price is not going to work. I would need to be able to test it against mongo and decide myself that it is better... but how would I know it's even an option?
> Is sales just the high-touch end of the marketing continuum?
IMO, no. Sales and marketing are pretty different things.
Marketing isn't "sales without people", and sales isn't "marketing done in person". They target different problems, and you may need one, the other, or both to be convincing, depending on the product or service.
Marketing has always been a bit vague. Some definitions of marketing subsume the entire purpose of a company; for example, one definition is "identifying, anticipating and satisfying customer requirements profitably" - this could be used as the definition of a business enterprise.
IMO marketing is all about getting a good fit between what the company sells and what the market outside the company wants. It could be creating demand, so that the market changes to fit what the company creates; or it could be shaping the company's offerings to what the market is asking for; or it could be advertising, to make the market more aware of how the company's current offerings are a good solution for what the market is asking for. One way or another, it's about bridging the gap.
Sales is the process of completing profitable transactions. It's typically high-touch, one to one, and involves taking prospects, qualifying them, figuring out what they need and how the company's current offerings solve that problem in a personalized way, and managing the process to completion, and potentially further to upselling in the future. It's a pipelined process and is ultimately a numbers game, where the odds of proceeding to completion depend on both the value proposition and the salesperson's skill in communicating it.
You build a great product. Now what? How do you get users?
The next step is marketing. Unless your target market is so tiny you or your sales team can do a direct outreach.
Gaining users and customers is extremely difficult, often unpredictable and potentially expensive. While a bad product/technology/service can set you back there is no guarantee the best will get you success. Users can be unpredictable and the adoption curve for anything new is long.
Sometimes marketing is earlier in the market identification and product building stage so you know the market you are going after, gaps, segments and the value proposition to customers or users. This is product strategy. You can completely botch this step and expend effort on a product/service that is not clearly differentiated and has no market case.
B2C (business to consumer) marketing typically use large budgets to reach a wide potential customer base using traditional advertising channels, and now online and social channels. Even 'lucking' out with hype, viral marketing and rapid adoption requires someone or a team to fuel this hype.
B2B (business to business) marketing is more hands on and about building a predictable pipeline for your sales team to target and close. In some b2b business the sales cycle can be hugely long and expensive and the cost per lead and opportunity measured in thousands of dollars.
Back in 2014 I was consulting FoundationDB on marketing and customer acquisition. After FoundationDB was acquired by Apple, I got introduced to RethinkDB and was excited about the prospect of helping market another promising DB company.
Unfortunately, after a short while I stopped hearing from them. It doesn't look as though they ever brought in any marketing help since then.
I have always wondered why there isn't a tech company that just does kick ass documentation for companies. Seems like a small group of people who make kick butt stuff in this area.
Really, you did have fantastic documentation, as the original said. Kudos.
The documentation is all maintained in Markdown and built with Jekyll, so it's pretty straightforward. There were a few custom Jekyll tags. For writing, I used the venerable Mac editor BBEdit; obviously any text editor can do a fine job here, but there are some subtleties in BBEdit I liked. Its "open file by name" command can open multiple files with the same name at once, for instance, and its find/replace functionality goes above and beyond the call of duty.
For books/guides, it's hard to say. Find documentation you like a lot and think about what makes it good--the organization/taxonomy is really important to pay attention to, as well as the tone (formal, conversational, weird, etc.). As shocking as this might be around here, the _Microsoft Manual of Style_ is useful as a specifically technical guide, and it's good to have a relative recent edition of the _Chicago Manual of Style_ kicking around as a reference. And, just being familiar with standard grammar and punctuation rules is important. A lot of people aren't. (A lot of people who aren't still think they are.)
Yea, it's pretty much feature-complete (as far as I'm concerned) at this point, major performance issues were addressed, and the documentation is excellent. The project itself is in fantastic shape. They even added Windows support half a year ago.
This is what I thought was the best detail of all this. I don't know the details so this may not be totally accurate, but it sounds like they didn't just shut down and let everyone fend for themselves. Looks like they helped make sure all their employees were taken care of. Too many employers just throw their employees by the wayside when the business goes south. So kudos to them for taking care of their folks.
Sell support contracts. Kind of similar to MongoDB's strategy, but they were too late to the party. Also the "support" open source business model doesn't always scale well and works better when the product quality and documentation isn't so first rate (like Rethinkdb's is).
I've always found that to be a perverse incentive model. I don't know how to do any better though. Maybe shaming companies that use OS projects heavily into donating? Not really sure how to scale that either.
I currently pay someone else to host a rethinkdb cluster. I'd rather pay rethinkdb.com to do that, but they didn't offer.
I am sure they considered it and figured it wasn't a good model for them. It is unfortunate that I have (with much pleasure) used rethinkdb in several projects, yet haven't had a chance to pay them for a service that would be useful to me.
As I understand it, running a SaaS business is a huge undertaking in itself, so doing that while maintaining an open source database can be daunting and -- like any business -- risky.
As far as I can tell the codebase is designed to be as opaque and complex as possible. Any normal organisation will pony up the fees (between $1000 and $5000 per annum - https://cms.orckestra.com/Products/Plans) rather than try to really get their head around it.
Very sad to hear, but hopefully the software will continue to be developed in an open source format.
Keep this in mind when you invest in a certain technology: some organizations, especially nonprofits (for example, the Apache Software Foundation, Python Software Foundation, the new Node Foundation) are probably going to support and develop their software for extended periods of time relative to, say, a startup or for-profit (Parse, MongoDB and RethinkDB immediately come to mind).
This is why the key product should be open-source. Else it's too scary to invest in it: what if the company behind it folds, and you end up in a dead end?
Only certain super-behemoths like Microsoft or Apple can afford to have their infrastructure products being closed-source.
How many people in the world can work on a large DB, even with source?
I am all for open source, but it doesn't make things like this is easy as some make it out to be. For example with Linux source, how long would it take me to fix a video driver bug? Perhaps a year?
If open source only works when you pay for it, it's just an abstraction layer around ordinary commercial software, with the same pressures. In fact, most of the people qualified to fix Linux video drivers are already employed full-time at a graphics card manufacturer (with its sales pressures) or a commercial redistributor (with its sales pressures). You could pay one of those companies for a support contract. But other than that, if someone else qualified exists, it's only worth their time to take these contracts if there's enough sustainable business to keep up-to-date with how Linux graphics drivers work; chances are there isn't, and they're spending their time in full-time employment doing something else entirely. So, you're at the same place where you started: the problem is complicated enough that there aren't enough reliable sales, and so it only gets done by large companies that can afford to fund the work because they already have enough sales of enough things.
(Full disclosure: I am one of the people who could have been qualified; one of the jobs I was considering a few years back was a graphics-driver-hacker position at Red Hat. I happened to instead choose full-time employment doing various, mostly userspace Linux stuff for a startup. When they ended their incredible journey, I would have loved to make a living taking contracts like the ones you suggest - and I still wish I could - but there aren't enough of them and they aren't reliable enough to make it better than just taking a full-time job with a profitable company.)
With ordinary proprietary software, there's only one team in the world you could possibly hire for maintenance, and if they're too busy or have a conflict of interest you're just screwed. Competition among maintainers should make them more efficient and scale better.
But that assumes there is a ready supply of people that can fix a certain part, and want to take contracting work. For example, let's say I have an ATI XYZ in my laptop. It has a driver bug and won't work. ATI driver is open source. Who do I hire to fix it?
Except that's not quite true for ordinary proprietary software - there are a number of people who make a living supporting Windows or Active Directory or Exchange or whatever who don't work for Microsoft. There is a difference of degree, in that third parties who support open-source code (e.g. Oracle supporting RHEL) have access to the source, and third parties who support proprietary code usually don't (although it's possible to get a MS read-only source license!) and only have access to compiled binaries. But that's not a huge difference. There are people who are very good at tracing and disassembling compiled binaries, or simply at understanding how the system works even in the absence of code, and they have thriving businesses. Sysinternals, for instance, was a separate business acquired by Microsoft.
(Note that I am carefully using the phrase "open source," not "free software". Part of the free software ethos is that you can realistically modify your code as needed. I do happen to think that the current free software movement isn't very good at delivering on this promise.)
His point is a little more subtle than that. When you're choosing a database engine to build your company on, knowing that it's open source provides some level of guarantee that someone will continue to maintain it if the company/developer folds, even if that someone is not you.
Therefore, if you're the one building the database, open-sourcing it de-risks your product to your potential customers, to some extent.
To expand on this point, if you look at Linux development, multiple companies are contributing to the project! The product exists outside any single organisation.
Of course closed source products can also be collaborations, but open source + open development practices can make this a smooth and natural result.
Someone? You shouldn't pick an opensource project hoping someone motivated picks it up soon after it's abandoned. The primary company going down is usually it, especially when the project hasn't even picked up enough community yet.
If the DBMS's users wouldn't chip in enough money to cover the cost of developing it before the company went under, it seems hard to believe that they'll suddenly decide it's cost effective to pay for having it developed post-failure. If anything, it just implies that they've become so tightly coupled to the product that the DBMS vendor's failure represents a sudden existential crisis.
I think, more important that whether or not the DBMS is open source, just consider how critical the DB is. If you can't live without it, stick with a DB that you can be virtually 100% sure isn't going anywhere soon. Save your experimentation with new products for the small and less-important stuff, and make sure the small stuff doesn't reach some critical mass before the DB vendor does.
Right. My point was more that being open source in its own isn't always enough. Having a company behind it makes a difference to many people - more than the distinction between open vs closed.
I was able to sell our company on Cassandra because there is a Datastax there to support it when the shit hits the fan.
You cannot draw that conclusion from the data at hand. There's plenty of closed source product companies that shut down because they didn't manage to make a profitable business as well.
> This is why the key product should be open-source. Else it's too scary to invest in it: what if the company behind it folds, and you end up in a dead end?
The way this is dealt with for closed-source software is source-code escrow. The support contracts stipulate that the company that built the software set aside the code with some stable third party, and that it be available under specified conditions, such as the builders going out of business.
It's not as good as having the source freely available, but then it's dealing with an extreme contingency, anyway. Very, very few users of a piece of software have the expertise to build it from source and then debug it if they run into problems. So they're probably screwed either way if the builders go belly up.
> Only certain super-behemoths like Microsoft or Apple can afford to have their infrastructure products being closed-source.
The alternative is to buy truly critical software only from companies you trust a lot. XYZ Valley Startup is unlikely to be around in 20 years, but Oracle almost certainly will, as will Microsoft.
Just started a new project at my company using RethinkDB, very early stages, but I was amazed at how well this was documented and implemented. Coming from different ORMs to use with MongoDB, ReQL was a joy to work with and I didn't even want to use an ORM(for me at least, others may disagree).
Sad day to me, but as an open source tech, I hope and trust it will continue to live on.
It sounds like the company landed at Stripe. Good for them. Glad they weren't left out in the cold.
Thank you all very much for your hard work. In my short period of time I have had using RethinkDB, it's been a pleasure to work with.
Bummer. Had Rethink in my list of things to eventually tinker-with. Is it stable where it should still be considered as a viable choice for your tech stack, or is this pretty much a deal-breaker?
RethinkDB is production stable as shown by a number of users running it in production, this won't change that. I'm optimistic that it'll do just fine as an open-source project.
Jeroen / VeXocide here, one of the RethinkDB engineers
I actually maintain an app that uses a RethinkDB cluster that's been up for over a year (despite occasional peak loads that exceed capacity), so yeah it's pretty stable. I've had multiple virtual servers fail (this is all in a cloud) and have to be replaced in that time frame, but the cluster itself never went down.
It is hard to tell. I am wondering the same thing after having massively invested in building code on top of RethinkDB. I am not optimistic at all. At a minimum I wish Slava had announced a plan to relicense under BSD or Apache. This is the moment when he could do it and he hasn't.
This is honestly quite depressing for me to hear. I've always liked the team and the fantastic product they created. A couple of years ago, when I was working on a DB product myself, I met a few of their team and I was just blown away by how nice and welcoming they were, even to someone developing a product that could potentially compete with theirs.
Later onwards, when I was working on an NLP startup earlier this year, I opted to use RethinkDB because I had seen how clean, smooth, and fast its internals were. When I had a hiccup with running a cluster in here cloud and tweeted about it, Mike and others from. The RethinkDB team instantly reached out to me and helped me resolve the issue.
My greatest condolences to you guys. I have met with Slava a couple times, and with Mike several. They are incredibly down to earth and I felt they were very important to contributing to the democratization and humanization of databases (an otherwise unfortunately very vicious and elitist industry).
So what is next? I need to strongly remind people that both Mozilla Firefox and Blender were Open Source projects that survived their parent companies. This is not a death statement, and very easily could be a rebirth of Rethink.
Despite working on a competing database, I want to take a moment to explain why RethinkDB is the best in its chosen niche, by comparing it to other options out there:
- MongoDB. You won't get realtime updates and relational documents if you use MongoDB compared to RethinkDB.
- MySQL/Postgres. Rethink's awesome ReQL query language is a joy to work with compared to standard SQL. Without Rethink, you'll be missing document storage and live queries.
- gunDB. Our model is Master-Master, which while we think is great, it fundamentally restricts you from building Strongly Consistent systems, like banking apps, etc. RethinkDB is the only realtime updating Master-Slave system out there. They clearly win here.
- Redis. RethinkDB still has amazing speed and performance, but offers so much more than Redis by itself can.
- Hadoop. I know less here, but I've heard that RethinkDB has an amazing query optimization engine. Automatically taking your query and sharding it out across the distributed storage system.
RethinkDB is a winner in these technical aspects and fits for a very well defined problem. I encourage people to still use it and contribute to it if their business matches that. Don't let news like this deter you, or else we would have lost gems like FireFox and Blender.
I just want to personally thank Slava for his exceptional work over the past few years - at every step him and his team have been classy and professional, and brought real creativity and intelligence to the world of databases and startups.
Its clear to me that Rethink is the model for future databases - its just that DBs have a long gestation as no-one wants to risk their data until the code is aged like a fine wine. Its an important longterm technology play - just the kind we need to improve things for all of us.
In two or three years I think they would be making money, I think this is a failure of capitalism or imagination our HN/SV community.
To those several of us who have the power to write a check, please consider doing so, Rethink have been relentlessly building the future [ and you will make money ]
I'm not sure you can chalk this up to a failure of capitalism. Postgres is a tough database to contend with and it's mature and open source. People like to hate on mysql/mariadb, but it also has a massive open source community.
As a company choosing open source technologies, the popularity is important. Otherwise you run into issues finding answers to common problems and you end up paying through the nose for support.
> CockroachDB decided to be more-or-less Postgres-compatible on the wire, and embraced SQL.
I was about to post that a quick grep of CockroachDB source turned up no references to postgres, libpq or anything obvious to back that up that claim but then I noticed my workspace was out of date, so I after a git pull/git grep I now see that you are correct. Commits to add postgres-compatible parsing and wire protocol appear to have landed late last year. Why wasn't I informed! So thank you for this - time for me to take another look at it.
They're also trying to make the information catalog compatible-ish as well, so that existing web-style frameworks that parse the information schema to determine datatypes and whatnot work out of the box.
You can give TiDB a try. TiDB is a NewSQL database inspired by Google Spanner and F1. It supports the best features of both traditional RDBMS and NoSQL. Check it out here:
https://github.com/pingcap/tidb
Haven't played with it, but everyone about RethinkDB looks positive. Hopefully it will continue to develop in the open source community.
There are so many projects that really need attention to keep open source growing. I started looking at what I could do for IRCv3 projects recently because I'd really like to support an open source alternative to Slack.
RethinkDB is one of the developer tools that we at Stripe most looked up to.[1] The team had so many good ideas and rigorous, creative thoughts around what a database could be and how it should work. I'm really bummed that it didn't work out for them and have enormous respect for the tenacity of their effort.
I'm also excited to have them join us here at Stripe. As we've gotten to know Mike, Slava, and the other Rethinks -- and shared some of our plans with them and gotten their feedback -- we've become pretty convinced that we can build some excellent products together in the future. I'm looking forward to learning from all of them.
As a user and supporter of RethinkDB I hope (and expect!) that the engineering team joining Stripe is a sign that Stripe will be able to take part in further development of the product.
On a sidenote, for people unfamiliar with RethinkDB, this episode of The Changelog with Slava explains some of the history and choices behind RethinkDB ; I found it really interesting. https://changelog.com/114/
The team at Stripe has been absolutely phenomenal throughout this process, they've gone above and beyond in finding high-impact projects for our team. We're brainstorming together how to transition RethinkDB to a self-sustaining open-source project, and Stripe is super-supportive of that too. If there is a way for RethinkDB to live on, we'll find it!
That is very good to hear. We just ported our backend to use it after evaluating many other options including managed databases.
It's really a top quality piece of software in every respect, combining much of what's good about nosql with relational features and robustness. The ease of clustering across data centers is just phenomenal.
Would still recommend it in spite of this bit of uncertainty.
I can't describe how sad I am over this. RethinkDB is not just excellent db, but it is yardstick on how future db's should look like. What you accomplished there is excellent balance on features, great ui. We really need this project to go on, even if slower.
We use RethinkDB at CertSimple. It's always been a great DB with safe defaults, excellent documentation and it's always just worked. Trickier ReQL queries are intuitive. It deserved wider support than what it got.
It's depressing that a half-baked constantly problematic effort like MongoDB wins while this gets neglected. Unfortunately we still live in a world where marketing beats merit.
It's always like this. Just look at Windows; if people cared about quality, no one would be complaining about Windows 10 giving them grief because Microsoft would be out of business or relegated to some business software niche, and we'd all be running some kind of Unix variant or maybe some descendant of BeOS or OS/2.
The GPL is of course completely commerce-friendly, as it permits anyone to resell the original or modifications to it. What you're asking for is a license friendly to proprietary software[1].
Why on earth would they want to enable someone to close his modifications to RethinkDB? How does that make the world a better place? How does that encourage the growth of RethinkDB (vice the proliferation of closed, proprietary forks of RethinkDB)?
[1] Which is to say, user-hostile software. Users should be free to use, modify & distribute software.
Proprietary software is not by definition "user-hostile," and hyperbole like this does much more harm than good to people like me who would like to see more open source and less proprietary software in the world simply as a matter of principle.
I disagree. Most of those are things that most users don't give a damn about in most cases (because they're meaningless unless you have certain unusual skills), which means they don't make for a sensible definition of "hostile".
Do pirate bay support your statement or proof that it is wrong? Maybe it just that "most users don't give a damn" about copyright, and as such don't care if what they do is legal or illegal with current copyright laws. In order to care about copyright licenses, first users need to care about what happens when they don't follow it.
I can see why you're sometimes labeled as "fanatics" and "zealots". You speak in religious-like absolute terms and use circular logic to "prove" you're correct. The GPL's biggest enemy are its most ardent supporters. Truly.
So you care more about having the entire pie, than about how much pie you have?
If you have a license that "permits" commercial sales in a way that by design makes most business models completely unfeasible... guess what? You'll only get contributions from those with one of the handful of blessed business models. Which will work or not depending on what sorts of businesses models your project is suited for.
Copyleft works fine for things like the kernel that are complementary to tons of different expensive things and nobody cares about otherwise. Permissive works well for Postgres.
At the same time, you're arguing that you should be able to take the work they've done, add to it, but not give back, despite having received a HUGE base to start with.
It's licensed under the Affero GPLv3, but I don't think AGPL license requires you to open source your code, if you're just using ReQL (the API/interface for RethinkDB).
GPL/AGPL requires you to share your code if you statically (or dynamically) link (which is a C language family concept) to GPL code, but I don't know if calling an API is considered "linking".
I don't think most companies really make any contributions or modifications to the databases they use that they absolutely do not want to share back to the community.
(If using ReQL constitutes "linking" under AGPLv3, then that's a very serious matter. Perhaps re-licensing under LGPLv3 would make sense then.)
But overall, I think it's fair that they used AGPL. I especially like that they opted for the Affero version, since companies that do make useful changes can't just hold onto it , and not share it back.
I've worked in a project that used some AGPL component. There were some many doubts on what should be open-sourced/which licenses were possible that we dropped that component and invested or time modification another one.
After some while, that component changed its licensing model. It was too late.
I believe the RethinkDB team will be a great fit for Stripe. RethinkDB was literally a pleasure to work with. As someone who has had to endure the pain of setting up a production mongo environment, I was thrilled to see how easy RethinkDB was to provision and then configure (all in their beautiful dashboard).
I see a lot of similarities between Stripe's offering and RethinkDB, making a once painful process into one that is actually looked forward to when building a new product. I'm glad Stripe will have even more engineering firepower as they continue to succeed.
Sad that RethinkDB(.com) is no more, but happy they found a great company to join!
It's great to hear that the Rethink crew will have a home at Stripe. Seems like the perfect fit. I hope you consider putting resources behind the project. We've absolutely loved using at Lumi.
The comments section here can be brutal and God knows I've been responsible for some of it, which makes seeing comments like this all the more heartening.
Patrick, I am curious why Stripe didn't just acquire RethinkDB completely? Seems like you could have gotten a bargain. Their investors get some money back, you'd get their excellent intellectual property, and finally the entire functioning RethinkDB team joins Stripe. Win-win right?
The copyrights and patents are already covered under the licenses they used (AGPL v3 and Apache v2). A search for RETHINKDB on the USPTO trademark search engine turns up no results.
Just a hypothetical - if you actually own the IP, you may be able to release future versions under non-free licenses. However I don't see Stripe in the premium-DB business.
yeah. RethinkDB is AGPL, which means that some people cannot use it (e.g. http://www.theregister.co.uk/2011/03/31/google_on_open_sourc...). While a very well grounded interpretation says that merely using the AGPL'd service via a public API doesn't force you to release the clients, some companies would prefer buying a commercial license rather than facing the legal risk.
TL;DR: it's not always "them", there are also those working for "them", who might have no say in the matter.
cannot resist to reply to nitpicks :-)
counterexample: let's imagine I'm an employee of a company which has a policy that forbids me from using any AGPL software for work and it also forbids to install said software on my corporate laptop at all (even if it was for personal evaluation or toy projects) or else, if caught, I might incur in disciplinary action, who knows, possibly termination.
I guess that in this case you'll agree with me that the statement "some people cannot use it" is not quite false and especially not completely false, in that , yes, I could use it (as in no physical law forbids me), and even if you might say that it's me who freely chooses to not use it in order to avoid the repercussions I don't really think I have a choice here, do I?
This is an extremely pedantic definition of "some people". As employees of the company doing work on their corporate laptop they can't do it, but that is because the company won't do it, and they are employees of the company.
Also: you shouldn't be using your company laptop for persona projects anyway... get your own laptop :/. So, likewise: "people who by premise are already doing something sketchy because they can't afford their own laptop and are pretending to borrow one under employment terms" is just an awkward place to start to define a reasonable, as opposed to pedantic, definition of "people".
A lot has been told about those cool companies that hire creative people that love to play with technology. A lot has been said about how some weekend projects have turned up in useful things to be used within the company, sometimes even major projects.
Such a passionate developer however might find himself in a situation where she's not allowed to use some tool X because of a restriction put up by his employer.
That restriction might be a minor annoyance, e.g. raise the barrier to entry because "doh, I need to go and grab my personal laptop for that? nah, let me use something else". Or it might be a deal breaker: I need to get some job done, I'd like to play with tool Y, use it to get the job done and learn new thins while doing it.
This kind of people, those passionate developers, will complain about that.
They will complain to their employee for putting up such a restriction (and you'll usually not hear about those complains here).
But they will also complain about why the tool Y has chosen a license that his employer find so problematic.
These people will not just stop complaining just because they shouldn't be wanting to play with things in the first place. That's what they do, and that's often why they are good at doing things.
People do complain when they have too many rules that hinder their ability to do stuff effectively. I do see that happening, quite a lot; and I can understand why and relate to it.
Do they have the right to complain? Well, that's another story.
If the tool is closed source and they don't want to buy a license, then sure they can complain but they will just shrug it off as "that's the way it is" and move on.
I believe that things start to be more blurred when you have an open-source tool, which suddenly you cannot use (I'm not saying extend and sell commercially as closed source!) just because of FUD around licensing.
That's a nonsense definition. In general language it's perfectly reasonable to say things like "vegans can't each chicken". Responding "FALSE! They can, but they choose not too!" doesn't add anything.
No, if I'm working at a company that has a blanket policy against using any (A)GPL software, then I can't use it.
What the lawyers decide in a company that has 10k+ employees has nothing to do with the fears of anyone but the lawyers and the top management. Everyone else is just following the rules.
Ummm...no. Won't implies you have a choice. Can't implies that it's not an option.
Working for one of those large companies, you simply don't have an option.
And the people without choices vastly outnumber the people who do have choices.
Frankly, most developers are probably happy using whatever code, under whatever license, that's available. It's the people who run the business who typically make the decisions about what's OK and what's not.
So it's developers who are punished by GPL, by and large, because many can't use the code. It's not helping those developers, and nothing zealots say or do will convince the legal department at those companies that they should change their position on (A)GPL.
Sounds as good news for any competitor (if your company has any). The competitor can use (A)GPL when its suitable and get products out earlier with lowest costs. If development time is cheaper than doing per-case evaluation of a license, then something must be horrible wrong.
>Sounds as good news for any competitor (if your company has any).
Actually thinking of Amazon.com. They have competitors, sure. But they also have the budget to write their own entire stacks internally when the license doesn't fit. And it's not like their decision to avoid GPL software is hurting them in the market in any relevant way.
When something is MIT licensed, they'll use it, and they can and do contribute changes upstream. GPLv2 code requires serious hoop jumping to use, and GPLv3 software is verboten (the patent clause can't be adhered to by large companies with cross-licensing agreements: Many of these licensed patents can't be sublicensed, and so they can't be in compliance with the license at all).
So all GPL does is prevent companies from using and supporting the software. For every instance of an MIT project that ends up modified in proprietary code there are probably 100 that either use it verbatim or contribute changes back upstream. It just makes sense so that you don't need to keep maintaining an increasingly divergent fork.
When you are large enough and entrenched enough, you can do suboptimal decision and still win the race in both market share and revenue. IE and Microsoft comes in mind, and it took major failures and long time before competitor started to gain ground.
And it would explain why say a gaming company can't have such rigid policies. Preventing that a game get delayed is worth both lawyer time and, in the case that a license directly conflict with the business model, send mail to the author and asking for an exception. For example, I recall that LGPLv3 which has the same patent clause you describe as "clause can't be adhered to by large companies" is used by blizzard in starcraft 2. Blizzard is not Google in size, but they are not exactly a street vendor. One might also ask if they have much need to protect patents about xml parsing, or fonts, or what ever specialized functions those numerous library do that blizzard use to build a game. The only thing they don't use is copyleft, as their core business model is designed around restricting copying in order to limit supply when selling copies.
Per case evaluation make sense when your product is time sensitive and when there is a lot of competition. A game from Blizzard is almost treated the same by the market as a game by a indie studio (keyword: almost), and a such can't rely on market share to protect them. A bad, delayed, and rushed game is still bad and won't sell regardless of who made it (To name an example, the last batman game). They must be agile, which mean religious thinking about software licenses must be thrown out and per-case evaluation be added to the process. If a library can be use within the business model, saves time and money, and is not your core ingredient in making your game stand out, its almost always a good idea to use it.
It's the Google/Amazon/IBM/Apple size where you end up with endemic cross-licensing patent agreements. That's where they can't adhere to it: They have a license to a thousand patents that protects them from being sued, but they don't have the right to sublicense those same patents. (L)GPLv3 requires they sublicense any patents they have to anyone who's sued, IIRC, so since they can't, they lose the ability to distribute their software.
I'd be somewhat surprised if Blizzard were a party to such an agreement. They might be party to a "patent-troll-don't-sue-me" agreement, I guess? No idea. But if they are, depending on the terms of their agreement, someone could potentially sue them over it based on LGPLv3 terms.
I'm not planning to, so I haven't done the research, to be sure. The risk scenario that comes to mind is a stretch, but say I buy a Blizzard game with LGPLv3 code in it, which grants me the right to be protected against patent lawsuits relevant to that code, and then I ship my own game that uses the same LGPLv3 code -- and I'm sued by a patent troll over a patent that Blizzard has licensed through some agreement. Guess what? I can now demand that Blizzard protect my use of the same LGPLv3 code by sublicensing me that patent. Which they (probably) don't have the right to do. So they either pay for my license or they have to stop distributing their LGPLv3 code.
For Amazon, who distribute tons of code for people to use in AWS, and the fact that they're a much larger, more collectable company, the scenario is proportionally worse.
It's all beside the point, though: In no case is it the line-level developer making the call, it's someone in management. Not everyone can (or even wants to) work for Blizzard or equivalent.
In particular, not everyone wants to work at literally half the compensation or less just so they can have full software freedom, whatever that means. The Google/Amazon/Apple compensation can be that much better than start-ups for top developers. I didn't realize this myself until I got a job at one of them.
And I'd love to be able to use RethinkDB where ever I end up next, without having to worry about whether the company legal department has a problem with (A|L)GPLv3. It's a battle I wouldn't even bother taking on in most cases; too much work when I could use something else and get back to doing real work.
Coming from a failed startup myself, there is probably a bit of debt associated with the company at this point. In our final throws of life, we raised additional capital (angel/VC/etc) via convertible note to sustain the business a bit further. This in addition to back rent, unpaid bills, etc, leaves quite a pile of financial liability that any acquiring company would likely assume. Easier to let the company die and hire the staff as a separate operation.
I secretly (not 'secret' anymore I guess) and irrationally trust Stripe to do good on RethinkDB.
Also, TIL: Slava is defmarco. Yeah defmarco, that's how I read it for a long time. I especially love this piece from defmarcohttp://www.defmacro.org/ramblings/fp.html
"we can build some excellent products together in the future."
So in other words you're not going to continue to work on Horizon and Rethink, or at least if you do they are secondary priorities? Ugh.
Slava did the right thing; his first responsibility is to his employees, not his users, but this really sucks for us users.
For us, it would probably have been better to shut down abruptly. The community would have scrambled. Some employees would find work in companies that used RethinkDB, and maintenance would have continued the same way that Apache was developed ~20 years ago. Some would have grabbed support contracts from users. And some would have moved on.
Wow, I've always used RethinkDB for toy DB stuff here and there, but nothing serious. I loved how well everything was put together, from the documentation to the homepage. Hopefully the project can live with OSS contributions.
456 comments
[ 3.1 ms ] story [ 237 ms ] threadOf course, this is with the benefit of looking back, but the parent's hypothesis has legs.
EDIT: We'll just wait for Mongo to burn through all their cash then.
Mongo has a strong community, which translates into a plethora of articles/blog-posts/tutorials/etc that secures its niche. From there it's possible to make money with things like consulting fees to help fix the problems it created in the first place.
It's all about execution. Case and point: I know what (purportedly) makes MongoDB special. I have no idea what RethinkDB is supposed to do, other than store data. Yes, I could check their site, but the point is I'm already familiar with Mongo's reputation. All of this contributes to a lesser product winning over a better one.
Oh, yeah... and the ability to do shard + redundancy, where mongo you're either or have to do both. So scaling works a bit better. The admin tooling for rethink is better than anything I've really used in non-sql databases. And frankly even better than db admin tools, including sql based ones.
It's just a really great, stable database with really good scaling for the majority of use cases.
Half the crap people speak about Mongo seems to be from either the early days, or from people who just like to complain. It certainly has it's issues, but there doesn't seem to be much community will to replace it with $superdupernosqldb.
We run Mongo side by side with PG, and even though the PG is just replicated and not also sharded like our Mongo cluster is, Mongo was more easy to configure.
I think MongoDB's biggest problem is that it was marketed as the general purpose DB in the Node.js community when actually it is a specialised tool. So now you have thousands of developers wondering why they're on this weirdly behaving document store when they could've scaled fine on something more generic like PG.
More on topic: RethinkDB was aiming to be the best of both worlds, generic like PG yet document oriented and horizontal scaling like Mongo. I think their problem is that they didn't manage to pierce the communities. It would have gone better if they had evangelists for every major platform that just produced a stream of blog posts, small open source projects and tools and crashed random meet ups.
(sorry)
But please enlighten us poor fools which open source databases can compete with MongoDB in this space. It sure as hell isn't PostgreSQL.
In Big Data specifically when we are spending tens of millions on Hadoop/Spark/NVidia clusters buying a few extra licenses for MongoDB is nothing. And what makes Big Data even more compelling for database vendors is that often by law or for privacy reasons we are forced to run everything inhouse i.e. strictly no cloud.
I'm not a Windows fan, but that's harsh. http://cryto.net/~joepie91/blog/2015/07/19/why-you-should-ne...
Most of the the points are for issues that were fixed years ago and then you get classics like "forces the poor habit of implicit schemas in nearly all usecases" as if some developer is going to somehow stumble on the fact is it a schemaless database.
It's like trying to say "Linux is shit" because of issues found in 1.0 of the kernel.
https://objectrocket.com/blog/company/mongodb-wiredtiger
It's made a massive difference to performance and stability.
https://aphyr.com/posts/322-jepsen-mongodb-stale-reads
This is the JIRA tracking that Jepsen stale read issue: https://jira.mongodb.org/browse/SERVER-17975
In most enterprises around 2/3 of the data in the lake is unstructured and comes from multiple systems we don't control or have visibility into. So it just gets dumped into HDFS until someone creates the relevant HCatalog schemas. Having a database like MongoDB at least allows you to extract and access some of the data in an automated fashion e.g. JSON reflection. It's especially useful for adhoc and lightweight model scoring and feature engineering.
Other popular contenders are similar "full stack" or "full featured" solutions like Sails, Meteor and Total.js.
This is generally a result of beginners to Node trying to find something that does everything instead of spending some time learning the basics with a library like Express and going on from there.
As far as the stack itself goes, it's wonderful.
The entire sell of MongoDB in the Node community seems to be "it speaks JavaScript and you can store objects in it". Which of course fails to take into account any of the strengths and weaknesses of MongoDB (in the latter case especially the lack of cross-collection transactions or fast joins -- which in my experience account for 90% of the problems Node developers face with MongoDB).
The main reason MongoDB is popular in the Node community is that both reached peak hype around the same time. So it made perfect sense to bundle both of the "hottest" technologies together. Except by the point Angular 1 reached peak hype MongoDB was already facing criticism, so MEAN mostly seems to bask in its afterglow.
If you had asked me last month, my prediction would have been a RethinkDB+Node+React (or RethinkDB+Node+Angular2) stack popping up to challenge MEAN, though the RethinkDB+Node bit seems to have already been addressed by Rethink's own Horizon.
They should just switch to ES clearly.
TERP Stack : The most adventureous stack for
InTREPid EnTERPreneurs
Tornado RethinkDB Emberjs Python.
LEST GO!
So is this one of Stripe's BYOT hires?
This was real technology! I'm truly sad that the environment is such that great work like this can't continue to be funded.
Thanks for showing everyone how to write amazing documentation, caring about the fundamentals, and for the incrediblly snazzy admin panel.
Sales are essential for a for-profit company.
Why are we assuming that everything has to be done by companies? What if we establish a National Science Foundation for fundamental CS research?
This isn't that difficult of a question.
1) Universities get money from the students who pay tuition and fees for their education. 2) Universities get money from wealthy benefactors who donate their money to a cause they believe in. 3) Universities get money from for-profit companies that have sufficient commercial success to invest into research and such for what they hope will be later commercial benefit. 4) Universities get money from people who confiscated the money from other people, under threat of force and who might not have given it otherwise, and give it to a cause they believe in.
Not necessarily in that order by whatever measure you may choose. Note that, In no case did the wealth magically just appear. The wealth to consume was produced somewhere by someone.
Sounds like you're proposing 4 as you imply that the we that is not the companies won't be trying to create the wealth you want to use in your cause.
IMO, no. Sales and marketing are pretty different things.
Marketing isn't "sales without people", and sales isn't "marketing done in person". They target different problems, and you may need one, the other, or both to be convincing, depending on the product or service.
Both are done to sell more stuff.
IMO marketing is all about getting a good fit between what the company sells and what the market outside the company wants. It could be creating demand, so that the market changes to fit what the company creates; or it could be shaping the company's offerings to what the market is asking for; or it could be advertising, to make the market more aware of how the company's current offerings are a good solution for what the market is asking for. One way or another, it's about bridging the gap.
Sales is the process of completing profitable transactions. It's typically high-touch, one to one, and involves taking prospects, qualifying them, figuring out what they need and how the company's current offerings solve that problem in a personalized way, and managing the process to completion, and potentially further to upselling in the future. It's a pipelined process and is ultimately a numbers game, where the odds of proceeding to completion depend on both the value proposition and the salesperson's skill in communicating it.
The next step is marketing. Unless your target market is so tiny you or your sales team can do a direct outreach.
Gaining users and customers is extremely difficult, often unpredictable and potentially expensive. While a bad product/technology/service can set you back there is no guarantee the best will get you success. Users can be unpredictable and the adoption curve for anything new is long.
Sometimes marketing is earlier in the market identification and product building stage so you know the market you are going after, gaps, segments and the value proposition to customers or users. This is product strategy. You can completely botch this step and expend effort on a product/service that is not clearly differentiated and has no market case.
B2C (business to consumer) marketing typically use large budgets to reach a wide potential customer base using traditional advertising channels, and now online and social channels. Even 'lucking' out with hype, viral marketing and rapid adoption requires someone or a team to fuel this hype.
B2B (business to business) marketing is more hands on and about building a predictable pipeline for your sales team to target and close. In some b2b business the sales cycle can be hugely long and expensive and the cost per lead and opportunity measured in thousands of dollars.
And I do think that strategy was working to some degree; at least on channels like HN where we frequently saw posts related to RethinkDB.
Guess what - database vendors like Oracle, MongoDB (to a much smaller extent) that get a bad rep on HN actually sign deals for real money.
And we see how that worked out. Pricing is an important component of marketing, but it's not a marketing strategy in itself.
Unfortunately, after a short while I stopped hearing from them. It doesn't look as though they ever brought in any marketing help since then.
Thanks for showing everyone how to write amazing documentation
Thank you! (Really. I'm RethinkDB's documentation writer/editor.)
Really, you did have fantastic documentation, as the original said. Kudos.
Do you have any guides or books you recommend for writing good documentation? What software did you use to produce Rethink?
Sorry to see Rethink go.
For books/guides, it's hard to say. Find documentation you like a lot and think about what makes it good--the organization/taxonomy is really important to pay attention to, as well as the tone (formal, conversational, weird, etc.). As shocking as this might be around here, the _Microsoft Manual of Style_ is useful as a specifically technical guide, and it's good to have a relative recent edition of the _Chicago Manual of Style_ kicking around as a reference. And, just being familiar with standard grammar and punctuation rules is important. A lot of people aren't. (A lot of people who aren't still think they are.)
I am sure they considered it and figured it wasn't a good model for them. It is unfortunate that I have (with much pleasure) used rethinkdb in several projects, yet haven't had a chance to pay them for a service that would be useful to me.
As far as I can tell the codebase is designed to be as opaque and complex as possible. Any normal organisation will pony up the fees (between $1000 and $5000 per annum - https://cms.orckestra.com/Products/Plans) rather than try to really get their head around it.
Keep this in mind when you invest in a certain technology: some organizations, especially nonprofits (for example, the Apache Software Foundation, Python Software Foundation, the new Node Foundation) are probably going to support and develop their software for extended periods of time relative to, say, a startup or for-profit (Parse, MongoDB and RethinkDB immediately come to mind).
Only certain super-behemoths like Microsoft or Apple can afford to have their infrastructure products being closed-source.
I am all for open source, but it doesn't make things like this is easy as some make it out to be. For example with Linux source, how long would it take me to fix a video driver bug? Perhaps a year?
(Full disclosure: I am one of the people who could have been qualified; one of the jobs I was considering a few years back was a graphics-driver-hacker position at Red Hat. I happened to instead choose full-time employment doing various, mostly userspace Linux stuff for a startup. When they ended their incredible journey, I would have loved to make a living taking contracts like the ones you suggest - and I still wish I could - but there aren't enough of them and they aren't reliable enough to make it better than just taking a full-time job with a profitable company.)
But that assumes there is a ready supply of people that can fix a certain part, and want to take contracting work. For example, let's say I have an ATI XYZ in my laptop. It has a driver bug and won't work. ATI driver is open source. Who do I hire to fix it?
(Note that I am carefully using the phrase "open source," not "free software". Part of the free software ethos is that you can realistically modify your code as needed. I do happen to think that the current free software movement isn't very good at delivering on this promise.)
Therefore, if you're the one building the database, open-sourcing it de-risks your product to your potential customers, to some extent.
Of course closed source products can also be collaborations, but open source + open development practices can make this a smooth and natural result.
I think, more important that whether or not the DBMS is open source, just consider how critical the DB is. If you can't live without it, stick with a DB that you can be virtually 100% sure isn't going anywhere soon. Save your experimentation with new products for the small and less-important stuff, and make sure the small stuff doesn't reach some critical mass before the DB vendor does.
If a project is open source then who is committed to helping you support and maintain it? You essentially need to have a team to do it.
If there's a company behind it, it gives you assurances.
Especially for a small company that needs to focus on building a product rather than committing features and bug fixes to their database
I assume you mean they have $2bn in annual revenue?
I was able to sell our company on Cassandra because there is a Datastax there to support it when the shit hits the fan.
The way this is dealt with for closed-source software is source-code escrow. The support contracts stipulate that the company that built the software set aside the code with some stable third party, and that it be available under specified conditions, such as the builders going out of business.
It's not as good as having the source freely available, but then it's dealing with an extreme contingency, anyway. Very, very few users of a piece of software have the expertise to build it from source and then debug it if they run into problems. So they're probably screwed either way if the builders go belly up.
> Only certain super-behemoths like Microsoft or Apple can afford to have their infrastructure products being closed-source.
The alternative is to buy truly critical software only from companies you trust a lot. XYZ Valley Startup is unlikely to be around in 20 years, but Oracle almost certainly will, as will Microsoft.
That should say a lot about how amazing RethinkDB is. It's unfortunate to see this get shut down as RethinkDB is pretty easy to work with
Sad day to me, but as an open source tech, I hope and trust it will continue to live on.
It sounds like the company landed at Stripe. Good for them. Glad they weren't left out in the cold.
Thank you all very much for your hard work. In my short period of time I have had using RethinkDB, it's been a pleasure to work with.
Jeroen / VeXocide here, one of the RethinkDB engineers
At least that's what the website indicates.
Later onwards, when I was working on an NLP startup earlier this year, I opted to use RethinkDB because I had seen how clean, smooth, and fast its internals were. When I had a hiccup with running a cluster in here cloud and tweeted about it, Mike and others from. The RethinkDB team instantly reached out to me and helped me resolve the issue.
So what is next? I need to strongly remind people that both Mozilla Firefox and Blender were Open Source projects that survived their parent companies. This is not a death statement, and very easily could be a rebirth of Rethink.
Despite working on a competing database, I want to take a moment to explain why RethinkDB is the best in its chosen niche, by comparing it to other options out there:
- MongoDB. You won't get realtime updates and relational documents if you use MongoDB compared to RethinkDB.
- MySQL/Postgres. Rethink's awesome ReQL query language is a joy to work with compared to standard SQL. Without Rethink, you'll be missing document storage and live queries.
- gunDB. Our model is Master-Master, which while we think is great, it fundamentally restricts you from building Strongly Consistent systems, like banking apps, etc. RethinkDB is the only realtime updating Master-Slave system out there. They clearly win here.
- Redis. RethinkDB still has amazing speed and performance, but offers so much more than Redis by itself can.
- Hadoop. I know less here, but I've heard that RethinkDB has an amazing query optimization engine. Automatically taking your query and sharding it out across the distributed storage system.
RethinkDB is a winner in these technical aspects and fits for a very well defined problem. I encourage people to still use it and contribute to it if their business matches that. Don't let news like this deter you, or else we would have lost gems like FireFox and Blender.
Best regards to you guys, you are awesome.
Because it looks eerily similar to another arm swinging chant that another NL East team does.
Its clear to me that Rethink is the model for future databases - its just that DBs have a long gestation as no-one wants to risk their data until the code is aged like a fine wine. Its an important longterm technology play - just the kind we need to improve things for all of us.
In two or three years I think they would be making money, I think this is a failure of capitalism or imagination our HN/SV community.
To those several of us who have the power to write a check, please consider doing so, Rethink have been relentlessly building the future [ and you will make money ]
As a company choosing open source technologies, the popularity is important. Otherwise you run into issues finding answers to common problems and you end up paying through the nose for support.
Presumably, that's in part why CockroachDB decided to be more-or-less Postgres-compatible on the wire, and embraced SQL.
I was about to post that a quick grep of CockroachDB source turned up no references to postgres, libpq or anything obvious to back that up that claim but then I noticed my workspace was out of date, so I after a git pull/git grep I now see that you are correct. Commits to add postgres-compatible parsing and wire protocol appear to have landed late last year. Why wasn't I informed! So thank you for this - time for me to take another look at it.
There are so many projects that really need attention to keep open source growing. I started looking at what I could do for IRCv3 projects recently because I'd really like to support an open source alternative to Slack.
I'm also excited to have them join us here at Stripe. As we've gotten to know Mike, Slava, and the other Rethinks -- and shared some of our plans with them and gotten their feedback -- we've become pretty convinced that we can build some excellent products together in the future. I'm looking forward to learning from all of them.
[1] (And, for me, even before Stripe -- I started learning Haskell with Slava's Lisp-interpreter-in-Haskell tutorial back in 2006... http://www.defmacro.org/ramblings/lisp-in-haskell.html)
On a sidenote, for people unfamiliar with RethinkDB, this episode of The Changelog with Slava explains some of the history and choices behind RethinkDB ; I found it really interesting. https://changelog.com/114/
The team at Stripe has been absolutely phenomenal throughout this process, they've gone above and beyond in finding high-impact projects for our team. We're brainstorming together how to transition RethinkDB to a self-sustaining open-source project, and Stripe is super-supportive of that too. If there is a way for RethinkDB to live on, we'll find it!
It's really a top quality piece of software in every respect, combining much of what's good about nosql with relational features and robustness. The ease of clustering across data centers is just phenomenal.
Would still recommend it in spite of this bit of uncertainty.
MySQL was for long time default choice over PgSQL, yet once developers matured, quality won. Just it took a decade :)
Why on earth would they want to enable someone to close his modifications to RethinkDB? How does that make the world a better place? How does that encourage the growth of RethinkDB (vice the proliferation of closed, proprietary forks of RethinkDB)?
[1] Which is to say, user-hostile software. Users should be free to use, modify & distribute software.
Yes, it is: by definition it violates one of the Four Freedoms of users … which is hostile.
The Four Freedoms are just someone's opinion, not some tangible fact.
If you have a license that "permits" commercial sales in a way that by design makes most business models completely unfeasible... guess what? You'll only get contributions from those with one of the handful of blessed business models. Which will work or not depending on what sorts of businesses models your project is suited for.
Copyleft works fine for things like the kernel that are complementary to tons of different expensive things and nobody cares about otherwise. Permissive works well for Postgres.
GPL/AGPL requires you to share your code if you statically (or dynamically) link (which is a C language family concept) to GPL code, but I don't know if calling an API is considered "linking".
I don't think most companies really make any contributions or modifications to the databases they use that they absolutely do not want to share back to the community.
(If using ReQL constitutes "linking" under AGPLv3, then that's a very serious matter. Perhaps re-licensing under LGPLv3 would make sense then.)
But overall, I think it's fair that they used AGPL. I especially like that they opted for the Affero version, since companies that do make useful changes can't just hold onto it , and not share it back.
After some while, that component changed its licensing model. It was too late.
I see a lot of similarities between Stripe's offering and RethinkDB, making a once painful process into one that is actually looked forward to when building a new product. I'm glad Stripe will have even more engineering firepower as they continue to succeed.
Sad that RethinkDB(.com) is no more, but happy they found a great company to join!
Why buy something you can have for free?
That's completely false: anyone has the right to use it, for any purpose; that's what Freedom Zero is all about.
Some people do not want to both use it and also comply with its terms, but that is their choice; they can and may use it, but choose not to.
cannot resist to reply to nitpicks :-)
counterexample: let's imagine I'm an employee of a company which has a policy that forbids me from using any AGPL software for work and it also forbids to install said software on my corporate laptop at all (even if it was for personal evaluation or toy projects) or else, if caught, I might incur in disciplinary action, who knows, possibly termination.
I guess that in this case you'll agree with me that the statement "some people cannot use it" is not quite false and especially not completely false, in that , yes, I could use it (as in no physical law forbids me), and even if you might say that it's me who freely chooses to not use it in order to avoid the repercussions I don't really think I have a choice here, do I?
(I didn't downvote you)
Also: you shouldn't be using your company laptop for persona projects anyway... get your own laptop :/. So, likewise: "people who by premise are already doing something sketchy because they can't afford their own laptop and are pretending to borrow one under employment terms" is just an awkward place to start to define a reasonable, as opposed to pedantic, definition of "people".
Such a passionate developer however might find himself in a situation where she's not allowed to use some tool X because of a restriction put up by his employer.
That restriction might be a minor annoyance, e.g. raise the barrier to entry because "doh, I need to go and grab my personal laptop for that? nah, let me use something else". Or it might be a deal breaker: I need to get some job done, I'd like to play with tool Y, use it to get the job done and learn new thins while doing it.
This kind of people, those passionate developers, will complain about that.
They will complain to their employee for putting up such a restriction (and you'll usually not hear about those complains here).
But they will also complain about why the tool Y has chosen a license that his employer find so problematic.
These people will not just stop complaining just because they shouldn't be wanting to play with things in the first place. That's what they do, and that's often why they are good at doing things.
People do complain when they have too many rules that hinder their ability to do stuff effectively. I do see that happening, quite a lot; and I can understand why and relate to it.
Do they have the right to complain? Well, that's another story.
If the tool is closed source and they don't want to buy a license, then sure they can complain but they will just shrug it off as "that's the way it is" and move on.
I believe that things start to be more blurred when you have an open-source tool, which suddenly you cannot use (I'm not saying extend and sell commercially as closed source!) just because of FUD around licensing.
No, it means some people CHOOSE not to use it. There is nothing stopping them from deciding to use it, other than their own fears.
What the lawyers decide in a company that has 10k+ employees has nothing to do with the fears of anyone but the lawyers and the top management. Everyone else is just following the rules.
Working for one of those large companies, you simply don't have an option.
And the people without choices vastly outnumber the people who do have choices.
Frankly, most developers are probably happy using whatever code, under whatever license, that's available. It's the people who run the business who typically make the decisions about what's OK and what's not.
So it's developers who are punished by GPL, by and large, because many can't use the code. It's not helping those developers, and nothing zealots say or do will convince the legal department at those companies that they should change their position on (A)GPL.
Actually thinking of Amazon.com. They have competitors, sure. But they also have the budget to write their own entire stacks internally when the license doesn't fit. And it's not like their decision to avoid GPL software is hurting them in the market in any relevant way.
When something is MIT licensed, they'll use it, and they can and do contribute changes upstream. GPLv2 code requires serious hoop jumping to use, and GPLv3 software is verboten (the patent clause can't be adhered to by large companies with cross-licensing agreements: Many of these licensed patents can't be sublicensed, and so they can't be in compliance with the license at all).
So all GPL does is prevent companies from using and supporting the software. For every instance of an MIT project that ends up modified in proprietary code there are probably 100 that either use it verbatim or contribute changes back upstream. It just makes sense so that you don't need to keep maintaining an increasingly divergent fork.
And it would explain why say a gaming company can't have such rigid policies. Preventing that a game get delayed is worth both lawyer time and, in the case that a license directly conflict with the business model, send mail to the author and asking for an exception. For example, I recall that LGPLv3 which has the same patent clause you describe as "clause can't be adhered to by large companies" is used by blizzard in starcraft 2. Blizzard is not Google in size, but they are not exactly a street vendor. One might also ask if they have much need to protect patents about xml parsing, or fonts, or what ever specialized functions those numerous library do that blizzard use to build a game. The only thing they don't use is copyleft, as their core business model is designed around restricting copying in order to limit supply when selling copies.
Per case evaluation make sense when your product is time sensitive and when there is a lot of competition. A game from Blizzard is almost treated the same by the market as a game by a indie studio (keyword: almost), and a such can't rely on market share to protect them. A bad, delayed, and rushed game is still bad and won't sell regardless of who made it (To name an example, the last batman game). They must be agile, which mean religious thinking about software licenses must be thrown out and per-case evaluation be added to the process. If a library can be use within the business model, saves time and money, and is not your core ingredient in making your game stand out, its almost always a good idea to use it.
It's the Google/Amazon/IBM/Apple size where you end up with endemic cross-licensing patent agreements. That's where they can't adhere to it: They have a license to a thousand patents that protects them from being sued, but they don't have the right to sublicense those same patents. (L)GPLv3 requires they sublicense any patents they have to anyone who's sued, IIRC, so since they can't, they lose the ability to distribute their software.
I'd be somewhat surprised if Blizzard were a party to such an agreement. They might be party to a "patent-troll-don't-sue-me" agreement, I guess? No idea. But if they are, depending on the terms of their agreement, someone could potentially sue them over it based on LGPLv3 terms.
I'm not planning to, so I haven't done the research, to be sure. The risk scenario that comes to mind is a stretch, but say I buy a Blizzard game with LGPLv3 code in it, which grants me the right to be protected against patent lawsuits relevant to that code, and then I ship my own game that uses the same LGPLv3 code -- and I'm sued by a patent troll over a patent that Blizzard has licensed through some agreement. Guess what? I can now demand that Blizzard protect my use of the same LGPLv3 code by sublicensing me that patent. Which they (probably) don't have the right to do. So they either pay for my license or they have to stop distributing their LGPLv3 code.
For Amazon, who distribute tons of code for people to use in AWS, and the fact that they're a much larger, more collectable company, the scenario is proportionally worse.
It's all beside the point, though: In no case is it the line-level developer making the call, it's someone in management. Not everyone can (or even wants to) work for Blizzard or equivalent.
In particular, not everyone wants to work at literally half the compensation or less just so they can have full software freedom, whatever that means. The Google/Amazon/Apple compensation can be that much better than start-ups for top developers. I didn't realize this myself until I got a job at one of them.
And I'd love to be able to use RethinkDB where ever I end up next, without having to worry about whether the company legal department has a problem with (A|L)GPLv3. It's a battle I wouldn't even bother taking on in most cases; too much work when I could use something else and get back to doing real work.
Also, TIL: Slava is defmarco. Yeah defmarco, that's how I read it for a long time. I especially love this piece from defmarco http://www.defmacro.org/ramblings/fp.html
Just another +1 to the "OMG it's him/her?" moments regularly experience while reading HN. Thanks for mentioning.
So in other words you're not going to continue to work on Horizon and Rethink, or at least if you do they are secondary priorities? Ugh.
Slava did the right thing; his first responsibility is to his employees, not his users, but this really sucks for us users.
For us, it would probably have been better to shut down abruptly. The community would have scrambled. Some employees would find work in companies that used RethinkDB, and maintenance would have continued the same way that Apache was developed ~20 years ago. Some would have grabbed support contracts from users. And some would have moved on.