Dear RIOTers,

due to me being the release manager for the first release after GitHub
rolled out a bunch of new features I came a lot in contact with them.
I thought it might be beneficial to share my impressions and opinions
about these features and how we could utilize them as the RIOT
community in the future.

TL;DR: the new features are great in general but have a few caveats
primarily in easy usage.

# Projects [1]
This feature I utilized the most to organize the release. It basically
provides a Trello-like cards-and-columns project management, that
allows for adding pull requests and issues directly as cards. The
column the card resides in and a link to the card will then be
provided in the issue/PR (see e.g. PR 6082).

The benefit is that this allows for a much more isolated organisation
just in scope of the release (or e.g. a task force effort) than just
milestones and issues could provide. Due to this feature it was little
effort to draft some release notes from that.

But they also come with a few drawbacks. First they are not directly
linked to a milestone. E.g. adding an issue to the release project
does not set the release milestone automatically, nor does the removal
of the milestone remove it from the project. With a project as big as
a release this quickly leads to confusion, if the assigned release
manager does not stay on top of the game.
Speaking of staying on top of the game: other than e.g. Trello no
history of the cards, columns and the overall project is provided.
Because of that, in a multi-user scenario things quickly might get
lost (or lead to some surprises). There is also no way to change the
project status of an issue from the issue directly. One always has to
click on the current status (opening the link in the same window) and
then has to manually change the status via drag-and-drop from one
column to the next.

All in all I see a benefit in using projects, even if it is just the
direct link between issues/PRs and a project that makes it a little
less fiddly and a little bit more transparent then e.g. working with
an Excel table to organize the release.

# Reviews [3]
This is basically our time-tested review process formalized. A user
can approve a PR, request changes or comment in bulk, but still can
leave single comments without any review. All in all I think the
feature is great! It integrates nicely into our established workflow
and if a PR is approved it is far more visible than just a "looks
good" instead of our formal "ACK".

The drawbacks I could gather are rather nitpicky and just annoyances.
First, GitHub changed the behavior of hitting Ctrl+Enter from leaving
a single comment to giving a review comment. Since a review comment is
only visible when the review is finalized (i.e. approval, change
request, or in-bulk comment) it happened to me more than a few times
(and from the comments of my colleagues at the office to them also)
that I wrote a comment but nobody saw it for days, since I never
finalized my review. The other issue some people had was that you only
can approve a PR if you click on the "Files" tab of the PR, then
"Review changes", then Approve. To me that is a logical GUI decision
since one has to look at the code anyway to approve the code ;-) but I
can see that less patient people might want to approve a PR in one
click ;-). Lastly, you can't filter for approved PRs (yet) in the
search bar (or at least the search terms are not documented by
GitHub).

A question that was raised by the introduction of this feature: Do we
still need the informal ACK in our review process?

# New integration methods of a PR
We are now able to squash PR commits into one or rebase instead of
merge them into master directly from the Web GUI. I don't know if and
how well this handles merge conflicts, but I used it primarily to
squash pull PRs where the authors did not react on the request to
squash. Also a nice feature!

# Required CI builds
I think this is already a little older and was introduced with branch
protection earlier this year, but I activated this for the 2016.10
release branch. I think this is helpful if Murdock does not pick up
the PR for any reason, but of course if it fails for a random reason
the PR is blocked. Another dimension to this is that one can choose to
have the build always be up-to-date with the base branch. I chose this
for RC1, RC2 and RC3 but it required unnecessary rebuilds when a PR
was merged and another was basically already also build successful,
but now needed a rebuild since 2016.10-branch had changed.

What are your opinions/experiences so far?

Kind Regards,
Martine

[1] 
https://help.github.com/articles/tracking-the-progress-of-your-work-with-projects/
[2] https://github.com/RIOT-OS/RIOT/pull/6082
[3] https://help.github.com/articles/about-pull-request-reviews/
_______________________________________________
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel

Reply via email to