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