Document is updated on Google Docs and attached as a PDF (sorry PDF
because of table)
to this email
Document is at
https://docs.google.com/document/d/1s_EbbXwqWPmfOg6ArgKmEMm_iv0vwGvJs-7ZG4yFKb4/edit?usp=sharing
The document has a list of personal choices at the end and I would
encourage everyone to
add their choice to it unless they don’t care at all.
The main discussion on the call was around the Issue/Bug tracking and
the Code Review
Issue/Bug Tracking:
- - - - -
Only few community members are aware, but we do actually have a bugzilla
for Quagga
for a long time (bugzilla.quagga.net)
The current bugzilla is self-hosted (by Paul), but very few people use
it.
We decided that we would like to try to use bugzilla more and see how
well this works for Quagga.
As part of this, the current bugzilla should be updated (it seems to be
out of date by some major
version) and we need to connect it to the mailing list to send
notifications about
new issues (and updates) to the list.
Code Review:
- - - - -
No clear favorite on the call, but it became obvious that whatever we
pick, it MUST have
a good connection to the mailing list. Someone not using the tool needs
to at least be
able to follow (read) the activity on the list and it would be desired
if it’s a two-way
interface to the list.
We do believe the email connection is possible with most/all of the
tools listed in the
document (direct or through an API)
We encourage anyone who favors a specific tool to set it up and give it
a try before
making a real decision. There are currently 5 choices listed in the
document (incl
the current way of patchwork/email). If you think we are still missing
another good
choice, then please add it to the list.
David Lamparter is looking into updating the patchwork to get the new
features as
mentioned in the document working (plus trying to add a link/flag for
the CI system
result in it as well)
Thanks for the ones who attended the call.
- Martin Winter
Quagga community needs a certain number of tools in order to ease
implementation of the process defined in this document Quagga Process Document.
In particular, a collection of tools or system that provide these
functionalities:
1. Manage code version (branch, merge, tag, …)
2. Tracking of Bugs and Issues
3. Allow patch submission
4. Ease review of submitted patch with the possibility to amend
(modify/suggest) the code
5. Ack/Nack a patch
6. Automated patch integration once accepted
7. Link to continuous integration system for tests
8. ...
1. Quagga situation
As of today, Quagga community currently uses these tools:
* Mailing list to communicate
* Git to manage the code version on savannah forge
* Quagga-dev mailing list to submit patch (Problems today: thread id is not
properly used, no HTML, cover letter must version patches, version marking
(N+1) of updates of patch is poorly used))
* Patchwork to manage patches
* Atlassian Bamboo (by OpenSourceRouting) for continuous integration
1. Mailing lists
The Quagga mailing lists are: [email protected], [email protected],
[email protected] and [email protected]. Quagga-users is used for
general discussion of matters arising out of the use of Quagga, from
installation, configuration, troubleshooting, OS-specific matters of relevance
to Quagga (e.g. tuning) to Quagga related network operations. Quagga-dev is
devoted for technical discussion of development of Quagga, from bug fixes to
improvements to development suggestions. Quagga-maintainers is devoted to
maintainers. See http://www.nongnu.org/quagga/lists.html and
http://www.nongnu.org/quagga/contacts.html.
1. Git and Repositories
Quagga will continue to use GIT as it’s scm tool. The main repository is
located in Savannah Forge which is now synchronize with GitHub repository. The
synchronization is both ways. Importantly, changes from GitHub are reflected
back on Savannah.
1. Code and patch submission
The code submission process is the same for all editions and follows the
submission process defined in [HACKING.md|TBD]. As mention in the Hacking.md
file, submitters must send their patch and code to the quagga-dev mailing list.
Patchwork system will automatically extract patch from the quagga-dev mailing
list and store them.
1. Testing and continuous integration
Quagga uses a continuous integration system which is run by NetDEF
(OpenSourceRouting.org) for the community. It that takes all submitted patches,
applies them, compiles the code on various OS platforms and tests the basic
protocol functionality (Just to make sure the protocol can be started and
neighbors are established.. On request, a complete protocol regression /
compliance test suite is run over a given Quagga release for protocol
conformity (this take 2 days).
Additional CI and regression systems that provide results publically are
welcomed by the community. (And NetDEF welcomes any support to expand their
tests as well. Details on the NetDEF setup can be found at
https://www.opensourcerouting.org/2016/05/whitepaper-how-opensourcerouting-tests-quagga/)
1. Summary
This covers only requirements 1, 3 and 7. Requirements 2 could be provided by
savannah forge (just need to activate the functionalities). Recently, Savannah
Git repository is mirrored to GitHub which provide a more modern system for
patch submission and integration as well as bugs and issues tracking which
cover requirements 2, 3 and 6. However, the crucial part for the code review
according to the new Quagga process is not covered. Indeed, no tools used by
Quagga community could provide any help for the requirement 4,5 and 6.
1. Missing tools
1. Code Review[a]
There is no system to discuss a submitted patch outside of the mailing list.
When a patch is submitted, it must go into a code review system tracking that
allows maintainers to review it easily, modify / amend in place the code,
interact with the submitter, and in turn for the submitter modify inline its
code without the necessity to resubmit a whole patch. As of today, the three
major web service providing such set of functionalities are: Gerrit, GitHub and
GitLab. Whatever the chosen system, all discussion and comments must be copied
to the mailing list in order to give to everybody the possibility to follow
discussion. Note that GitHub is now available with the Git synchronisation from
Savannah Forge and that an easy integration exist between GitHub and Gerrit
that allows to use Gerrit on top of GitHub ( http://gerrithub.io/ )
1. Issue & Bug Tracking
The Bug and Issue tracking system must be connected to the quagga-dev mailing
list in order to give the possibility to every body follow a bug resolution,
and not only the requester and the maintainers.
There exists a current Bugzilla (hosted by Paul), but it’s not connected to
mailing lists and mostly ignored by the community
CC list setting under Administration->Products->Quagga->Edit Components needs
to be set to [email protected] for all components.
1. Suggestions
In addition to the tools already used by Quagga community, here it is a list of
suggested tools. Note that some of them overlap to exist one e.g. Gerrit and
Patchwork.
1. Issue & Bug Tracking
* Activate Issue & Bug Tracking system on Savannah
* Pro: Simple to activate. Already integrated to Savannah
* Con: No APIs to manage them
* Use Issue & Bug Tracking on GitHub
* Pro: Simple to activate and use. APIs available
* Cons: Risk if GitHub Licence Agreement change to loose history
* Setup another tools like Bugzilla (maybe it is a 2nd class priority)
* Pro: Independant
* Cons: Need to setup and manage another tools
* NetDEF/OpenSourceRouting would be happy to host and maintain a JIRA Server
for the community if this is desired
Decision on conference call: Try to use current bugzilla and connect it to
mailing list. Ask people to use bugzilla when bugs are reported to users/dev?
1. Code Review
This section covers the tool available to track patches and for code review,
e.g., Gerrit, not the process of how the tool is used. Assume that all tools
copy comments/changes to quagga-dev.
1. Gerrit alone
* Pro: Must have for code review
* Cons: Need to setup and manage another server and change Git synchro to
Gerrit
* Cons: dynamic of threads is always is subset of the community
* Cons: 10y+ history of current mailing list missing
* Cons: Forces specific processes for the community
1. Gerrit on top of GitHub
* Pros: Combine advantage of Gerrit and GitHub. Simple to setup with the
Gerrit for GitHub plugin
* Cons: Perhaps too many tools. Need to be sure that PullRequest are
propagated to Gerrit
* Cons: dynamic of threads is always is subset of the community
* Cons: 10y+ dynamic
* Cons: Another company running gerrithub.io with risk of getting
discontinued on short notice
1. GitHub with PullRequest
* Pros: Already available
* Pros: can be done along with current e-mail submissions and process, and
keep everyone from quagga-dev@ involved
* Cons: Only original submitter of pull request can amend / modify patches
* Cons: dynamic of threads is always is subset of the community
* Cons: 10y+ dynamic
1. GitLab
* Pros: Independant alternative to GitHub with same feature
* Pros: Can be self-hosted
* Cons: Need to move the Git synchronisation from GitHub to GitLab. No
possibility to amend / modify patches
1. git.quagga.net + emails + patchwork
* Pros: same as Kernel community and it is a Keep It Simple logic
* Pros: anyone from quagga-dev@ is involved (discussion is forced to mailing
list and not just copied over)
* Pros: new patchwork, that you can try from
https://patchwork.ozlabs.org/project/ubuntu-kernel/list/ has new features to
track status (see A/R/T, S/W/F)
* Pros: REST API and commandline client
* Cons: it means some maintainers have to enforce and teach manually good
emails’ policy. For instance: http://dpdk.org/dev#send . But after using other
automatic tools, I could notice that even web tools require some manual policy
and teaching.
* No inline code review nor possibility to amend a patch
* Cons: Not supporting work in multiple branches as it is not clear to which
base commit the patches should apply to
* Cons: Difficult to correlate multi-part patches and potential partial
updates of some patches in a serie
*
1. (Temp) Voting Sheet
We’ll remove this chapter later, but to speed up the discussion, I would prefer
everyone reading this to highlight their preference in the table below. Feel
free to vote for “none” or anything else not listed above if this is your
preference.
Name
Issue Tracking choice
Code Review choice
Code Submission
Martin Winter
GitHub Issue Tracking
(no strong preference, but like it because of API)
Or bugzilla if API is useable
Gerrit on top of Github (gerrithub.io)
Github (as I don’t see the +1/+2 etc voting as part of Quagga process)
Mailing list + Github Pull Requests. Support both, but push for large
sets (1 of XX to Github)
Vincent JARDIN
bugzilla
emails
Upstream first (email patch) from the day 1, iterate. Do not send 50
patches of a feature, but iterate.
Stop using branches, it creates fragmentation.
Olivier Dugeon
GitHub or Savannah
Gerrit alone or on top of GitHub
Lou
No strong preference
No strong preference
Email patch + github pull requests
David Bond
GitHub or Jira (no strong preference)
Gerrit alone or on top of GitHub (I believe you can still use the
command line git review tool?)
Donald Sharp
Bugzilla especially if email is hooked up
No Strong Preference
Email( Make it easy for people to DO IT)
David Lamparter
No strong preference
Any, but must be possible to send E-Mail as input.
E-Mail + pull requests (not necessarily GitHub)
Jafar Al-Gharaibeh
Bugzilla
Email (+GitHub)
Email + GitHub Pull Requests
[a]I strongly suggest to stay on patchwork but it shall be better explained and
emails must be policed. For instance, ack't, v2 of a patch must be sent using
the thread id of the email. I do suggest this tool that has been developped by
6WIND: https://github.com/Qeole/PatchCmd -
https://addons.mozilla.org/fr/thunderbird/addon/generate-patch-command/
Why patchwork? it is basic, but other tools break the email dynamics, they are
not proven to systain history after 10y+ Thanks to emails archives, we can
still track old threads which are 10y olds._______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev