Hi everyone,

Right now cloudmonkey, a command line interface and interactive shell [0] for 
CloudStack (in tools/cli) is being released independently on cheese shop [1]. 
This is a proposal of how we can release it. Let me start by giving some 
background;

I started writing cloudmonkey because I wanted a cli and due to a jira issue 
[2]. It was written in Python because instead of starting from complete scratch 
I based it top of marvin which was written in Python and some text book 
functional programming tricks that generates closures or handlers for the shell 
on the fly used for autocompletion for 300+ apis etc. It has a build dependency 
on marvin (which depends on apidoc, which depends on cloudstack build targets 
=> indirectly cloudmonkey depends on CloudStack codebase) therefore I did not 
develop this in a separate repo but within the codebase.

Why we should not separate cloudmonkey: CloudStack itself is collection of a 
lot of plugins (hypervisor, acl, network), tools/extras (apidoc, cli, devcloud, 
marvin etc.) and add ons (though tightly coupled now, ex. ssvm, cpvm, router-vm 
etc.). If all these things are decided by the community to be separated out of 
the codebase as separate git repos, then we should separate out cloudmonkey as 
well.

Proposal to release cloudmonkey:

- Make cloudmonkey as the official CLI [2] as there is no other known and 
working CLI.

- The version on cloudmonkey release should reflect the version of CloudStack 
for which it was released or found to work with. Proposed name-version syntax 
is:
   cloudmonkey-<CloudStack version>-<cloudmonkey counter, a build number 
starting 0>
   For example for 4.1.0 it would be, cloudmonkey-4.1.0-0.

- The counter starts at 0 which would be the release that started with a 
CloudStack release, the increments of which would be hosted on pypi. Think this 
way, the official tar ball is available from apache.org but users installs from 
community maintained distribution place which is pypi for our case, just like 
we distribute  source tarballs from apache.org but we've apt/yum repos as well 
which are community maintained (someone in the community maintains that).

- The release cycles for cloudmonkey may be frequent, in that case it does not 
make sense to release it along with CloudStack only. So, the proposal is to 
release the 0 (gold) version (cloudmonkey-4.1.0-0 for ex.) along with 
CloudStack and host src on both pypi and apache.org and keep doing community 
releases on pypi i.e. voted and approved by community with a very fast release 
cycle and small voting window (say only 24 hours)

- Who can release? Any committer, PMC member is welcome to join the pypi 
project as an admin/owner. On apache.org it would be the PMC members at the 
time of CloudStack releases.

Suggestions, comments welcome.

Regards.

[0] 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+cloudmonkey+CLI
[1] http://pypi.python.org/pypi/cloudmonkey
[2] https://issues.apache.org/jira/browse/CLOUDSTACK-132

Reply via email to