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. > > > > 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 > > >