digitalmars.D.announce - Ocean preview finally open sourced
- Leandro Lucarella (48/48) Jun 30 2016 Hello again Dland! I'm happy to finally announce the open
- Stefan Koch (3/7) Jun 30 2016 I like the structTable :)
- Chris (2/2) Jun 30 2016 How much would it take to make it cross platform (Windows, Mac).
- Leandro Lucarella (7/10) Jun 30 2016 I'd say some parts should work out of the box (there many things
- Chris (4/10) Jun 30 2016 Hm. I'd have to see what works. I can't afford to be stuck to one
- Leandro Lucarella (12/23) Jul 01 2016 Maybe in some future we might want to do some sort of separation
- Chris (7/18) Jul 01 2016 It'd be great, if there was some sort of separation so that users
- Leandro Lucarella (9/19) Jul 01 2016 Yes, the library is fairly well documented but one of our big
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (26/30) Jul 01 2016 I find the licensing a bit confusing. For instance
- Leandro Lucarella (20/50) Jul 01 2016 Oh, well. Sorting out the license(s) were one of the major pains
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (9/15) Jul 01 2016 *nods* I was only looking at a few random filenames that sounded
- Jacob Carlborg (6/13) Jul 01 2016 Walter, or someone, already asked the authors of Tango to re-license it....
- Andrea Fontana (6/9) Jul 04 2016 https://github.com/sociomantic-tsunami/ocean/blob/v2.x.x/src/ocean/math/...
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (4/13) Jul 04 2016 Well, it is simple. You can probably implement it in less than an
Hello again Dland! I'm happy to finally announce the open sourcing of our Ocean base library, just it time to keep our word and make it in June ;-) https://github.com/sociomantic-tsunami/ocean To quote the README: --- Ocean is a general purpose library, compatible with both D1 and D2, with a focus on supporting the development of high-performance, real-time applications. This focus has led to several noteworthy design choices: * Ocean is not cross-platform. The only supported platform is Linux. * Ocean assumes a single-threaded environment. Fiber-based multi-tasking is favoured, internally. * Ocean aims to minimise use of the D garbage collector. GC collect cycles can be very disruptive to real-time applications, so Ocean favours a model of allocating resources once then reusing them, wherever possible. Ocean began life as an extension of Tango, some elements of which were eventually merged into Ocean. --- Please consider this as a very early release, this is why we are "branding" it as a "preview". This is basically because, despite being working on the open sourcing full steam since DConf ended, we couldn't manage to set up all the infrastructure to be able to put all our development efforts in the public repo yet. So unfortunately the main development will still happen inside Sociomantic for this first phase (we'll only synchronize releases). When this will switch finally happens will depend on how much work it would imply to build a public infrastructure (mainly for automatic testing), and honestly, what's the community reception (we understand it might not be all that tempting being a D1 project that gets automatically converted to D2, thus not very idiomatic D2 :). Anyway, the main big step is done. You can take a look at the code, use it or steal parts of it if you find them useful (although please have a look at the licensing terms, even when all our code is Boost, there is code inherited from Tango that isn't), criticize it, and if you are really nice, fill issues and make pull requests! Also, in the near future we plan to write a blog post explaining a bit more about what Ocean is about, we'll let you know when it's ready, but we didn't want to delay the release for it :-) Thank you!
Jun 30 2016
On Thursday, 30 June 2016 at 16:45:43 UTC, Leandro Lucarella wrote:Hello again Dland! I'm happy to finally announce the open sourcing of our Ocean base library, just it time to keep our word and make it in June ;-) [...]I like the structTable :)
Jun 30 2016
How much would it take to make it cross platform (Windows, Mac). Unfortunately, we still have to cater for those two outliers :)
Jun 30 2016
On Thursday, 30 June 2016 at 20:59:42 UTC, Chris wrote:How much would it take to make it cross platform (Windows, Mac). Unfortunately, we still have to cater for those two outliers :)I'd say some parts should work out of the box (there many things that are completely OS agnostic, like containers, cache, bindings to other libraries like PCRE, etc.), and some other it would be quite some work (for example all the I/O is tied to epoll, there is one class to work with direct I/O that's super Linux specific, etc.).
Jun 30 2016
On Thursday, 30 June 2016 at 21:20:16 UTC, Leandro Lucarella wrote:I'd say some parts should work out of the box (there many things that are completely OS agnostic, like containers, cache, bindings to other libraries like PCRE, etc.), and some other it would be quite some work (for example all the I/O is tied to epoll, there is one class to work with direct I/O that's super Linux specific, etc.).Hm. I'd have to see what works. I can't afford to be stuck to one OS.
Jun 30 2016
On Thursday, 30 June 2016 at 21:32:47 UTC, Chris wrote:On Thursday, 30 June 2016 at 21:20:16 UTC, Leandro Lucarella wrote:Maybe in some future we might want to do some sort of separation between the more algorithmic stuff and the more platform-dependent stuff, because we actually spent quite some time and effort in removing some Tango's abstractions. It is a very conscious design decision to remove as many abstraction layers as possible, and for the platform-dependent part, we definitely don't want to go back. We need to work very closely to the OS facilities, so abstractions are plain noise and source of inefficiency for us :) But if there is interest, I don't discard the splitting idea in some future.I'd say some parts should work out of the box (there many things that are completely OS agnostic, like containers, cache, bindings to other libraries like PCRE, etc.), and some other it would be quite some work (for example all the I/O is tied to epoll, there is one class to work with direct I/O that's super Linux specific, etc.).Hm. I'd have to see what works. I can't afford to be stuck to one OS.
Jul 01 2016
On Friday, 1 July 2016 at 08:54:27 UTC, Leandro Lucarella wrote:Maybe in some future we might want to do some sort of separation between the more algorithmic stuff and the more platform-dependent stuff, because we actually spent quite some time and effort in removing some Tango's abstractions. It is a very conscious design decision to remove as many abstraction layers as possible, and for the platform-dependent part, we definitely don't want to go back. We need to work very closely to the OS facilities, so abstractions are plain noise and source of inefficiency for us :) But if there is interest, I don't discard the splitting idea in some future.It'd be great, if there was some sort of separation so that users know exactly what to use for cross-platform development and what not. Docs or some sort of a cheat sheet would be nice too. In this way users can see, if Ocean contains something interesting for the task at hand. There's less of a chance of adoption, if you have to go through the source code to see what it does.
Jul 01 2016
On Friday, 1 July 2016 at 09:13:46 UTC, Chris wrote:On Friday, 1 July 2016 at 08:54:27 UTC, Leandro Lucarella wrote:Yes, the library is fairly well documented but one of our big debts is to build the documentation. Unfortunately the project lacked document generation for basically all its life, so even when some sort of DDoc-ish format is used, it not strictly DDoc because it was never actually generated, so when we start generating the docs we'll need to do a lot of cleanup and fixing. But generating Docs is another thing that is high in our TODO list.But if there is interest, I don't discard the splitting idea in some future.It'd be great, if there was some sort of separation so that users know exactly what to use for cross-platform development and what not. Docs or some sort of a cheat sheet would be nice too. In this way users can see, if Ocean contains something interesting for the task at hand. There's less of a chance of adoption, if you have to go through the source code to see what it does.
Jul 01 2016
On Thursday, 30 June 2016 at 16:45:43 UTC, Leandro Lucarella wrote:(although please have a look at the licensing terms, even when all our code is Boost, there is code inherited from Tango that isn't), criticize it, and if you are really nice, fill issues and make pull requests!I find the licensing a bit confusing. For instance https://github.com/sociomantic-tsunami/ocean/blob/v2.x.x/src/ocean/math/Probability.d Lists the licensing as: Tango 3 BSD Clause + Academic Free License v3.0. But the original work Cephes seems to carry this ad-hoc license: https://github.com/jeremybarnes/cephes/blob/master/readme « Some software in this archive may be from the book _Methods and Programs for Mathematical Functions_ (Prentice-Hall or Simon & Schuster International, 1989) or from the Cephes Mathematical Library, a commercial product. In either event, it is copyrighted by the author. What you see here may be used freely but it comes with no support or guarantee. The two known misprints in the book are repaired here in the source listings for the gamma function and the incomplete beta integral. » Maybe it would be a good idea to sort out the code that is pure Boost, or obtain a boost license where the authors are known, because complicated licensing is a hindrance even if the "spirit" is the same across the licenses.
Jul 01 2016
On Friday, 1 July 2016 at 09:43:53 UTC, Ola Fosheim Grøstad wrote:On Thursday, 30 June 2016 at 16:45:43 UTC, Leandro Lucarella wrote:Oh, well. Sorting out the license(s) were one of the major pains and time consuming tasks we had to do to opensource this, and apparently despite our best efforts there are stuff that we didn't see. This comes from Tango, so we kept the original Tango license. I would assume Tango people did a check on this, and had some sort of permission to change the license, but I will try to contact the author to make sure this is the case. If not, then we'll probably remove that module (we removed a lot of Tango modules because of dubious origin/license already). https://github.com/sociomantic-tsunami/ocean/issues/2(although please have a look at the licensing terms, even when all our code is Boost, there is code inherited from Tango that isn't), criticize it, and if you are really nice, fill issues and make pull requests!I find the licensing a bit confusing. For instance https://github.com/sociomantic-tsunami/ocean/blob/v2.x.x/src/ocean/math/Probability.d Lists the licensing as: Tango 3 BSD Clause + Academic Free License v3.0. But the original work Cephes seems to carry this ad-hoc license: https://github.com/jeremybarnes/cephes/blob/master/readme« Some software in this archive may be from the book _Methods and Programs for Mathematical Functions_ (Prentice-Hall or Simon & Schuster International, 1989) or from the Cephes Mathematical Library, a commercial product. In either event, it is copyrighted by the author. What you see here may be used freely but it comes with no support or guarantee. The two known misprints in the book are repaired here in the source listings for the gamma function and the incomplete beta integral. » Maybe it would be a good idea to sort out the code that is pure Boost, or obtain a boost license where the authors are known, because complicated licensing is a hindrance even if the "spirit" is the same across the licenses.We know that, and again, the license was by far the biggest nightmare of the open sourcing effort. Honestly we don't have the time to take on this, but this is an area where external contributions would be extremely helpful. Anyone can contact the original authors and ask for permission (although to make sure we probably need to check the full Tango history to see all the people that actually contributed, sometimes the Authors section is quite bogus).
Jul 01 2016
On Friday, 1 July 2016 at 10:31:59 UTC, Leandro Lucarella wrote:Oh, well. Sorting out the license(s) were one of the major pains and time consuming tasks we had to do to opensource this, and apparently despite our best efforts there are stuff that we didn't see.*nods* I was only looking at a few random filenames that sounded interesting just to get an idea of what it covered and what it could be useful for :-).We know that, and again, the license was by far the biggest nightmare of the open sourcing effort.Yes, this is often an issue when internal frameworks are open sourced. Non-boost licenses might be less problematic for people who just run the executables on their own servers than for people who release binaries/source.
Jul 01 2016
On 01/07/16 12:31, Leandro Lucarella wrote:We know that, and again, the license was by far the biggest nightmare of the open sourcing effort. Honestly we don't have the time to take on this, but this is an area where external contributions would be extremely helpful. Anyone can contact the original authors and ask for permission (although to make sure we probably need to check the full Tango history to see all the people that actually contributed, sometimes the Authors section is quite bogus).Walter, or someone, already asked the authors of Tango to re-license it. They said no, I don't recall if not all authors could be tracked down or if it was plain no. -- /Jacob Carlborg
Jul 01 2016
On Thursday, 30 June 2016 at 16:45:43 UTC, Leandro Lucarella wrote:Hello again Dland! I'm happy to finally announce the open sourcing of our Ocean base library, just it time to keep our word and make it in June ;-)https://github.com/sociomantic-tsunami/ocean/blob/v2.x.x/src/ocean/math/random/engines/CMWC.d I always hoped to see a CMWC implementation in phobos. If it was default (pseudo-)random implementation I guess it will break all benchmark on random-related tests...
Jul 04 2016
On Monday, 4 July 2016 at 08:34:15 UTC, Andrea Fontana wrote:On Thursday, 30 June 2016 at 16:45:43 UTC, Leandro Lucarella wrote:Well, it is simple. You can probably implement it in less than an hour and put Boost on it: https://en.wikipedia.org/wiki/Multiply-with-carry#Complementary-multiply-with-carry_generatorsHello again Dland! I'm happy to finally announce the open sourcing of our Ocean base library, just it time to keep our word and make it in June ;-)https://github.com/sociomantic-tsunami/ocean/blob/v2.x.x/src/ocean/math/random/engines/CMWC.d I always hoped to see a CMWC implementation in phobos. If it was default (pseudo-)random implementation I guess it will break all benchmark on random-related tests...
Jul 04 2016