This is a great initiative and something I wanted to do since the first day
I did `git clone` for Mesos :)
Happy to help wherever I can, Kapil - just say the word!

In my opinion, we should take full advantage of git submodules and move
stout/libprocess out into their own repositories (which, incidentally,
already exist [0, 1]) and move all the binaries (*.tar.gz) out of our repo:
I never quite understood why we're carrying along zookeeper and protobuf
(just to mention two), which I'm sure both Apache and Google can take good
care of (and we just install as part of the build process - or whatever).

I've recently been using git submodules and they're pretty awesome, also
allowing other teams who may want to use either library the opportunity to
do so (and contribute back - without having to be part of Mesos proper).

So, totally +1 to this idea.

[0] https://github.com/3rdparty/stout
[1] https://github.com/3rdparty/libprocess

-- 
*Marco Massenzio*
http://codetrips.com

On Tue, Feb 9, 2016 at 4:14 PM, Kapil Arya <ka...@mesosphere.io> wrote:

> Hi All,
>
> TLDR: Move everything from 3rdparty/libprocess/3rdparty/* into 3rdparty/.
> (Optionally) Move libprocess/stout to the top-level directory.
>
> I wanted to start some discussion around reorganizing stuff inside
> "3rdparty". I apologize for the length of the email, please bear with me.
>
> Traditionally, 3rdparty has been used to hold all Mesos dependencies
> (zookeeper, libprocess, protobuf, stout, etc.). Further,
> libprocess/3rdparty was to hold all libprocess dependencies (which may in
> turn be Mesos dependencies as well).
>
> As I understand, the original motivation was to emphasize that libprocess
> is an independent project which depends on "stout", which in turn is also
> an independent project.
>
> However, in the current code base, we don't strictly follow the 3rdparty
> structure. For example, stout has a dependency on picojson and
> google-protobuf, but we don't put these two packages inside
> 3rdparty/libprocess/3rdparty/stout/3rdparty/.
>
> In light of these anomalies, I want to propose that we flatten out the
> 3rdparty directory and put all packages (libprocess, stout, protobuf,
> picojson, zookeeper, etc.) at the same level in 3rdparty. We can still use
> "--with-XYZ=..." to the full extent as needed.
>
> To take it a step further, I want to propose that we bring libprocess and
> stout out of 3rdparty/ and move them at the top level (i.e., make them
> peers of src/). That way, all code in 3rdparty/ is stuff from "third"
> parties and is used only when "--with-bundled" is defined (by default).
> This hierarchy will still allow us to keep libprocess and stout as separate
> independent projects.
>
> The motivation for this proposal came when dealing with 3rdparty
> dependencies for module development. A module developer needs access to
> protobuf, picojson, glog, etc., and for that matter, the exact versions of
> these packages that Mesos was compiled with.
>
> We want to solve this problem by installing module-specific 3rdparty
> dependencies into "${pkglibdir}/3rdparty" as part of "make install" (if
> configured with something like "--enable-install-module-dependencies").
> (There is a discussion going on in a separate thread).
>
> Further, as of today, when we install Mesos using "make install", we
> install stout headers in "${prefix}/include/stout". However, stout has
> dependencies on picojson[1] and google-protobuf headers which may not be
> present on the machine. This leaves stout, and in turn libprocess and Mesos
> headers, fairly broken. I understand that this issue is somewhat orthogonal
> to the main issue being discussed in this mail, but I wanted to put it out
> since it's related.
>
> Any thoughts, comments, concerns are most welcome!
>
> Best,
> Kapil
>
>
> [1]: Picojson issue was resolved as part of
> https://reviews.apache.org/r/41424/ which installs picojson.h into the
> include-dir.
>

Reply via email to