Jump to page: 1 2
Thread overview
Ocean preview finally open sourced
Jun 30, 2016
Leandro Lucarella
Jun 30, 2016
Stefan Koch
Jun 30, 2016
Chris
Jun 30, 2016
Leandro Lucarella
Jun 30, 2016
Chris
Jul 01, 2016
Leandro Lucarella
Jul 01, 2016
Chris
Jul 01, 2016
Leandro Lucarella
Jul 01, 2016
Leandro Lucarella
Jul 01, 2016
Jacob Carlborg
Jul 04, 2016
Andrea Fontana
June 30, 2016
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!
June 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 :)
June 30, 2016
How much would it take to make it cross platform (Windows, Mac). Unfortunately, we still have to cater for those two outliers :)
June 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.).
June 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.
July 01, 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:
>>
>> 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.

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.
July 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.
July 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.

July 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:
>> 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.

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.
July 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:
>> (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

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

> «
> 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).
« First   ‹ Prev
1 2