Just saw this - https://github.com/groupon/jesos


On Sat, Jul 19, 2014 at 3:22 AM, Vladimir Vivien <vladimir.viv...@gmail.com>
wrote:

> BenH,
> I created https://issues.apache.org/jira/browse/MESOS-1618 epic to
> capture my thought on that Apache Mesos compatibility test suite for
> framework clients.
>
>
> On Thu, Jul 17, 2014 at 1:29 PM, Benjamin Hindman <
> benjamin.hind...@gmail.com> wrote:
>
>> I love the idea of a Mesos test suite that you could run your framework
>> against. Fantastic! Vladimir, want to create an epic in JIRA for this?
>>
>> Also, and this is likely my fault for the original naming, but I think we
>> should start using the "pure client" nomenclature rather than "native
>> client".
>>
>>
>> On Tue, Jul 15, 2014 at 11:34 AM, Vladimir Vivien <
>> vladimir.viv...@gmail.com> wrote:
>>
>>> 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.
>>>
>>> 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.
>>>
>>>
>>> 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
>>>
>>
>>
>
>
> --
> Vladimir Vivien
>



-- 
Thanks,
Diptanu Choudhury
Web - www.linkedin.com/in/diptanu
Twitter - @diptanu <http://twitter.com/diptanu>

Reply via email to