Adoption is good. Competition is good.
On Wed, Jul 23, 2014 at 12:44 PM, Diptanu Choudhury <[email protected]> wrote: > Just saw this - https://github.com/groupon/jesos > > > On Sat, Jul 19, 2014 at 3:22 AM, Vladimir Vivien < > [email protected]> 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 < >> [email protected]> 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 < >>> [email protected]> 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 <[email protected]> >>>> 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" <[email protected]> >>>>> *To: *[email protected] >>>>> *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 <[email protected]> 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" <[email protected] <http://JAVASCRIPT-BLOCKED;>> >>>>>> > To: [email protected] <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" <[email protected] <http://JAVASCRIPT-BLOCKED;> >>>>>> > >>>>>> > >> To: [email protected] <http://JAVASCRIPT-BLOCKED;> >>>>>> > >> Cc: [email protected] <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 <[email protected] >>>>>> <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 < >>>>>> [email protected] <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 <[email protected] >>>>>> <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 < >>>>>> [email protected] <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> > -- Vladimir Vivien

