It seems pretty recent, would be interesting to compare notes with pesos/compactor.
On 23 July 2014 19:46, Brian Wickman <wick...@apache.org> wrote: > wow, no. I was aware of dpark but I was unaware that they had rolled > their own driver. Interesting. > > > On Wed, Jul 23, 2014 at 11:17 AM, Tom Arnfeld <t...@duedil.com> wrote: > >> Did anyone know this existed >> https://github.com/douban/dpark/tree/master/dpark/pymesos ? Just came >> across that while googling... >> >> >> On 23 July 2014 18:28, Erik Erlandson <e...@redhat.com> wrote: >> >>> >>> >>> ----- 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. >>> > > >>> > >>> >> >> >