Files
infra-manual/doc/source/faq.rst
Jeremy Stanley cf479002f9 Add frequently asked questions
These are copied verbatim from the main opendev.org splash page, as
the initial step in an effort to shrink the content we display
there. A couple of sections from that page have also been turned
into additional questions.

Change-Id: Ic5bdb9199fd9f9851e68a334045d157a21a137a3
2025-05-15 18:13:51 +00:00

141 lines
6.6 KiB
ReStructuredText

:title: Frequently Asked Questions
.. _faq:
Frequently Asked Questions
##########################
How is development different with OpenDev?
==========================================
OpenDev doesn't use a pull request (or merge request) workflow, like
those implemented by GitHub or Gitlab. Instead it follows Gerrit's
iterative change proposal workflow, which results in a slightly
different experience.
In GitHub or Gitlab, contribution typically starts by forking a personal
copy of the original repository, cloning that locally, and pushing one
or more commits to that personal fork. Once your code seems ready to
merge, you ask the service to create a pull request for your branch into
the original repository. The pull request is reviewed, and if accepted
your changes get merged into the original repository. If not, you push
more commits to your fork and update the request seeking more reviews.
By contrast, contribution with Gerrit starts by cloning the original
repository locally. You iterate on development of one or more local
commits, and then use git push (or the git-review tool) to propose your
commits as a series of changes to the Gerrit code review service. Each
change in the series is reviewed, and if it's accepted (and passing
tests) then it gets merged into the original repository. If more work is
needed, you amend the same commits and push new versions of them for
re-review.
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 proposal model,
you prepare a change, and propose it. You do not create a complete fork
and everyone contributes into the same original repository with what are
basically lightweight, ephemeral topic branches. It results in less
fragmentation overall, and avoids confusion between the original
repository and its numerous forks.
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
is a separate change (optionally depending on other related changes) for
code reviewers to review, so developers squash or amend edits made while
developing to represent the desired final state of that change. Each
prior revision of a change is still retained by the service, as are all
the review comments, so updates can be compared side-by-side for a clear
picture of how the change evolved. It generally results in easier code
review, but also a cleaner branch history with the commit messages
reviewed as an integral part of each change.
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. Long-term benefits outweigh the short-term cost of
having to learn a new tool, especially for someone who is going to spend
a lot of time developing for that project anyway.
What is the Integrated Continuous Integration?
==============================================
One key benefit of OpenDev is that it integrates powerful continuous
integration features, made possible by the donation of compute resources
from our generous 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, preventing code which
doesn't pass tests from merging to the repository.
Advanced Zuul features like speculative execution of tests allow the
testing of sequenced changes in parallel, so development velocity is
rarely 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.
This advanced continuous integration system was developed to sustain the
complexity and scale of OpenStack development, one of the three most
actively developed open source projects in the world. OpenDev makes this
system available to other projects, enabling open development at scale
for everyone.
Isn't this just OpenStack Infrastructure rebranded?
===================================================
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.
Can I host my project on OpenDev?
=================================
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.
Can I run tests on Windows or OSX machines?
===========================================
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!
I am an existing OpenStack Infra user do I need to do anything?
===============================================================
No. We'll continue to communicate changes as they happen. We'll also do
our best to make this as smooth a transition as possible. If we run into
situations that force us to break something we'll be sure to let you
know at that point.
Is a CLA required for hosted repos?
===================================
No.
What if I don't like Gerrit and would prefer (insert tool here)?
================================================================
We've got a fair bit of experience with the existing toolset and adding
new tools for which we've 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.
Why can't we use Gitea's issue tracker and wiki?
================================================
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.