Jumping on a tcon/hangout sounds healthy, but given I'm traveling right now
in Europe and timing is difficult I'm going to comment inline here.


- callsites need to be modules aware to use the right factory method to
> instantiate the modular object
>

I don't know how else you'd accomplish making certain components of the
system *modular* unless we changed the way we instantiated the components.
This one seems fairly self-evident to me, but perhaps there's a trick we
could play instead? Are you thinking something LD_PRELOAD-esque here? But
works well with C++?


> - mesos-core owners need to be aware of modules and versioning when they
> change the abstract API
>

Yes, definitely, anyone hacking in Mesos should be aware that changing the
API of something like the Allocator might break all Allocator
implementations that exist out there. This is pretty fundamental to module
systems and one of the reasons why the design has a flexible, albeit more
complicated, verification/versioning component.


> - module owners need to be aware of the modules API and versioning
>

As they should as well, since it would be nice to give us some flexibility
in the future to deal with the mistakes we're bound to make.


> - customers (end-users) have to be modules aware and set their runtime
> configuration correctly
>

Mesos will always function without the need for any external modules, as it
does today. But yes, if an operator wants to use a module than they will
definitely need to update the configuration to do so. The example I'm
thinking about here is LoadModule from Apache HTTPD.


> - errors in versioning or modules will only be caught at runtime
>

This is an artifact of the design constraints. In fact, perhaps it wasn't
highlighted explicitly in the design document, but we'd definitely like to
support modules in binary format, like an RPM (as you can do with Apache
HTTPD modules as well). That implies that a module developer might be
building their module independently of an operator building Mesos.
Moreover, it implies that if there is anything we definitely want to make
rock solid in our design it's what happens when such a module is launched
with a running Mesos cluster, hence the design's focus on verification and
versioning. Perhaps the design is too complicated and we should settle on
something simpler, like forcing every build of a module to be associated
with a single Mesos version, but regardless, an operator might still make a
mistake when configuring Mesos and we must do the verification at runtime.


> My alternative proposal requires the following:
>

Sorry if I'm just out of the loop here, but did you share a proposal with
the mailing list or on JIRA that I missed? I'm having a hard time following
your statements about your proposal without that context. That would
definitely help facilitate a discussion via tcon/hangout as well.

Reply via email to