<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
span.EmailStyle19
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:#1F497D;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1338997593;
mso-list-type:hybrid;
mso-list-template-ids:-894025372 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">On the question of what is an OpenStack app, do we differentiate between end user applications and operator automation/management tools?
<o:p></o:p></span></a></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Note that Igor did mention that his definition of OpenStack application was in relationship to his discussion, but since it has kicked off the topic, lets try
and define what an OpenStack application is. I think Leong’s comments, are a good start.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">An OpenStack application is an application that can run on an OpenStack Cloud, or an application that utilizes any of the OpenStack services.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Arial",sans-serif;color:#1F497D">Craig Sterrett</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">
<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><a name="_____replyseparator"></a><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Sun, Yih Leong [mailto:yih.leong.sun@intel.com]
<br>
<b>Sent:</b> Tuesday, May 17, 2016 8:43 AM<br>
<b>To:</b> Fox, Kevin M <Kevin.Fox@pnnl.gov>; Igor Marnat <imarnat@mirantis.com>; user-committee@lists.openstack.org<br>
<b>Subject:</b> Re: [User-committee] [app] OpenStack Apps Community, several suggestions how to improve collaboration<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The discussion of “what is an OpenStack app” also came out in the App Ecosystem group.<o:p></o:p></p>
<p class="MsoNormal">It is great if we can agree on a definition across different working groups.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In response to Igor email, here’s my initial thoughts, <o:p>
</o:p></p>
<p class="MsoNormal">An OpenStack application:<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo2"><![if !supportLists]><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">
</span></span><![endif]>is an application that can be executed on an OpenStack cloud OR<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo2"><![if !supportLists]><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">
</span></span><![endif]>is an application that utilize any of the OpenStack services
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">For (2), an application can be “decomposed” into multiple components where they are still “executed/deployed” on existing on-prem virtualization environment, however, one of the component can utilize an OpenStack service (e.g. Swift) by
calling the swift api to read/write object storage.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It is not necessary that an OpenStack “must” lives in apps.openstack.org. This restricted definitions of an app.<o:p></o:p></p>
<p class="MsoNormal">However, an OpenStack App “can be” listed in apps.openstack.org for wider community to consume.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It is not necessary that an OpenStack “must” be either Murano, Heat, Glance, TOSCA template.
<o:p></o:p></p>
<p class="MsoNormal">However, an OpenStack “can be” defined/orchestrated using Murano, Heat, Glance, TOSCA.<o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Fox, Kevin M [<a href="mailto:Kevin.Fox@pnnl.gov">mailto:Kevin.Fox@pnnl.gov</a>]
<br>
<b>Sent:</b> Tuesday, May 17, 2016 8:37 AM<br>
<b>To:</b> Igor Marnat <<a href="mailto:imarnat@mirantis.com">imarnat@mirantis.com</a>>;
<a href="mailto:user-committee@lists.openstack.org">user-committee@lists.openstack.org</a><br>
<b>Subject:</b> Re: [User-committee] [app] OpenStack Apps Community, several suggestions how to improve collaboration<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">Big +1 from me.<br>
<br>
The only thing I think is missing is, I'd suggest one more goal for your key goals list. To give App Developers more of a voice when it comes to missing features and incompatibilities that makes writing generic OpenStack Apps difficult.<br>
<br>
The rest sounds really good and I have some templates that can be contributed once there is a place to do so.<br>
<br>
Thanks,<br>
Kevin<o:p></o:p></span></p>
<div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="color:black">
<hr size="2" width="100%" align="center">
</span></div>
<div id="divRpF788697">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"> Igor Marnat [imarnat@mirantis.com]<br>
<b>Sent:</b> Tuesday, May 17, 2016 3:13 AM<br>
<b>To:</b> <a href="mailto:user-committee@lists.openstack.org">user-committee@lists.openstack.org</a><br>
<b>Subject:</b> [User-committee] [app] OpenStack Apps Community, several suggestions how to improve collaboration</span><span style="color:black"><o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Colleagues, <br>
having attended many sessions and talked to many customers, partners and contributors in Austin I’d like to suggest several improvements to how we develop OpenStack apps and work with the Community App Catalog (<a href="https://apps.openstack.org/" target="_blank">https://apps.openstack.org/</a>). <br>
<br>
Key goals to achieve are:<br>
- Provide contributors with an ability to collaborate on OpenStack apps development<br>
- Provide contributors and consumers with transparent workflow to manage their apps<br>
- Provide consumers with information about apps - how it was developed and tested<br>
- To summarize - introduce the way to build community working on OpenStack apps<br>
<br>
<b>What is OpenStack application</b><br>
OpenStack is about 6 years young and all these years discussions about it are in progress. Variety of applications is huge, from LAMP stacks and legacy Java apps to telco workloads and VNF apps. There is working group which works on a definition of "What is
OpenStack application", hopefully community will agree on definition soon.<br>
<br>
For the sake of our discussion below let us agree on a simple approach: an OpenStack application is any software asset which 1. can be executed on an OpenStack cloud, 2. lives in
<a href="http://apps.openstack.org" target="_blank">apps.openstack.org</a>. So far there are Murano applications, Heat templates, Glance images and TOSCA templates.<br>
<br>
<b>Introduction to OpenStack development ecosystem</b><br>
OpenStack was introduced about 6 years ago. Over these years community grown significantly. There were 8 companies contributing to OpenStack in Austin (1-st release). In Mitaka (13-th release) there were 64 companies contributing.<br>
<br>
One of the reasons for this growth is the set of sophisticated tools the OpenStack contributor ecosystem has chosen to use or build to enable collaboration:<br>
- software repositories: <a href="http://git.openstack.org/cgit/openstack/nova" target="_blank">
http://git.openstack.org/cgit/openstack/nova</a>, <a href="http://git.openstack.org/cgit/openstack/neutron" target="_blank">
http://git.openstack.org/cgit/openstack/neutron</a>, ..<br>
- bug trackers: <a href="https://launchpad.net/nova" target="_blank">https://launchpad.net/nova</a>,
<a href="https://launchpad.net/neutron" target="_blank">https://launchpad.net/neutron</a>, ...<br>
- same instance of gerrit for all the projects for code review: <a href="https://review.openstack.org/" target="_blank">
https://review.openstack.org/</a><br>
- gating test infrastructure <a href="http://zuul.openstack.org/" target="_blank">
http://zuul.openstack.org/</a><br>
- common approach to release management, repositories management, naming, tons of other things managed by review in
<a href="https://review.openstack.org/#/q/status:open+project:openstack/governance" target="_blank">
https://review.openstack.org/#/q/status:open+project:openstack/governance</a><br>
- IRC channels, etherpads, meetings and mailing lists<br>
- governance to manage all of the above<br>
<br>
All of the above is what we can call OpenStack collaboration ecosystem and it is a key factor for OpenStack community success.<br>
<br>
<b>Introduction to OpenStack apps development ecosystem</b><br>
Now when OpenStack is mature and have it up and running is not a big deal, focus of community and customers shifts from "how do I get a running cloud" to "what do I do with running cloud".<br>
<br>
Use cases of different cloud users are very different, however one can identify and develop standard building blocks which can be reused by cloud users (service providers, DevTest teams, ...). Many cloud users want to contribute their homegrown apps upstream
because:<br>
- it allows to other people to use it and improve it<br>
- community can implement missing parts<br>
- community can help with testing and maintaining an app<br>
<br>
Year ago we introduced Community App Catalog for OpenStack <a href="http://apps.openstack.org" target="_blank">
http://apps.openstack.org</a> as an integration/distribution point of customer experience/apps. This initiative is successful, there are about 100 software assets of various kinds which can be run on OpenStack. For further growth we need to make several changes
in a way we approach collaboration around OpenStack Apps. Namely, we need to provide an ability to apps developers to collaborate on application development.<br>
<br>
<b>OpenStack Community App Catalog is there, what else?</b><br>
Community App Catalog <a href="http://apps.openstack.org" target="_blank">http://apps.openstack.org</a> allows to publish/consume apps to/from it.<br>
<br>
"The OpenStack Community App Catalog is designed to use the same tools for submission and review as other OpenStack projects. As such we follow the OpenStack development workflow" [0].<br>
<br>
To follow OpenStack development workflow, apps developers need to have:<br>
- dedicated repositories & code review system to collaborate on code<br>
- mailing lists, IRC channels, core reviewers teams<br>
- common approach to QA<br>
- governance model to manage all of the above<br>
<br>
Most of the above is missing for apps developers now. App Catalog provides central place to store final artifacts (ready apps, like .exe files in Win world) but there is no centralized infrastructure to collaborate on development of source code of apps.<br>
<br>
Apps developers partially use infrastructure of OpenStack core projects (Heat & Murano) - repositories and bug trackers. Other than that they are on their own, there are no teams, no mailing lists, no IRC channels for apps developers - most of the items from
the list above is missing.<br>
<br>
[0] <a href="https://wiki.openstack.org/wiki/App-Catalog#How_to_contribute" target="_blank">
https://wiki.openstack.org/wiki/App-Catalog#How_to_contribute</a><br>
<br>
<b>All right, we need to change something. What exactly?</b> <o:p></o:p></span></p>
<div>
<p class="MsoNormal"><b><span style="color:black"><br>
</span></b><span style="color:black">1. We need to introduce a team which manages content of Community App Catalog, decides which new assets can be added, decides on a workflow for apps publishing, maintaining, consuming. This team could be a complimentary
team working alongside the Community App Catalog implementation team (engine, backend, frontend); or within the team itself<br>
<br>
2. There should be separated repositories for source code of apps from Community App Catalog. These repositories should not be stored under openstack label as they do not relate to core OpenStack projects. Core project teams are not responsible for maintaining
apps. <br>
<br>
3. Bug tracking for apps should be separated from bug tracking for core projects.<br>
<br>
4. There should be teams working on apps with core reviewers, IRC channels and mailing lists. These teams should differ from core projects teams.<br>
<br>
5. Given #1 - #4 it seems reasonable to develop governance model specific for OpenStack Apps Community, which differs (when it’s necessary) from governance model of OpenStack Community.<br>
<br>
Let us develop such a governance model, implement changes described above and build community of OpenStack apps developers.<br>
<br>
PS. There is representative discussion in comments to <a href="https://review.openstack.org/#/c/309383/" target="_blank">
https://review.openstack.org/#/c/309383/</a>.<br>
Some team wants to add new repository for CI/CD Murano app. Should it be part of Murano core project? Rather not. Should it be part of BigTent? Well, rather not as BigTent is for core OpenStack services, not for workloads on top of it. At the same time team
wants to use some OpenStack infra resources (at least gerrit for now) as this project is obviously beneficial for OpenStack. We need to have an ability to resolve similar requests in a centralized manner - there are more teams who want to publish source code
of their OpenStack apps and there is no established workflow for that.<br>
<br>
<b>Agree. What’s next?</b><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><b><span style="color:black"><br>
</span></b><span style="color:black">Suggested plan:<br>
- Introduce label openstack-apps, put repositories with source code of OpenStack Apps under it, i.e.:<br>
* <a href="http://git.openstack.org/cgit/openstack-apps/murano-apps" target="_blank">
http://git.openstack.org/cgit/openstack-apps/murano-apps</a><br>
* <a href="http://git.openstack.org/cgit/openstack-apps/heat-templates" target="_blank">
http://git.openstack.org/cgit/openstack-apps/heat-templates</a><br>
* <a href="http://git.openstack.org/cgit/openstack-apps/tosca-workflows" target="_blank">
http://git.openstack.org/cgit/openstack-apps/tosca-workflows</a><br>
- Agree with OpenStack Community App Catalog team on how content of App Catalog is managed and by whom<br>
- Describe workflow of how to add source code of new application to repositories, who approves its addition<br>
- Introduce simplified workflow of publishing new Application to the catalog:<br>
* register/login<br>
* push/update<br>
* done<br>
- Introduce teams (core reviewers) contributing to/maintaining Murano apps, Heat templates, ...<br>
- Establish channels of communications with potential contributors (mailing list, meetings, IRC/slack channel, ... ?)<br>
- Agree with contributors on QA process for applications and how we track it in Community App Catalog
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">To simplify commenting and tracking of the plan above I put last two sections with suggested steps to the etherpad <a href="https://etherpad.openstack.org/p/OpenStackAppsCommunity" target="_blank">https://etherpad.openstack.org/p/OpenStackAppsCommunity</a><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Please share your thoughts and comments.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Regards, <o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:black">Igor Marnat<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>