Hey Connor,

It would be great to hear back about this and get the ball rolling on a
shared registry. Let me know what you think!

Thanks,
Dave

On Wed, Dec 3, 2014 at 1:11 PM, Dave Lester <daveles...@gmail.com> wrote:
>
> Hi Connor,
>
> Thanks for sharing the work you've been doing with Universe. Sounds
> complimentary and pretty exciting! I thought I'd take a stab at making some
> clarifications.
>
> To rephrase your proposal by using a comparison, you're proposing the
> "homebrew model" of package management here in terms of how the registry is
> maintained, correct? A registry of metadata that's hosted via a single
> GitHub repository, that community members submit pull requests to when they
> want to have a release included in the registry.
>
> In this case of Homebrew, they manage "formulas"; in our case it would be
> package.json files (which is how NodeJS handles package info).
>
> *Architecture*
> The only way Universe diverges from my original thinking is that you're
> advocating decentralization of package metadata, whereas my original
> thought was to have it much more centralized. There's no reason it couldn't
> be brought together through a single interface (command-line, or searchable
> web interface) so I don't think it's incompatible technically, although I
> do think it creates some potential social/governance overhead (more below).
>
> *Metadata*
> The package.json file is minimal and similar to what you see in most
> package management systems. Where you're taking it a step further is a JSON
> manifest for how to actually run the program, which is outside of the scope
> of what I was hoping to accomplish but it looks awesome.
>
> *Managing The Registry*
> One part of your proposal that's unclear to me is when information is
> pushed to the registry repository, and how often (for each release, or just
> when the package is first added). Additionally, what information is pushed
> here -- just a pointer to the git repo? It's my current understanding that
> the package.json and framework.json files are both within the actual
> package's repo, not the registry. I would love to hear how you're thinking
> about this.
>
> If it's just a pointer to another repo, it would make it possible for any
> package already vetted to become part of the registry to do their own
> updates without requiring someone to accept a PR. I think this is ideal. If
> it's the latter, it brings up some interesting questions related to who
> would manage this and under what guidelines they would do this vetting;
> we'd essentially get a PR for every release within the community at that
> point.
>
> *The Registry "Home"*
> I feel strongly that this should be a community-driven effort, and I see
> your proposal along with my own as very compatible. Would love to work
> together, and if this works as I hope it will be a huge driver of activity
> in the ecosystem.
>
> Dave
>
> On Tue, Dec 2, 2014 at 1:43 AM, Jing Dong <j...@qubitdigital.com> wrote:
>
>> I like the idea of having a single UI for installing frameworks. One Web
>> UI endpoint for managing setting and view state of multiple installed
>> frameworks.
>>
>>
>> On 2 Dec 2014, at 09:26, Billy Bones <gael.ther...@gmail.com> wrote:
>>
>> Wooo mesosphere is making such a good work pushing forward Mesos
>> technologies!
>>
>> I deeply think that Mesos should implement registry as a core feature.
>>
>> Let me explain that, Installing manually frameworks / modules / other
>> third party adds-on is quite cool when you're beginner and want to learn
>> how the things works, but once you're in production, you've to be fast and
>> react quickly.
>>
>> Let said that I'm a system engineer that have customers requests like
>> "Hum... Could you had this " insert Framework/module/other name here" on
>> our cluster region?", I'll have to add it as soon and quick as possible on
>> the targeted environment, I'll be OK to do it twice, but I wont make my job
>> a request nightmare and I'll probably search for a way to provide to my
>> customers a restrictive access (WebUI) to the cluster manager and allow
>> them to deploy those new add-on by themself.
>>
>> With this study case in mind, I'll be happy to have a registry which
>> allow a filtering mechanism to hide or show frameworks/modules/etc by
>> status (Official Apache Content / Public Content / Private Content).
>>
>> Here is my thoughts about the registry articulation:
>>
>>    - Mesos Registry is an integrated part of Mesos master services.
>>    - Mesos Registry is an endpoint available to WebUI and CLI.
>>    - Mesos Registry is nothing but a metadata registry.
>>    - Mesos Registry save its configs and metadata on a key/value store
>>    (zookeeper?).
>>    - Mesos Registry is empty at the first launch.
>>    - Mesos Registry as three views: Official Apache Content | Publicly
>>    Maintained Content | Private Maintained Content
>>    - Mesos Registry views content is:
>>    - Official Apache Content == Link to existing Apache add-ons hosted
>>       on Github/Git repository + metadata (Like those proposed by Dave and
>>       Connor).
>>       - Publicly Maintained Content == Links to existing repositories
>>       (Github / Git / other) + metadata (Like those proposed by Dave and 
>> Connor).
>>       - Private Content == Links to existing private (GIT/GITHUB/Other
>>       repositories) + metadata (Like those proposed by Dave and Connor), this
>>       repository is kinda special as it is hosted and created by the cluster
>>       operators and could be a mixed content of locally maintained repository
>>       (GIT repos on a HDFS or TAR on HDFS) and public content repository 
>> cloned
>>       from the public content URL/Metadata.
>>
>> I don't know if I'm really clear, so if I'm not, let me know it, I'll do
>> some sketches :D
>>
>>
>> 2014-12-02 1:53 GMT+01:00 Connor Doyle <con...@mesosphere.io>:
>>
>>> Hi Dave,
>>>
>>> This is a timely topic, since we have been prototyping and mocking up
>>> something similar at Mesosphere.  We created a new public GitHub repository
>>> for it about three weeks ago called "universe" (
>>> http://github.com/mesosphere/universe).
>>>
>>> Although we have added some informal specs, it's very malleable at this
>>> point.  We're very much interested in making our "universe" compatible
>>> with, or the same as, the registry you're proposing.  Without delving into
>>> implementation details, some of the goals we have in mind are outlined
>>> below.
>>>
>>> Data Source:
>>>
>>> The package repository should be easily consumable by third-party
>>> command-line and other programs.  There should be a condensed “index”
>>> representation of the package repository available.
>>>
>>> Packages within the repository should be versioned.
>>>
>>> The package repository format itself should be versioned.
>>>
>>> Decentralization and Composability:
>>>
>>> The package metadata should be hosted in a public place (we like GitHub)
>>> so that additional packages can be added by the community by simply
>>> submitting pull requests.  We have added some rudimentary commit hooks and
>>> automated validation to protect the repo against breaking changes.
>>>
>>> It’s important that no single entity “owns the keys” to the universe,
>>> and that the spec and implementation remain public.  It should be easy and
>>> free for organizations to maintain a private package repository.
>>>
>>> A corollary is that it should be easy for consumers to pull from a
>>> hierarchy of upstream repositories.  One setup we have in mind is that an
>>> organization might have staging and production repositories running
>>> internally.  Packages are pushed to staging where integration testing can
>>> run before “deployment” to production.  If a package isn’t in the local
>>> repository it might be looked up and installed from upstream.
>>>
>>> <hierarchy.png>
>>>
>>>
>>> Repositories should be able to be proxied and cached in this way.
>>> Organizations should be able to isolate their datacenter but also
>>> selectively add external packages for experimentation. The system should be
>>> sufficiently portable and extensible to accomodate these and similar use
>>> cases.
>>>
>>> Meta-Framework Descriptors:
>>>
>>> Our conception of the package repository is a bit more expansive than
>>> just Mesos frameworks; it includes descriptions of how to install any piece
>>> of server software on a Mesos cluster.  Frameworks and non-frameworks alike
>>> may be installed using some other meta-framework that’s responsible for
>>> starting all other cluster services.  Likely candidates for this role are
>>> the long-lived frameworks: Aurora, Marathon, Singularity, and eventually
>>> Kubernetes.  In any case, the repository spec should not be prescriptive
>>> with respect to this choice.
>>>
>>> The package repository metadata should make it easy for Mesos framework
>>> authors (and authors of non-Mesos-aware programs) to describe how to
>>> install their software on a Mesos cluster.  To this end, our prototype
>>> package spec allows for Meta-framework descriptor files for each package in
>>> the repository.  For example for a given package we might see a
>>> `marathon.json` file as well as a `my-app.aurora` file.
>>>
>>> An obvious concern is how to specify site-specific arguments upon
>>> installation.  Here packages should describe data that must be marshalled
>>> from the environment (e.g. by prompting a user) and combined with the raw
>>> meta-framework descriptor to launch the app.  These configuration
>>> parameters should be agnostic of the supported meta-frameworks.  More
>>> concretely, in our prototype we describe configuration data in terms of a
>>> JSON-Schema.
>>>
>>> CLI Integration:
>>>
>>> Part of our proposed package format is an optional descriptor for how to
>>> fetch and install the command-line tools for interacting with the
>>> application.  For now, we only have one implementation of this, which is to
>>> fetch a python egg from PyPI.
>>>
>>> Governance:
>>>
>>> All in all, we think that making this effort more community driven is a
>>> healthy way to proceed.  Any input is very welcome.  For example, if others
>>> think that what we have is a good starting point we could transfer
>>> ownership of the repository to the mesos organization on GitHub.
>>>
>>> Cheers,
>>> --
>>> Connor Doyle
>>> http://mesosphere.com
>>>
>>>
>>>
>>>
>>>
>>> On Nov 30, 2014, at 17:32, Dave Lester <daveles...@gmail.com> wrote:
>>>
>>> As the number of Mesos frameworks grows (and now, a module system), I
>>> think it's time to create a community-maintained registry with the goal of
>>> making frameworks and modules easier to discover, contribute to, and
>>> install.
>>>
>>> There's already a JIRA ticket tracking this (MESOS-1759) and I've
>>> chatted with several folks (thanks in particular Victor Vieux, Tom Arnfeld,
>>> Vinod Kone, Timothy St Clair, and Joe Stein). I'd like to advance the
>>> conversation by offering a proposal on the public mailing list.
>>>
>>> I imagine two initiatives to achieve this:
>>>
>>> 1) Shared hosting via a GitHub org. I'm not sure if you're familiar with
>>> how Jenkins maintains their plugins on GitHub [1], but they allow
>>> individual plugins to have their own repo within their GH org. Plugins are
>>> repos with a specific naming convention (in their case, they've appended
>>> "-plugin" to the repo name but this isn't the same approach we'd need to
>>> take). Having a shared GH org creates greater visibility to what people are
>>> doing, and encourages community participation and ownership.
>>>
>>> In the case of Mesos, not all frameworks will jump at the chance to have
>>> community hosting which is fine. But particularly for smaller frameworks, I
>>> think this is a good option given the success Jenkins has had. We
>>> could potentially use the existing /mesos github org, or create a new org
>>> /mesos-extensions or something of the like. It seems like the only
>>> potential snag here is that we'll want to be explicit that these aren't
>>> Apache-blessed plugins and instead maintained by the larger ecosystem, but
>>> I believe we can achieve that by offering a notice in the GH org
>>> description.
>>>
>>> 2) A registry that allows framework writers to publish new versions of
>>> their frameworks to a central repository that could be programmatically
>>> accessed and rendered online. The v1 could be incredibly simple, but I
>>> think this is a foundational piece that can grow with the project in the
>>> future. Since this is a little bit more-involved, I've created a separate
>>> Google Doc [2] to begin drafting the scope for this:
>>> https://docs.google.com/document/d/1sOoPtEyLlST5GTU5iSccqWUsAOlJhf4N9cHoylylYgY/edit?usp=sharing,
>>> and have intentionally punted on some of the implementation details until
>>> the scope is finalized and I gauge interest from users and potential
>>> collaborators.
>>>
>>> What do you think? If folks are on board I will assign the JIRA issue to
>>> myself and get to work; I'd also welcome collaborators to help get this off
>>> the ground since I think it will be a boost for the community. Feedback
>>> is welcome!
>>>
>>> Thanks,
>>> Dave
>>>
>>> [1] https://github.com/jenkinsci/
>>> [2]
>>> https://docs.google.com/document/d/1sOoPtEyLlST5GTU5iSccqWUsAOlJhf4N9cHoylylYgY/edit?usp=sharing
>>>
>>>
>>>
>>
>

Reply via email to