Great comments Vinod! ----- Original Message ----- > From: "Vinod Kone" <vinodk...@gmail.com> > To: "dev" <dev@mesos.apache.org> > Sent: Tuesday, September 23, 2014 1:59:26 PM > Subject: Re: Mesos Modules Design > > Ok. I finally had a chance to read the design doc, go through the comments > on this thread and glance at the review. Here are my comments. > > I like the concept of dynamic loading of libraries when it comes to making > the lives of end users/operators easy, esp when they want to mix and match > the modules. > > I agree with Dominic though that we should make sure to minimize the > burden/overhead of core developers when it comes to dealing with modules. > FWIW, the implementation that I've seen seems easy enough to deal with and > doesn't look like it adds much of a performance overhead.
+1, right now I think it's pretty non-intrusive. > > That said, the versioning part seems a bit complicated, as BenH alluded to. > Can we come up with something that's simple as the first cut but still > extensible? Also, it would be great if interface breakage could be > automatically deduced at load time. +1 - I think it's still POC at this point. You'll never know how an interface is going to evolve until it's actually written and used. The current semantics are pretty simple, but I think once we start iterating it will become apparent. Ideally I would like to have some way of denoting EXPERIMENTAL such that external clients don't depend on api until it's hardened. > But I guess we still need a module > version to deal with protocol changes without interface changes. To ensure > the devs update the versions in module manager, I suggest adding a comment > on top of the current components (Allocator, Isolator etc) mentioning that > there is a corresponding module that needs to be updated. Better yet, maybe > we could use a naming convention (e.g., s/Allocator/AllocatorModule/) for > easy visual cue. Good idea, perhaps using "Plugin" vs. Module. > > More importantly, I would like to understand how we are going to ensure the > quality of modules being written. In other words how do we, as a community, > ensure that a badly written module doesn't leave a bad taste in users > adopting Mesos. Simple semantics always work, MESOS FAILED TO LOAD (BOB'S) EXTERNAL MODULE.. Fail early. "Please check YOUR XYZ CONFIG FILE" > Should we come up with a test suite (functional and > performance) that runs on CI that module writers are required to test > against? What is the contract for support when something in modules break? > Should the users/operators ask on #mesos and dev lists or module writer's > lists? Would the users even know where the problem lies? Would Mesos devs > always know? I think this is where most of the burden/overhead lies. Of > course, this is the same problem with frameworks, but I think this is much > more relevant for modules because they (could) fundamentally change the > behavior of Mesos. Test suites are always good, perhaps we could breakout a couple of JIRAs around this. > > Even more fundamentally, how are we going to ensure that Mesos core gets > better features vs having the cool features developed as (possibly paid) > modules? For example, should Kerberos auth and SSL transport be modules or > should they be integrated into the core? As an open source project, how do > we ensure that the community resources are properly utilized in a fair and > neutral manner to help Mesos core grow? You've asked a very difficult question to answer. Stewardship depends almost entirely on a combination of contributor ethics + organizations business model. Luckily now a days, upstream 1st is the most common mode of operation as it ensures you have many eyeballs looking at it. (With enough people, all bugs are shallow). > Are we going to have > guidelines/opinions on what should/could be modularized or is everything > fair game? It would be great to understand how other successful open source > projects toe this line. Has anyone done any research regarding this? Right now I think jurisprudence is in order. Only make something a plugin if there is legitimate reason to do so. > > > On Tue, Sep 23, 2014 at 9:27 AM, George Sudarkoff <geo...@sudarkoff.com> > wrote: > > > Hello everybody! > > > > I'm new here. But why not jump in in the middle of the conversation and > > voice an opinion anyway, right? :) > > > > On 23 Sep 2014, at 09:17, Dominic Hamon <dha...@twopensource.com> wrote: > > > > > On Tue, Sep 23, 2014 at 5:57 AM, Tim St Clair <tstcl...@redhat.com> > > wrote: > > > > > >> > > >> > > >> ----- Original Message ----- > > >>> From: "Benjamin Hindman" <b...@eecs.berkeley.edu> > > >>> To: "dev" <dev@mesos.apache.org> > > >>> Sent: Tuesday, September 23, 2014 3:14:31 AM > > >>> Subject: Re: Mesos Modules Design > > >>> > > >>>> > > >>>> - create abstract classes to define interfaces to objects that should > > >> be > > >>>> modular > > >>>> > > >>> > > >>> We're all in agreement here! > > >>> > > >>> - build modules as static libraries that can be assembled at link time > > to > > >>>> create custom Mesos builds > > >>>> > > >>> > > >>> Okay, but unless I'm missing something here we'll still need a level of > > >>> indirection to wire everything together. What would that look like? > > >>> > > >>> Also, why ask an operator to go through the extra step of relinking > > >> Mesos? > > >>> Asking the operator to relink means they'll need a Mesos build > > >> environment, > > >>> while most folks will likely just have Mesos installed via an RPM (or > > >>> similar). I'm not convinced that getting a link error will be a better > > >> user > > >>> experience then getting a runtime error that cleanly prints out > > something > > >>> along the lines of "Version mismatch: the XXYYZZ module is not > > compatible > > >>> with this version of Mesos". > > >> > > >> To ask service operators to re-link and possibly re-deploy mesos is a > > >> non-starter imho. One of the goals of enabling "plugins" around key > > >> interfaces is to avoid this type of operation. > > >> > > > > > > ​What, concretely, does a service operator do if they have a bunch of > > > modules that give runtime version errors? What are there options to get a > > > running version? > > > > "Runtime" doesn't necessarily mean "four days after you start it". What > > I'd expect from a piece of software with plugins is to load the plugins and > > verify the versions/compatibility at launch time. If I drop a new plugin in > > and restart a client, I know what to do when the client complains about the > > incompatible versions. > > > > > > -- George > > > > > > > > > > > > > > > >> > > >> -- > > >> Cheers, > > >> Timothy St. Clair > > >> Red Hat Inc. > > >> > > > > > > > > > > > > -- > > > Dominic Hamon | @mrdo | Twitter > > > *There are no bad ideas; only good ideas that go horribly wrong.* > > > > > -- Cheers, Timothy St. Clair Red Hat Inc.