Thierry Carrez e793b45483 Explain "why opendev" on opendev.org index page
Update the contents for https://opendev.org/ default index page,
to be less of a transition explanation for existing OpenStack
infrastructure users, and more of an introduction for new users.

In particular:
- prominently display links to main opendev services
- explain what Opendev is and why we do it
- detail differences to expect from other development platforms

Change-Id: Idaefb41590df24e649a4fd5225cc1078f2903696
2020-09-03 15:13:49 +02:00

179 lines
11 KiB
Cheetah
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{template "base/head" .}}
<div class="home">
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center aligned centered column">
<div class="hero" id="opendev">
<img alt="OpenDev" class="logo" src="/img/opendev.svg" />
</div>
</div>
<div class="four wide center aligned centered column">
<div><img alt="Gitea" src="/img/git.svg" width="60"></div>
<a href="https://opendev.org/explore/organizations">Code hosting</a>
</div>
<div class="four wide center aligned centered column">
<div><img alt="Gerrit" src="/img/gerrit.svg" width="60"></div>
<a href="https://review.opendev.org/">Code review</a>
</div>
<div class="four wide center aligned centered column">
<div><img alt="Zuul CI" src="/img/zuul.svg" width="60"></div>
<a href="https://zuul.opendev.org/">Continuous integration</a>
</div>
<div class="four wide center aligned centered column">
<div><img alt="Etherpad" src="/img/etherpad.svg" width="60"></div>
<a href="https://etherpad.opendev.org/">Collaborative editing</a>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide left aligned centered column">
<h2 id="what-is-opendev">What is Opendev?</h2>
<p>OpenDev is a space enabling collaborative Open Source
software development at a huge scale. It is centered around code hosting,
code review, and continuous integration, provided exclusively through
open source solutions like Git, Gitea, Gerrit and Zuul. It also provides
a number of peripheral collaboration services (like an etherpad instance for
collaborative text editing). All Opendev services are openly operated by the
Opendev community, and continuously integrated and deployed using Opendev
itself.</p>
<h2 id="opendev-is-different">How is development different with Opendev</h2>
<p>Opendev is not using a pull request (or merge request)
workflow, as implemented by GitHub or Gitlab. It follows a change proposal
workflow, which results in a slightly different experience.</p>
<p>In a pull request workflow, contribution starts by
forking the original repository to your personal repositories, cloning that
repository locally, iterating on development while pushing commits to the
remote repository regularly... until your code seems ready to merge, at
which point you ask the service to create a pull request between your branch
and the original repository. The pull request is reviewed, and if accepted
your changes get merged into the original repository.</p>
<p>In Gerrit, contribution starts by cloning the original
repository locally. You iterate on development, then use git push (or the
git-review tool) to propose your change to Gerrit. The change is reviewed,
and if accepted your change gets merged into the original repository.</p>
<p>The difference is subtle, but significant. In the
pull-request model, you create a fork of the original repository, push
changes to it, and ultimately propose to merge changes back. In the change
model, you prepare a change, and propose it. You do not create a fork and
everyone contributes to the same original repository. It generally results
in less fragmentation, and avoids confusion between the original repository
and its numerous forks.</p>
<p>That high-level difference also affects lower-level
details. A pull request may contain several commits, and if merged all those
commits will appear in the original repository history. In Gerrit, every commit
will result in a separate change for code reviewers to review, so developers
usually squash commits created while developing but which do not help
reviewers understand the proposed change. It generally results in easier
code review, and a cleaner git log as meaningful commit messages are
reviewed as part of the change.</p>
<p>In summary, the Gerrit workflow, its user experience
and UI are different from the pull request workflow. While it may not be
immediately familiar to developers used to pull request workflows, it's
worth learning. Its long-term benefits outweigh the short-term drawback
of having to learn a new tool, especially if you are going to spend a lot
of time developing for that project anyway.</p>
<h2 id="integrated-ci">Integrated Continuous Integration</h2>
<p>One key benefit of Opendev is that it integrates
powerful continuous integration features, made possible by the donation of
compute resources from our infrastructure partners. Test jobs are
run when changes are proposed and provide code reviewers with valuable
information. Test jobs also run again at merge-time, in case recently-approved
changes introduce an incompatibility. This, combined with the fact that
changes must pass tests before they can be approved, prevents
merging broken code.</p>
<p>Advanced Zuul features like speculative execution of
tests allows changes to test in parallel, so development velocity is
never limited by how thorough you want your tests to be. Changes in one git
repository can depend on proposed changes in another repository, allowing
integration testing of features actively developed across multiple projects,
removing artificial barriers between development teams.</p>
<p>This advanced continuous integration system was
developed to sustain the complexity and scale of OpenStack development, one
of the 3 most actively developed open source projects in the world. Opendev
makes this system available to other projects -- enabling open development
at a huge scale for everyone.</p>
<h2 id="free-tools">Free software needs free tools</h2>
<p>Finally, another key difference between Opendev and
other development infrastructure services like GitHub or Gitlab.com is that
it's built purely using open source software. GitHub and Gitlab.com are free
to use for open source projects, but they are both using proprietary code.
If your free and open source software requires proprietary code to be built,
is it really free?</p>
<p>It is widely-accepted today that using open source
technology in your software stacks reduces your dependency to third-parties
and allows to spread innovation. It should be obvious that writing software
using open source technology has the same effect. Nothing prevents a service
provider from changing its service terms, creating new limitations or even
fully excluding your project, or contributors from specific countries.
Proprietary development services create the same form of hard limits, lock-in
and dependency than proprietary software does, and prevent open innovation
in the development infrastructure space.</p>
<p>Opendev is entirely built using open source software,
but goes one step beyond: it is also openly operated. All its operation and
configuration is also open source, lives in git, and is continuously-deployed.
In the spirit of open source, it is easy to study, replicate, modify and
redistribute. Like free and open source software, it requires engaging with
its community to get the most of it -- it's not a service you consume, it's
a community you join. That can be a bit overwhelming if you just want to
focus on development, especially when ready-to-consume services are
available. But it's worth it, especially if you want to have a say on what
services are provided, or just support the idea of improving open source
tools in that space.</p>
<h2 id="faq">FAQ</h2>
<h3 id="isnt-this-just-openstack-infrastructure-rebranded">Isnt this just OpenStack Infrastructure rebranded?</h3>
<p>It is more than that. We want to make this toolset
available to others that would find it helpful. OpenStack is one of the OpenDev
tenants, but other tenants like Zuul or $gizmo would be just as important.</p>
<h3 id="can-i-host-my-project-on-opendev">Can I host my project on OpenDev?</h3>
<p>Yes! However, as noted above it is still early days yet
and the early experience might be a bit bumpy. Certain things may still say
“OpenStack” on them as we figure out the transition. And while any moves should
come with appropriate redirects, we may have some inadvertent misses.</p>
<h3 id="can-i-run-tests-on-windows-or-osx-machines">Can I run tests on Windows or OSX machines?</h3>
<p>Currently all of our test resources are Linux based.
Adding additional platforms would likely require someone to help us get that
running, but Zuul will support systems with ansible connection plugins.
Talk to us!</p>
<h3 id="i-am-an-existing-openstack-infra-user-do-i-need-to-do-anything">I am an existing OpenStack Infra user do I need to do anything?</h3>
<p>No. Well continue to communicate changes as they
happen. Well also do our best to make this as smooth a transition as
possible. If we run into situations that force us to break something well
be sure to let you know at that point.</p>
<h3 id="is-a-cla-required-for-hosted-repos">Is a CLA required for hosted repos?</h3>
<p>No.</p>
<h3 id="what-if-i-dont-like-gerrit-and-would-prefer-insert-tool-here">What if I dont like Gerrit and would prefer (insert tool here)?</h3>
<p>Weve got a fair bit of experience with the existing
toolset and adding new tools for which weve already got an answer is currently
out of scope. We think the existing tools (like Gerrit) work well, and should
only get better as we update them. The system is able to scale because we do
not need multiple implementations of different software that solve similar
problems.</p>
<h3 id="why-cant-we-use-giteas-issue-tracker-and-wiki">Why can't we use Gitea's issue tracker and wiki?</h3>
<p>For scaling and redundancy purposes we are actually
running a number of independent Giteas behind a load balancer. We can keep
git repos in sync from Gerrit reasonably well, but the issue tracker and
wiki functionality would need another level of state syncing. Once Gitea
can be run as a proper cluster this may change, but until then the
functionality is limited.</p>
<h2 id="contact-info">Contact info</h2>
<ul>
<li>IRC #opendev on Freenode (<a href="http://eavesdrop.openstack.org/irclogs/%23opendev/">logs</a>)</li>
<li>Mailing list: service-discuss@lists.opendev.org (<a href="http://lists.opendev.org/cgi-bin/mailman/listinfo/service-discuss">subscribe</a>)</li>
<li>Important announcements: service-announce@lists.opendev.org (<a href="http://lists.opendev.org/cgi-bin/mailman/listinfo/service-announce">subscribe</a>)</li>
</ul>
</div>
</div>
</div>
{{template "base/footer" .}}