----- Original Message -----
> -1 for git submodules. I am really not keen on those; worked with them
> while working on Chromium and it was, to be frank, a mess to handle, update
> and maintain.
> 

I've also found submodules disappointing, and been watching on the sidelines as 
the boost community discovers what a pita they are.

A newer alternative is git subtree.  Full disclosure: I haven't actually worked 
with subtree, but it looks like a better system than submodules:
http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/



> I am rooting for separate repos. Maybe worth a non-binding vote?
> 
> Niklas
> 
> 
> On 17 July 2014 11:45, Tim St Clair <tstcl...@redhat.com> wrote:
> 
> > Inline -
> >
> > ------------------------------
> >
> > *From: *"Vladimir Vivien" <vladimir.viv...@gmail.com>
> > *To: *user@mesos.apache.org
> > *Sent: *Tuesday, July 15, 2014 1:34:37 PM
> >
> > *Subject: *Re: Mesos language bindings in the wild
> >
> > Hi all,
> >  Apologies for being super late to this thread.  To answer Niklas point at
> > the start of the thread: Yes, I am thrilled to contribute in anyway I can.
> >  The project is moving forward and making progress (slower than I want, but
> > progress regardless).
> >
> > Going Native
> > Implementing a native client for Mesos is an arduous process right now
> > since there's little doc to guide developers.  Once I went through C++ code
> > and a few emails, it became easy (even easier than I thought).  If the push
> > is for more native client, at some point we will need basic internals to be
> > documented.
> >
> > Mesos-Certified
> > Maybe a Mesos test suite can be used to certify native clients.  There are
> > tons of unit tests in the code that already validate the source code.
> >  Maybe some of those test logic can be pulled out / copied into a small
> > stand-alone mesos test server that clients can communicate with to run a
> > test suite (just an idea).  This along with some documentation would help
> > with quality of native clients.
> >
> >
> > +1.
> >
> >
> > In or Out of Core
> > Having native clients source hosted in core would be great since all code
> > would be in one location. Go code can certainly co-exist a subproject in
> > Mesos.  Go's build workflow can be driven by Make. Go's dependency
> > management can work with repo subdirectories (at least according to 'go
> > help importpath', I haven't tested that myself).  But, as Tom pointed out,
> > the thing that raises a flag for me is project velocity.  If author wants
> > to move faster or slower than Mesos release cycles, there's no way to do so
> > once the code is part of core.
> >
> > Anyway, I have gone on long enough.   Looking for ward to feedback.
> >
> >
> > I usually don't tread here, but perhaps a git-submodule works in this
> > narrow case.
> > Thoughts?
> >
> >
> >
> > On Tue, Jul 15, 2014 at 10:07 AM, Tim St Clair <tstcl...@redhat.com>
> > wrote:
> >
> >> Tom -
> >>
> >> I understand the desire to create bindings outside the core.  The point I
> >> was trying to make earlier around version semantics and testing was to
> >> 'Hedge' the risk.  It basically creates a contract between core &
> >> framework+bindings writers.
> >>
> >> No one ever intends to break compatibility, but it happens all the time
> >> and usually in some very subtle ways at first.  A great example of this is
> >> a patch I recently submitted to Mesos where the cgroup code was writing an
> >> extra <<endln out.  Earlier versions of the kernel had no issue with this,
> >> but recent modifications would cause the cgroup code to fail.  Very
> >> subtle,
> >> and boom-goes-the-dynamite.
> >>
> >> Below was an email I sent a while back, that outlines a possible
> >> hedge/contract.  Please let me know what you think.
> >>
> >> --------------------------
> >> >
> >> > Greetings!
> >> >
> >> > I've conversed with folks about the idea of having a more formalized
> >> release
> >> > and branching strategy, such that others who are downstream can rely on
> >> > certain version semantics when planning upgrades, etc.  This becomes
> >> doubly
> >> > important as we start to trend towards a 1.0 release, and folks will
> >> depend
> >> > heavily on it for their core infrastructure, and APIs (Frameworks, and
> >> EC).
> >> >
> >> > Therefore, I wanted to propose a more formalized branching and release
> >> > strategy, and see what others think.  I slightly modified this pattern
> >> from
> >> > the Condor & Kernel projects, which have well established processes.
> >> >
> >> > ------------------------------
> >> > Basic Idea:
> >> >
> >> > 1.) Create 2 Main Branches (Stable/Devel-Master based)
> >> > 2.) Devel releases are cadence/time based and lightly tested.
> >> > 3.) Stable series only accepts bug fixes.  Merge path for all bug fixes
> >> > deemed worthy, are through the stable series up to master.
> >> > 4.) @ some point devel goes through a *hardning phase* and becomes the
> >> new
> >> > stable.
> >> >
> >> > ------------------------------
> >> > Version Semantics:
> >> >
> >> > Major.Minor.Revision-PatchBuild
> >> >
> >> > Major:
> >> >  - Compatibility breakage (usually protocol or api shift), or enough
> >> minors
> >> >  to justify change.
> >>
> >>
> >> If there is a major version change it should be taken with care and
> >> notify downstream usually through the
> >>
> >> mailing lists.
> >>
> >>
> >> >
> >> > Minor:
> >> >  - Devel (Odd) - 1.1.x
> >> >  - Stable (Even) - 1.0.x
> >> >
> >> > Revision:
> >> >  - Devel - Cadence # Some set of feature enhancements
> >> >  - Stable - Bug and security fixes only (Higher bar of entry)
> >> >
> >> > PatchBuild:
> >> >  - Upstream - Whoops our bad, we found a bug or two
> >> >  - Downstream - Back-port build variant.
> >> >
> >> > ------------------------------
> >> > Series/Branches:
> >> >
> >> > Development Series - (Odd Minor #'s): 1.1.x
> >> > The development series branches/tags are cadence based, and come off of
> >> > master.  All new features are added to master.  All bug fixes should be
> >> > merged through the stable series into the master.  It should be ok to
> >> > introduce destabilizing features from time to time, provided its agreed
> >> upon
> >> > by a Sheppard.
> >> >
> >> > Stable Series - (Even Minor #'s): 1.0.x
> >> > Stable series should *only contain* bug fixes.  This way, downstream
> >> folks
> >> > have a common understanding that behavior should be maintained.  Should
> >> > downstream folks wish to back-port features, they can do that at their
> >> own
> >> > risk.  Every release of the stable series has some measure of quality >
> >> then
> >> > a +1.  E.g. running some clusters for a period of time (X),
> >> >
> >>
> >>
> >> In this model, stable series should be "stable" for writers against the
> >> API(s).
> >>
> >>
> >> > Transition from Devel-> Stable:
> >> > After some point, the development series needs to go through a hardening
> >> > phase.  This could include static analysis + running on some production
> >> > cluster for a period of time.  Folks typically plan the transition
> >> around a
> >> > conference series in order to announce the cool new features.
> >>
> >>
> >> + You could test the bindings during this phase ^ but for stable series
> >> they should just work.
> >>
> >>
> >> > ------------------------------
> >>
> >> Cheers,
> >> Tim
> >>
> >>
> >> ------------------------------
> >>
> >> *From: *"Tom Arnfeld" <t...@duedil.com>
> >> *To: *user@mesos.apache.org
> >> *Sent: *Tuesday, July 15, 2014 2:50:47 AM
> >>
> >> *Subject: *Re: Mesos language bindings in the wild
> >>
> >> Hey Tim,
> >>
> >> I can see your point, and am finding it hard to think of any compelling
> >> arguments against the issue of fragmentation, but I do have a few
> >> thoughts.p
> >>
> >> That said, I would strongly suggest taking ease-of-use and language
> >> specific code structures into consideration. A huge monolithic build
> >> system
> >> might not be a good thing either, if I'm not mistaken that's why twitter
> >> built Pants.
> >>
> >> Spark is actually a great example here, it's going to be a huge pain to
> >> publish PySpark to PYPI because of the way they structure the code, unless
> >> you force users to use a bleeding edge version of setuptools to be able to
> >> install the software. In the case of PySpark (and other libraries that
> >> require compiled dependencies, see Hadoofus on github which I collaborated
> >> on this exact issue). It's a nightmare. Projects that work well with
> >> python setuptools are projects that are just python, from my experience.
> >>
> >> That said, it's only a nightmare when you *have* precompiled dependencies
> >> that need to be part of the build process. This is no longer the case with
> >> the new mesos bindings, so why make it so hard?
> >>
> >> Take Go as another example (this is similar to installing pip
> >> dependencies from github too) - a user can simply plug in the path to a
> >> repository and away they go. It's easy, and will rapidly speed up adoption
> >> IMO. This isn't something that can easily be done if it's not in it's own
> >> repo, and the Mesos repository is pretty huge now.
> >>
> >> My opinion is largely from a users perspective. However, I would ask the
> >> question - how often does the framework API change in such a way that it
> >> breaks compatibility? Will there be a need to orchestrate releases among
> >> 20
> >> language bindings to get a release of the core out, how often? Would it be
> >> easier for developers to implement a change and also make that change
> >> across all languages at the same time, is that even really going to
> >> happen?
> >>
> >> It's also worth considering release cycles, with all bindings being built
> >> into the core, it requires them all the be release together (or it's a git
> >> tag pain). Given that lots of the bindings are going to be (and already
> >> are) community driven, and only a few people are in charge of the Mesos
> >> release cycle (taking at least a few weeks for a release to come out) the
> >> pace for each binding has to be the same, and there's no autonomy.
> >>
> >> My personal feeling is that develop user experience isn't thought about
> >> enough is these sorts of situations, and not having a good experience
> >> either to use or work on the code is a pain and can slow down adoption.
> >>
> >> Would be interested to hear what you all think, or if you completely
> >> disagree :-)
> >>
> >> Tom.
> >>
> >> On Tuesday, 15 July 2014, Tim St Clair <tstcl...@redhat.com> wrote:
> >>
> >>> So... your response basically capitulates to the fragmentation argument:
> >>>
> >>>
> >>> "Yes we will have binding strewn about of questionable quality that may,
> >>> or may not, work with core."
> >>>
> >>> The point that I'm trying to make is, fragmentation *is not* a good
> >>> thing.
> >>>
> >>> --------------------------------------
> >>> Case in point - The Hadoop Ecosystem (fragmentation)
> >>>
> >>> In order for anyone to make a salient stack of any measure, vendors have
> >>> to knit together components into a stack which can then be consumed by
> >>> the
> >>> masses.
> >>>
> >>> --------------------------------------
> >>> Counterpoint - Spark (curating) libraries
> >>>
> >>> Spark bundles 1st order interface libraries as part of a curated core.
> >>>  You are guaranteed that the core will inter-operate, and PySpark is
> >>>  given
> >>> 1st class standing.
> >>>
> >>> --------------------------------------
> >>>
> >>> This is a bad idea, unless there is a plan to hedge the risk.
> >>>
> >>> -Tim
> >>>
> >>>
> >>> ----- Original Message -----
> >>> > From: "yifan" <myan...@msn.com <http://JAVASCRIPT-BLOCKED;>>
> >>> > To: user@mesos.apache.org <http://JAVASCRIPT-BLOCKED;>
> >>> > Sent: Monday, July 14, 2014 7:10:34 PM
> >>> > Subject: Re: Mesos language bindings in the wild
> >>> >
> >>> > Hi Tim,
> >>> >
> >>> > I found that in zookeeper, they also separate the bindings from the
> >>> core.
> >>> >
> >>> > https://cwiki.apache.org/confluence/display/ZOOKEEPER/ZKClientBindings
> >>> >
> >>> > So, IMHO, I think it should be the maintainer's responsibility to keep
> >>> > the binding in healthy state, with clear documentation of which version
> >>> > of the mesos core they supports.
> >>> >
> >>> > Yifan
> >>> >
> >>> >
> >>> >
> >>> > On 07/14/2014 11:30 AM, Tim St Clair wrote:
> >>> > > So I fear the fragmentation that can occur if we provide native
> >>> bindings
> >>> > > outside of the core, unless there is some mechanism for testing, & a
> >>> well
> >>> > > established versioning scheme.
> >>> > >
> >>> > > IMHO, priority inversion on 'versioning' should come before bindings
> >>> to
> >>> > > ensure we adhere to policy.
> >>> > >
> >>> > > Thoughts?
> >>> > >
> >>> > > -Tim
> >>> > >
> >>> > >
> >>> > > ----- Original Message -----
> >>> > >> From: "Tom Arnfeld" <t...@duedil.com <http://JAVASCRIPT-BLOCKED;>>
> >>> > >> To: d...@mesos.apache.org <http://JAVASCRIPT-BLOCKED;>
> >>> > >> Cc: user@mesos.apache.org <http://JAVASCRIPT-BLOCKED;>
> >>> > >> Sent: Friday, July 11, 2014 10:22:59 AM
> >>> > >> Subject: Re: Mesos language bindings in the wild
> >>> > >>
> >>> > >> Very exciting. I'd vote +1 for splitting them out. Especially if you
> >>> > >> look at the common way of using Go imports, just stick the project
> >>> on
> >>> > >> GitHub and import it directly using "github.com/mesos/mesos-go" or
> >>> > >> similar.
> >>> > >>
> >>> > >> I guess one argument is that you have more fragmentation of the code
> >>> > >> (e.g every library has it's own copy of the protos) but I'm not sure
> >>> > >> that's a bad thing.
> >>> > >>
> >>> > >> Just my two cents. Looking forward to this!
> >>> > >>
> >>> > >>> On 11 Jul 2014, at 16:59, Thomas Rampelberg <tho...@saunter.org
> >>> <http://JAVASCRIPT-BLOCKED;>> wrote:
> >>> > >>>
> >>> > >>> I've started preparing the python bindings to hopefully take this
> >>> > >>> route ( https://reviews.apache.org/r/23224/ would love some
> >>> reviews!
> >>> > >>> ). In fact, there is already a native python implementation of both
> >>> > >>> libprocess and the framework apis! (
> >>> https://github.com/wickman/pesos/
> >>> > >>> , https://github.com/wickman/compactor ).
> >>> > >>>
> >>> > >>> What are the benefits of bindings being part of the project source
> >>> > >>> itself instead of having blessed implementations like mesos-python
> >>> > >>> where the source and versioning becomes separate? I've been running
> >>> > >>> into difficulties making automake and python's build tools play
> >>> nicely
> >>> > >>> together. It seems like there'd be more flexibility in general by
> >>> > >>> splitting them out.
> >>> > >>>
> >>> > >>>
> >>> > >>>> On Thu, Jul 10, 2014 at 3:57 PM, Niklas Nielsen <
> >>> nik...@mesosphere.io <http://JAVASCRIPT-BLOCKED;>>
> >>> > >>>> wrote:
> >>> > >>>> I just wanted to clarify - native, meaning _no_ dependency to
> >>> libmesos
> >>> > >>>> and
> >>> > >>>> native to its language (only Go, only Python and so on) i.e. use
> >>> the
> >>> > >>>> low-level API.
> >>> > >>>>
> >>> > >>>> Sorry for the confusion,
> >>> > >>>> Niklas
> >>> > >>>>
> >>> > >>>>
> >>> > >>>>> On 10 July 2014 15:55, Dominic Hamon <dha...@twopensource.com
> >>> <http://JAVASCRIPT-BLOCKED;>> wrote:
> >>> > >>>>>
> >>> > >>>>> In my dream world, we wouldn't need any native bindings. I can
> >>> imagine
> >>> > >>>>> having example frameworks or starter frameworks that use the
> >>> low-level
> >>> > >>>>> API
> >>> > >>>>> (the wire protocol with protocol buffers for message passing),
> >>> but
> >>> > >>>>> nothing
> >>> > >>>>> like we have that needs C or JNI, etc.
> >>> > >>>>>
> >>> > >>>>>
> >>> > >>>>>
> >>> > >>>>>
> >>> > >>>>> On Thu, Jul 10, 2014 at 3:26 PM, Niklas Nielsen <
> >>> nik...@mesosphere.io <http://JAVASCRIPT-BLOCKED;>>
> >>> > >>>>> wrote:
> >>> > >>>>>
> >>> > >>>>>> Hi all,
> >>> > >>>>>>
> >>> > >>>>>> I wanted to start a discussion around the language bindings in
> >>> the
> >>> > >>>>>> wild
> >>> > >>>>>> (Go, Haskell, native Python, Go, Java and so on) and possibly
> >>> get to a
> >>> > >>>>>> strategy where we start bringing those into Mesos proper. As
> >>> most
> >>> > >>>>>> things
> >>> > >>>>>> points towards, it will probably make sense to focus on the
> >>> native
> >>> > >>>>>> "bindings" leveraging the low-level API. To name one candidate
> >>> to
> >>> > >>>>>> start
> >>> > >>>>>> with, we are especially interested in getting Go native support
> >>> in
> >>> > >>>>>> Mesos
> >>> > >>>>>> proper (and in a solid state). So Vladimir, we'd be super
> >>> thrilled to
> >>> > >>>>> start
> >>> > >>>>>> collaborating with you on your current work.
> >>> > >>>>>>
> >>> > >>>>>> We are interested to hear what thoughts you all might have on
> >>> this.
> >>> > >>>>>>
> >>> > >>>>>> Thanks,
> >>> > >>>>>> Niklas
> >>> >
> >>> >
> >>> > --
> >>> > Gu Yifan
> >>> >
> >>> >
> >>>
> >>> --
> >>> Cheers,
> >>> Timothy St. Clair
> >>> Red Hat Inc.
> >>>
> >>
> >>
> >>
> >> --
> >> Cheers,
> >> Timothy St. Clair
> >> Red Hat Inc.
> >>
> >
> >
> >
> > --
> > Vladimir Vivien
> >
> >
> >
> >
> > --
> > Cheers,
> > Timothy St. Clair
> > Red Hat Inc.
> >
> 

Reply via email to