WhiteDB – Lightweight NoSQL database written in C, operating in main memory (whitedb.org)
WhiteDB is a lightweight NoSQL database library written in C, operating fully in main memory. There is no server process. Data is read and written directly from/to shared memory, no sockets are used between WhiteDB and the application program.
82 comments
[ 3.0 ms ] story [ 74.8 ms ] thread/s
"Locking We use a database level lock implemented via a task-fair atomic spinlock queue for concurrency control ..."
Fantastic, database level locking!
Request something more permissive (LGPL, MIT, BSD)?
1 - http://whitedb.org/licence.html
Regardless: "those which are distributed and marketed as database systems to be used by other developers" looks to be _full_ of wiggle room within what I suspect[1] is the authors intent.
[1] "I/somebody will/might make this a higher-order database tool for developers and I don't want anyone to compete with anybody else without forcing everybody involved (with this code) to open their entire codebase" (??)
> Data is read and written directly from/to shared memory
Good luck accessing your dictionaries from another python process....
It's also different from Redis because Redis is intended to be ran as a server (it stands for Remote Dictionary Server). This is ran entirely as a process and communicates via IPC; other machines can't reach the database, only the local machine. This is a big reason for why it's very fast. However, it also means you can't distribute the database across multiple servers.
You could think of it like a very fast NoSQL Sqlite, I guess.
It would require adding a lot more code to allow for typical interprocess communication.
Can you explain-more/rationalize GPLv3 licensing w/ the conditional alternate commercial license?
Why not just BSD, MIT, or (at least) LGPL ?
GPL is more understandable on "higher level software" (ie: complete applications), but I don't understand your intent licensing a library this way.
This is why the LGPL was created, so that you can have modifications done on your library be free-as-in-speech, but still make the library as a whole useable for a wide variety of other projects, including closed-source versions.
Having a separate requirement to email you for a free-as-in-beer license is just overly complicated for this. The more hurdles you put up for people, the fewer that will adapt the library. I think that licensing is one of those cases where is doesn't pay to be clever. Plus, what happens when you decide to stop maintaining the code? Do you want to keep getting emails for licenses years from now?
Edit: in last paragraph, I said free-as-in-speech, but meant beer (see comment below).
Should we stop maintaining the code or get bored mailing free beer licences, we'll very likely change the licence to LGPL or MIT. Until then beer comes via email.
I wish it was simply licensed MIT or BSD, but congratulations on your software and sticking to your convictions.
:)
Is it copyleft in general, or the patent grant that hinders your work in in Academia? I not sure why you should be using other peoples work for free, but then go around and sue anyone who copies or improves on your work.
The project wrote down exactly what they wanted to do with their work on their license page. I say good for them. More people should do so and think what they themselves want.
My stance is that since they did the work, the authors of the library can license it however they'd like. But, if they wanted to get more people using their library, I think that they should rethink their approach. LGPL is more appropriate for a library, where you can still have your copyleft approach for the code you wrote, while still promoting wider use.
Here's an extreme edge case... as they said, if they get tired of supporting the email to get a free-as-in-beer license, they will just open it up with an MIT/BSD style license and be done with it. That's great. But what if someone gets hit by a bus? Or someone leaves the project and moves to Antarctica? There would be no practical way to release an unencumbered version.
Really though, they can do what they want - it's their code. But licensing is one of those areas that you really shouldn't try to be clever.
They actually don’t want as many people as possible using their library. That is not the goal when choosing the GPL. The goal is to maximize the number of free users in the world – that is, users who have the freedoms which define Free Software. Mere users is inconsequential. If users is what you desire, then by all means, choose a permissive license (MIT/BSD/etc).
And yes, getting RMS to change something is quite the accomplishment :) His ability to walk the talk is impressive.
You might ask why they want that, and that could be an interesting read. My best guess: They are themselves developers.
1) How much space does the compiled code require? Can conditional compilation be used to omit unused features?
2) What is the overhead for the various data structures?
I'm thinking that it might be interesting to use this on very limited environments (PIC microcontrollers for example) where every byte matters.
I don't know if this is likely, but it looks like redis doesn't lock memory [1], which means that the benchmarks could be explained by swapping. Depending on the type of shared memory used by whitedb, it could be that its pages are locked and immune to swapping.
[1] https://github.com/antirez/redis/issues/1177
[1] http://highscalability.com/blog/2013/6/19/paper-megapipe-a-n...
[2] http://symas.com/mdb/microbench/
First of all, "that's cool" and "license issues" aren't mutually exclusive.
Second of all, it's a case of picking an applicable license for the place the software fits into a project. This is a low-level library (cool or not); if an author wishes to "protect" their code, LGPL was built explicitly for this purpose.
To confuse matters, in the projects own page[1] they effectively waive all the rights of the GPL3 except for a very specific corner case.
People asking for license clarification or change are looking to simplify even _beginning_ to use the library.
[1] http://whitedb.org/licence.html
That some people may not want or be able to use this library because of its license choice may matter to you, but there's no reason to believe it matters to the authors, and you are not in a position to tell them what should matter to them.
Nothing on that page constitutes a waiver of GPLv3. It is merely an offer of an alternative license to a subset of potential users.
GPLv3 = The ultimate restriction
One reason may be to increase the number of folks using the library. I'm not saying that would happen, or that the original devs care, but it's conceivable, isn't it?
> and you are not in a position to tell them what should matter to them.
I'm not telling them anything -- I'm expressing an opinion and asking questions. [sidenote: isn't it ironic to be called "disgustingly arrogant" and attacked for asking questions on a matter of free speech? I think my discourse has been polite and respectful[1]].
> Nothing on that page constitutes a waiver of GPLv3. It is merely an offer of an alternative license to a subset of potential users.
Perhaps waiver was the wrong word, but lets look at this a moment:
The offer is to everybody (barring a small (arguably dubious (enter lawyers)) subset of potential users, where (again, presumably) the license is more like MIT than GPL.
At any rate, the decision is in the hands of the authors.
[1] https://news.ycombinator.com/item?id=6614482, https://news.ycombinator.com/item?id=6614179
Would you seriously consider using (or even trying) a new library that has not even proved to be better than others yet, if you had to comply with GPLv3? I wouldn't.
Those that want to get money with the free work of others, should give something back and most authors do offer commercial licenses when asked for.
With licenses like BSD, the living proof is that most companies are leechers.
Have you ever considered the fact that it's not all about money and proprietary software? This affect Open Source software as well. If I want to allow other to do as they will with my code, I won't touch a library with such a viral license because I don't want to subject myself or my users with having to even think about it. Also, have you considered...
> With licenses like BSD, the living proof is that most companies are leechers.
That's not a proof of anything... The same license you cite is a living proof that most[1] companies and regular people will contribute even more than they have to without you having to force them to do anything.
[1] most, for some definition of most, because if a company of individual have neither the expertise nor the resources to contribute, then what good does restricting their use of the code achieve? (rhetorical question)
When I started coding, there was no such thing as GNU or open source movement. You got commercial software, shareware, beerware, donationware, whateverware.
I don't have any problem with commercial software, actually I do use quite a lot of it.
What I have problems with, and I have seen it happening a lot, is companies using source code from someone else as a means to cut costs for their binary blobs, without any form of contribution.
So I always defend a dual license scheme. GPL for open source projects, and some company whats to use the code in a commercial product, just needs to ask for the commercial license.
The only freedom GPL takes away, is the freedom to abuse the work of others.
No, it isn't. I can use it. So can millions of others. That you can't is most likely the fault of shitty lawyers. Not the authors' problem.
Childish assumptions and irrelevant reference to the argument of authority fallacy are not an argument. Talk about "arrogance"...
The rest either won't because they don't like the license, or can't by virtue of their own choices. Linus is one of these people. He has made his choices, which is his right. I (mostly) do not agree with the reasons for those choices, and would not have made the same ones, as is my right.
The identity and stature of the person who makes a choice is irrelevant, and dragging it out as if it makes my opinion invalid is absurd.
I insist: No professional programmer is going to use WhiteDB. Not for open source, not for anything. If there ever is someone willing to comply with GPLv3 just to be able to use WhiteDB, he won't even find out about the library, because nobody is using it.
Just by saying this you prove you've never dealt with corporate lawyers. I know multiple companies where all GPLv3 software has been banned by the legal department entirely. Not just for use as part of a product. It's literally not allowed on the company's computer's at all, because the shitty lawyers who couldn't make it in the real world have decided that if the company touches GPLv3 software, all company source code is immediately GPLv3.
They are that stupid.
By the way, if your faith in corporate lawyers is so strong, why bother with courts? We can just have corporate lawyers decide everything, since they'll always get it right. Which is why there are no lawsuits where one side wins and the other side loses.
> I insist: No professional programmer is going to use WhiteDB.
Which particular term of the GPLv3 would prevent me from using WhiteDB in a web application? I'm aware of none whatsoever. Note that this is GPLv3, not AGPLv3, which does have terms which can pose a problem to web applications.
By the way, Red Hat and Canonical make GPLv3 software, contribute to GPLv3 software, and include GPLv3 software in their Linux distributions. Are you accusing their programmers of being unprofessional?
Anyone writing GPLv3 software to begin with would be just fine with using this license.
The question you have to ask yourself is: am I OK with releasing my software under the GPLv3, or am I OK with rewriting this library if I decide to relicense my software under some other license. If you're OK with that, then you can use this library.
Forget the intent of the GPLv3. The effect of the GPLv3 has been to damage and subvert free software, rather than promote it.
If you don't like those terms, you can write your own software from scratch. Nobody is under any obligation to give you anything on any terms at all.
What I was requesting was that you don't use phrases like "what disgusting arrogance" and "entitled jerks whining" to make your point. You are unlikely to convince anyone with that kind of language; when people feel like they are attacked, they're a lot more likely to respond defensively than they are to be convinced by you.
I can't think of any good use case for GPL3. Nobody should use it.
When coding open source software.
For everyone else that wants to make money with the free work of others, a commercial license can always be asked for.
I ask as friends and I are doing research into very space-efficient (read: probabilistic) key-value stores. We have a few scientific use cases, but I'm curious if others would find the ability to scale to very large key- and value spaces (~1e9+ key-value pairs) in a space efficient way practically useful. Or, if interest is principally academic.
Apologies for the (pseudo-)hijack.
Ps. Looks very interesting, I have it on my to-dos to install and check it out more deeply.
http://fallabs.com/kyotocabinet/
Also, when you say "main memory" NoSQL database, are you saying "never store in page file" but always reside/lock in main memory? If it will go to the page file, it's not really main-memory, is it?
What has been done so far:
* Create a database
* Create a record
* Set field to a string
If you feel like testing it:
Then use the wgdb binary (`wgdb foo select 20`) to see your data in your database.I'm still new to ruby C extensions so the API is quite ugly (no blocks yet, no error checks,...) and I'm currently adding features as I'm following the tutorial.