Hi All-

Here is a summary of the recent "git repos" thread and online chat and what we are currently proposing. I will follow-up with a [VOTE] thread for the creation of the repos and project migration. Please reply to this thread if you want to discuss; leave that thread for casting votes.

We are planning to request the following git repos, mirrored at github.com/apache/* :

* brooklyn - just pointers / summaries / scripts for working with the other projects * brooklyn-server - everythng to run the Brooklyn server (w REST API and Karaf) * brooklyn-client - CLI for accessing REST server (in go; subject of other vote)
* brooklyn-ui - the JS GUI
* brooklyn-library - blueprints and tools which run on brooklyn-server
* brooklyn-docs - documentation (in markdown/ruby)
* brooklyn-dist - for building distros, incl source + binary tgz w all the above

More detail of the content of these repos is below.

The motivation for this is so that people can check out smaller projects and focus more easily on the pieces relevant to them. IE someone working on the UI or on the docs should not even need to look at server or dist. In addition languages are consistent within projects. There will be times when a change necessitates PR's to multiple projects (e.g. new UI feature with support in REST API) but we believe the above split will minimise that.

The addition of the *brooklyn-dist* project is the only change which has not been discussed at some length but its need was obvious when we discussed it. (It would be possible to put it into *brooklyn* but that would be rather confusing for people who land on that project and see a bunch of code but nothing useful; if anything of substance were in *brooklyn* people would probably expect it to be *brooklyn-server* which is a possibility but the consensus has been that it is better to keep it extremely light so as not to mask the other projects, any of which might be what someone visiting would be interested in.)

There was also some discussion about the *brooklyn-server* project being called *brooklyn-commons* instead. The idea of a grassy commons is nice but *server* is a more descriptive and accurate name (as most of the other projects don't depend on it per se).

Other key points:

* The releases we make will continue to look the same: the dist project will make a single big source and big binary, and maven artifacts for all maven projects. Automation in the brooklyn project or the brooklyn-dist project will build the projects in all the other repos to minimise the impact of the multiple repositories. * If we include a submodules setup in *brooklyn* it will be optional; people who don't like submodules won't have to use them. We may instead find that it is more convenient to provide scripts for working with the other git modules. * When we transfer the code to these repos we will exclude the offensive big files in the history. The incubator brooklyn repo will continue to exist but we will mark it as deprecated forwarding to the new location.

IMPORTANT: When we do this there will obviously be an impact on pull requests and branch development. We will endeavor to work through the PR queue and we will give some notice before the changes. If you miss this it won't be hard to take diffs and apply them to the different structure but it will be tedious!

Best
Alex


* brooklyn
empty for now, contains a README and instructions/scripts for subprojects;
    e.g. git submodules

* brooklyn-dist
    usage/all -> all
usage/dist -> dist
    usage/scripts -> scripts
    usage/downstream-parent
    usage/archetypes
    karaf (distro + other features - e.g. jsgui)
    ** new project brooklyn-server-cli which injects the JSGUI

* brooklyn-server
    parent
    api, core, policy
    util/*
    usage/rest-*
    camp/*
    usage/camp
    usage/cli -> usage/server-cli-abstract
        (assumes jsgui war is on classpath; injects into launcher)
    usage/logback-*
    usage/launcher (refactor so that WAR gets injected by server CLI)
    storage/hazelcast
    usage/qa
    usage/test-*
    karaf (code + itest + features needed for itest)

* brooklyn-ui
    jsgui

* brooklyn-client [subject of a separate vote]
    (new project, in go)

* brooklyn-library
software/*
    examples/*
    sandbox/* (?!)

* brooklyn-docs
    docs

END

Reply via email to