blob: 9e34140f15bdba6e3226c8f1188c6f65c0ba8b64 [file] [log] [blame]
<!doctype html>
<html>
<head>
<title>Apache CloudStack: Open Source Cloud Computing</title>
<meta name="description" content="CloudStack is open source cloud computing software for creating, managing, and deploying infrastructure cloud services">
<meta itemprop="name" content="Apache Cloudstack">
<meta itemprop="description" content="CloudStack is open source cloud computing software for creating, managing, and deploying infrastructure cloud services">
<meta itemprop="image" content="https://cloudstack.apache.org/images/monkey-144.png">
<meta property="og:title" content="Apache Cloudstack">
<meta property="og:description" content="CloudStack is open source cloud computing software for creating, managing, and deploying infrastructure cloud services">
<meta property="og:site_name" content="Apache Cloudstack"/>
<meta property="og:image" content="https://cloudstack.apache.org/images/monkey-144.png">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Apache Cloudstack">
<meta name="twitter:description" content="CloudStack is open source cloud computing software for creating, managing, and deploying infrastructure cloud services">
<meta name="twitter:image:src" content="https://cloudstack.apache.org/images/monkey-144.png">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=1">
<link href="stylesheets/bootstrap.css" rel="stylesheet" media="screen">
<link href="stylesheets/font-awesome.css" rel="stylesheet">
<link href="stylesheets/bootswatch.min.css" rel="stylesheet">
<link href="stylesheets/custom.css" rel="stylesheet">
<link rel="shortcut icon" href="images/favicon.ico">
<link rel="icon" href="images/favicon.ico">
<!-- Commenting out this template stuff until we figure out how to make it work with middleman
{% if headers.atom %}
<link rel="alternate" href="{{ headers.atom.url }}"
type="application/atom+xml" title="{{ headers.atom.title }}" />
{% endif %}
{% if headers.base %}<base href="{{ headers.base }}" />{% endif %}
-->
<!-- {% if headers.notice %}{{ headers.notice }}{% endif %} -->
<!-- Twitter Bootstrap and jQuery after this line. -->
<script src="https://code.jquery.com/jquery-latest.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<script>
$('.dropdown-toggle').dropdown();
$('.nav-collapse').collapse();
</script>
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a href="index.html" class="navbar-brand"><img class="" src="images/new-logo-sm.png" style="width: 200px" alt="Apache Cloudstack"></a>
<button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target="#navbar-main">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse" id="navbar-main">
<ul class="nav navbar-nav">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="about">About <span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="about">
<li><a tabindex="-1" href="about.html">About</a></li>
<li class="divider"></li>
<li><a tabindex="-1" href="https://blogs.apache.org/cloudstack/" target="_blank">Blog<span class="glyphicon glyphicon-share-alt pull-right"></span></a></li>
<li><a tabindex="-1" href="history.html">History</a></li>
<li><a tabindex="-1" href="features.html">Features</a></li>
<li><a tabindex="-1" href="cloudstack-faq.html">FAQ</a></li>
<li><a tabindex="-1" href="who.html">Who We Are</a></li>
<li><a tabindex="-1" href="security.html">Security</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="community">Community <span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="community">
<li><a tabindex="-1" href="contribute.html">Get Involved</a></li>
<li><a tabindex="-1" href="developers.html">Developers</a></li>
<li><a tabindex="-1" href="mailing-lists.html">Mailing Lists</a></li>
<li><a tabindex="-1" href="http://cloudstackcollab.org/" target="_blank">Events &amp; Meetups <span class="glyphicon glyphicon-share-alt pull-right"></span></a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="users">Users <span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="users">
<li><a tabindex="-1" href="users.html">Known Users</a></li>
<li><a tabindex="-1" href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/Case+Studies" target="_blank">Case Studies <span class="glyphicon glyphicon-share-alt pull-right"></span></a></li>
<li><a tabindex="-1" href="survey.html">Take Survey</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="docs">Documentation <span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="docs">
<li><a tabindex="-1" href="http://docs.cloudstack.apache.org" target="_blank">Getting Started Docs</span></a></li>
<li><a tabindex="-1" href="http://docs.cloudstack.apache.org/projects/cloudstack-installation" target="_blank">Installation Docs</a></li>
<li><a tabindex="-1" href="http://docs.cloudstack.apache.org/projects/cloudstack-administration" target="_blank">Administration Docs</a></li>
<li><a tabindex="-1" href="http://docs.cloudstack.apache.org/projects/cloudstack-release-notes" target="_blank">Release Notes</a></li>
<li><a tabindex="-1" href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/Home" target="_blank">Wiki</a></li>
<li><a tabindex="-1" href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+Books" target="_blank">Books</a></li>
<li><a tabindex="-1" href="api.html">API Documentation</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="download">Download <span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="download">
<li><a tabindex="-1" href="downloads.html">CloudStack Releases</a></li>
<li><a tabindex="-1" href="downloads.html#cloudmonkey">CloudMonkey</a></li>
<li><a tabindex="-1" href="archives.html">Release Archive</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="apache">Apache <span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="apache">
<li><a tabindex="-1" href="http://apache.org">Apache Software Foundation</a></li>
<li><a tabindex="-1" href="http://www.apache.org/licenses/">License</a></li>
<li><a tabindex="-1" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a tabindex="-1" href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="bs-docs-section">
<div class="row">
<div class="col-lg-12">
<div class="page-header">
<h1 id="indicators">Developer Resources for Apache CloudStack</h1>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<h2>Contributing as a Non-Committer</h2>
<p>If you're a committer on an Apache project, it means that you can commit directly to the project's repository. For instance, with Apache CloudStack committers are allowed to directly push commits into the git repository.</p>
<p>Non-committers, however, have to submit patches for review. Apache CloudStack accepts <a href="https://github.com" target="_blank">GitHub</a> pull requests. If you are new to Git and GitHub, check these two links:</p>
<p>
<ul>
<li><a href="https://try.github.io/levels/1/challenges/1" target="_blank">GitHub 15 minutes </a>tutorial</li>
<li><a href="https://help.github.com/articles/creating-a-pull-request/" target="_blank">Creating </a>Pull Requests</li>
</ul>
</p>
<p>Apache CloudStack has a read-only mirror on <a href="https://github.com/apache/cloudstack" target="_blank">GitHub</a> that is kept in sync with the canonical Git repo maintained by the Apache Software Foundation. Submitting GitHub pull requests is the easiest way to get your contribution upstream. For detailed instructions see the link below:</p>
<br /><a href="https://github.com/apache/cloudstack/blob/master/CONTRIBUTING.md" target="_blank">GitHub Contribution Guidelines</a>
<h3>Submitting a patch through JIRA</h3>
<p>While we encourage you to submit your contribution through GitHub pull requests, you can also attach a patch in a JIRA ticket. For the purpose of these instructions, we'll assume that you already have a system with <a href="http://git-scm.com/" target="_blank">Git</a> and have found a bug to fix or have a feature that you'd like to submit, and you're willing to contribute that code or documentation under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License 2.0</a>.</p>
<p>Further, if you're fixing a bug we'll assume that you've either filed a bug report (where you will attach your patch) or are submitting a fix for a known bug. If you find a bug and would like to fix it, that's awesome! Please be sure to file the bug too, though.</p>
<p>If you want to add a feature, you should bring it up for discussion on the <a href="mailto:dev@cloudstack.apache.org">dev@cloudstack.apache.org</a> mailing list before implementing it. This ensures that it meshes with the plans that other contributors have for Apache CloudStack, and that you're not doing redundant work. Other developers may also have ideas for the feature or suggestions that will help you land the feature without having to re-do the work. More information about our mailing lists can be found <a href="/mailing-lists.html">here</a>.</p>
<p>In short, communication is a vital part of making a contribution to an Apache project.</p>
<h3> Getting Started </h3>
<p>First, lets make sure that you've added your name and email to your `~/.gitconfig`:</p>
<pre>
$ git config --global user.name "Your Name"
$ git config --global user.email you@domain.com
</pre>
<p>You'll grab the CloudStack source with git:</p>
<pre>
$ git clone https://gitbox.apache.org/repos/asf/cloudstack.git
</pre>
<p>If you already have the source, make sure you're working with the most recent version. Do a `git pull` if you cloned the source more than a few hours ago. (Apache CloudStack development can move pretty fast!)</p>
<pre>
$ git checkout -b mybranch
</pre>
<p>This does two things: One, it creates the branch <em>mybranch</em> and two, it changes your working branch to <em>mybranch</em>. Running `git branch` will show you which branch you're working on, with an asterisk next to the active branch, like so:</p>
<pre>
[user@localhost cloudstack]$ git branch
master
* mybranch
</pre>
<p>Make whatever changes you're going to make, be sure to use <code>git add</code> to stage the changes, and then you're going to commit the changes to your working branch:</p>
<pre>git commit -m "Insert a meaningful summary of changes here."</pre>
<p>Finally, you can create a patch and attach it to the JIRA issue that you created for the bug you are fixing.</p>
<pre>git format-patch master --stdout &gt; ~/patch-name.patch</pre>
<h3>Review</h3>
<p>Once you've submitted your pull request, you should receive a response within a few days. If you receive no response within a week, please ping the cloudstack-dev mailing list (dev@cloudstack.apache.org).</p>
<h3>Screencast</h3>
<p>If you are new to git you might want to watch this screencast:</p>
<iframe width="560" height="315" src="//www.youtube.com/embed/3c5JIW4onGk?list=PLb899uhkHRoZCRE00h_9CRgUSiHEgFDbC" frameborder="0" allowfullscreen=""></iframe>
<h3>Further Reading</h3>
<p>You might want to peruse the <a href="http://www.apache.org/foundation/getinvolved.html" target="_blank">Get Involved</a> page on Apache.org, and the <a href="http://commons.apache.org/patches.html" target="_blank">On Contributing Patches</a> doc as well. Note that some of that does not apply to Apache CloudStack, as we're using git rather than Subversion. But do respect the original style of the CloudStack code, and ensure that you're using spaces rather than tabs, and your patches have Unix line endings (LF) rather than Windows-type line endings (CRLF).</p>
</div>
<div class="col-lg-4">
<div class="list-group">
<div class="list-group-item active">Resources</div>
<a href="https://issues.apache.org/jira/browse/CLOUDSTACK" class="list-group-item" target="_blank">Jira</a>
<a hread="https://github.com/apache/cloudstack/blob/master/CONTRIBUTING.md" class="list-group-item" target="_blank">Contribution Guidelines</a>
<a href="https://builds.apache.org/view/A-D/view/Cloudstack/" class="list-group-item" target="_blank">ASF Jenkins</a>
<a href="http://jenkins.buildacloud.org/" class="list-group-item" target="_blank">CloudStack Jenkins</a>
<a href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/Development+101" class="list-group-item" target="_blank">CloudStack Development 101</a>
<a href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/Setting+up+CloudStack+Development+Environment" class="list-group-item" target="_blank">Setting up a Dev Environment</a>
<a href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/Coding+conventions" class="list-group-item" target="_blank">Code Conventions</a>
<a href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/Testing" class="list-group-item" target="_blank">Testing CloudStack</a>
</div>
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-title">Git Repositories</h3>
</div>
<div class="panel-body">
<p>The git repositories are hosted on Apache infrastructure, and can be found here:</p>
<ul>
<li><a href="https://gitbox.apache.org/repos/asf/cloudstack.git" target="_blank">Apache CloudStack source code</a></li>
<li><a href="https://gitbox.apache.org/repos/asf/cloudstack-cloudmonkey.git" target="_blank">Apache CloudStack Cloudmonkey source code</a></li>
<li><a href="https://github.com/apache/cloudstack-ec2stack" target="_blank">Apache CloudStack EC2stack Inteface</a></li>
<li><a href="https://github.com/apache/cloudstack-gcestack" target="_blank">Apache CloudStack GCEstack Interface</a></li>
<li><a href="https://github.com/apache/cloudstack-docs" target="_blank">General Documentation</a></li>
<li><a href="https://github.com/apache/cloudstack-docs-install" target="_blank">Installation Guide</a></li>
<li><a href="https://github.com/apache/cloudstack-docs-admin" target="_blank">Administrative Guide</a></li>
<li><a href="https://github.com/apache/cloudstack-docs-rn" target="_blank">Release Notes</a></li>
<li><a href="https://github.com/apache/cloudstack-www" target="_blank">Apache CloudStack Website</a></li>
</ul>
<p>To get the most recent source for Apache CloudStack, use:</p>
<pre>
git clone https://gitbox.apache.org/repos/asf/cloudstack.git
</pre>
<p>Similarly, clone the cloudstack-cloudmonkey repository or the other repositories to get access to the most recent source of all CloudStack subprojects.</p>
<p>For projects related to Apache CloudStack but not under ASF governance, see the <a href="https://github.com/cloudstack-extras" target="_blank">CloudStack-extras repositories on GitHub</a>.</p>
</div>
</div>
</div>
</div>
<footer>
<p>Copyright © 2017 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br/>
"Apache", "CloudStack", "Apache CloudStack", the Apache CloudStack logo, the Apache CloudStack Cloud Monkey logo and the Apache feather logos are registered trademarks or trademarks of The Apache Software Foundation.</p>
<p><a href="/trademark-guidelines.html">Apache CloudStack Trademark Usage</a> - <a href="/bylaws.html">Apache CloudStack Community ByLaws</a></p>
</footer>
</div>
</div>
</div>
</body>
</html>