Make memory caching functions thread safe
On more than one occasion, there might be a time where you'd like to perform memory reading across multiple threads. The problem is, if caching is enabled, a race condition becomes very likely. Using mutual exclusion before every read is wasteful since the cache is not always being written to and reading is probably safe (need to double check). Either way, that whole operation needs to be made thread safe though some research needs to be done first.
That mutex thing we talked about a while back. The people working on that gaming code I showed you earlier are considering relicensing their threading code en masse. Any preferences on licenses? We have not made the final decision.
I personally license most of my code under ZLib. But MIT works just as well. For me, the most important consideration is the end-user (and other developers, if applicable). I'll give you three examples of problems that could arise if a bad license is chosen.
- Licensing conflicts prevent a developer from bundling third-party executables which are required for their application to work. This means that the end-user has to go out and manually download them from the third-party website. Bad user experience.
- Licensing conflicts prevent a developer from statically compiling third-party libraries directly into their application. Why should we let them statically compile? because sometimes it's easier to distribute a single executable to the end-user without having them perform some sort of installation to ensure that all the dependencies get installed.
- Licensing conflicts prevent a developer from taking a chunk of code from another project and integrating it directly into their own project. This may sound awful but think about my situation, I have my own little project and I need a fast mutex implementation, should I really be forced to rely on some huge library when I only need a tiny part of it. Imagine if the library I had to rely on was Boost or Qt.
Now obviously I'm not saying that people should just be allowed to steal code or not properly attribute it, no, all I'm saying is that the restrictions should be relaxed enough to not get in the way of real fair-use scenarios that make life easier. You might also want to include a clause that requires people to make any modifications of library public (like Qt).
But I digress, every library is different and there are a lot of variables involved, so choose a license that best suits your needs. Just don't go into it being angry, like some of the open source community is, people will be assholes regardless of what license you choose, so choose one that makes your library the most usable.
We will certainly not go in angry, good advice. It is actually a corporate decision we decided we need less protections on the licensing front and having more people using the code is more important than the ability to take legal action against people misusing it. I am just trying to get perspective from a few people who showed interest, thank you for your in depth response, I will help take all this into account.
Also when are you planning on releasing 2.1.0? Do you need the mutex before then? I will try to get that relicensed early, but it if you need it "now" we can figure something out and get it out of the GPL3.
There is no set timeline and if certain features have to be held back then that's okay also. Thanks for taking my input into consideration, I hope your licensing decision goes really well.