mirror of
https://github.com/nextcloud/documentation.git
synced 2026-01-02 17:59:36 +07:00
286 lines
11 KiB
ReStructuredText
286 lines
11 KiB
ReStructuredText
Kanban Board
|
||
============
|
||
|
||
This chapter contains a lot of information about the development process the
|
||
ownCloud community tries to follow, so please take your time to digest all the
|
||
information. In any case remember this page as the documentation on how it
|
||
should be done. Nothing here is set in stone, so if you think something should
|
||
be changed please discuss it on the `mailing list`_.
|
||
|
||
Kanban Board = github issues + huboard
|
||
--------------------------------------
|
||
|
||
We are using http://huboard.com to visualize ownCloud github issues as a `kanban
|
||
board`_ (see: `core`_, `apps`_, `client`_):
|
||
|
||
.. figure:: ../images/kanbanexample.png
|
||
:scale: 70
|
||
|
||
As you may have noticed, the columns of the kanban board represent the
|
||
life-cycle of an issue (be it a Bug or an Enhancement). An issue flows from the
|
||
1 - Backlog on the left to the 7 - To release column on the right and is not
|
||
closed until it has been released. Instead we pull an issue to the next column
|
||
by changing the label.
|
||
|
||
The Labels
|
||
----------
|
||
|
||
The following list shows what the labels mean in the life-cycle and will
|
||
hopefully help you decide how to label an issue.
|
||
|
||
Backlog
|
||
~~~~~~~
|
||
|
||
Why do we have it?
|
||
To keep us focused on finishing issues that we started, new issues will be
|
||
hidden in this column. In huboard you can see the list of things that we could
|
||
think about by clicking the small arrow in the top left corner of the concept
|
||
column header.
|
||
|
||
What does a developer think?
|
||
"Maybe later."
|
||
|
||
When can I pull?
|
||
Since this is the bucket for whatever might be done you should only pick
|
||
issues from the backlog when there is no other issue that you can work on. It
|
||
is more important to finish an issue currently on the Kanban board than to
|
||
pull a new one into the flow because only released issues have a value to our
|
||
users!
|
||
|
||
Who is Assigned?
|
||
Either a maintainer feels directly responsible for the issue and assigns
|
||
himself or the gatekeeper (the guys having a look at unassigned bugs) will try
|
||
to determine the responsible developer.
|
||
|
||
Concept
|
||
~~~~~~~
|
||
|
||
Why do we have it?
|
||
Our think before you act phase serves two purposes. A Bug is in the concept
|
||
phase while we are trying to figure out why something is broken (analysis). An
|
||
Enhancement is in the concept phase until we have decided how to implement it
|
||
(design).
|
||
|
||
What does a developer think?
|
||
"I’ll write a Scenario for our BDD in `Gherkin`_ and post it as a comment. I
|
||
can always look at the `existing ones`_ to get an inspiration how to phrase
|
||
them as `“Given … when … then …“`_"
|
||
|
||
When can I pull?
|
||
As long as you think and discuss on how to implement an enhancement or how to
|
||
solve a bug you should leave the concept label assigned. Two things should be
|
||
documented in a comment to the issue before moving it to the "To develop"
|
||
step:
|
||
|
||
* At least one Scenario – written in Gherkin – that tells you and the tester
|
||
when the issue is ready to be released.
|
||
|
||
* A concept describing the planned implementation. This can be as simple as
|
||
a “this just needs changes to the login screen css” or so complex that you
|
||
link to a blog entry somewhere else.
|
||
|
||
Who is Assigned?
|
||
The maintainer that feels responsible for the issue.
|
||
|
||
To Develop
|
||
~~~~~~~~~~
|
||
|
||
Why do we have it?
|
||
Now that we have a plan, any developer can pick an issue from this column and
|
||
start implementing it. If the issue is also marked with Junior Job this might
|
||
be a good starting point for new developers.
|
||
|
||
What does a developer think?
|
||
"Nice! I can safely implement it that way because more than one person has put
|
||
his brain to the task of coming up with a good solution. Here! Me! I’ll do
|
||
it!"
|
||
|
||
When can I pull?
|
||
If you feel like diving into the code and getting your hands dirty you should
|
||
look for issues with this label. In the comments, there should be a gherkin
|
||
scenario to tell you when you are done and a concept describing how to
|
||
implement it. Before you start move the issue to the “Developing” step by
|
||
assigning the "4 – Developing" label.
|
||
|
||
Who is Assigned?
|
||
No one. Especially not if you are working on something else!
|
||
|
||
Developing
|
||
~~~~~~~~~~
|
||
|
||
Why do we have it?
|
||
This is where the magic happens. If it’s a Bug the fix will be submitted as a
|
||
PULL REQUEST to the master or corresponding stable branch. If its an
|
||
Enhancement code will be committed to a feature branch.
|
||
|
||
What does a developer think?
|
||
"You know, I’m at it. By the way, I’ll also write `unit tests`_. When I’m done
|
||
I’ll push the issue with a commit containing "push GH-#" where # is the issue
|
||
number. If I have an idea of who should review it I can also notify them with
|
||
@githubusername"
|
||
|
||
When can I pull?
|
||
As long as you are writing code for the issue or if any unit test fails you
|
||
should leave the “4 – Developing” label assigned. Two things should have been
|
||
implemented before moving the issue to the “To review” step:
|
||
|
||
* The enhancement or bug in question
|
||
* Unit tests for the changed and added code.
|
||
|
||
Who is Assigned?
|
||
The most active developer should assign himself.
|
||
|
||
To Review
|
||
~~~~~~~~~
|
||
|
||
Why do we have it?
|
||
Instead of directly committing to master we agree that **a second set of eyes
|
||
will spot bugs** and increase our code quality and give us an opportunity to
|
||
learn from each other. See also our `Code Review Documentation`_
|
||
|
||
What does a developer think?
|
||
"I’ll check the Scenario described earlier works as expected. If necessary
|
||
I’ll update the related Gherkin Scenarios. `Jenkins`_ will test the scenario
|
||
on all kinds of platforms, web server and database combinations with
|
||
`cucumber`_."
|
||
|
||
When can I pull?
|
||
If you feel like making sure an issue works as expected you should look for
|
||
issues with this label. In the comments you should find a gherkin scenario that
|
||
can be used as a checklist for what to try. Before you start move the issue to
|
||
the “Reviewing” step by assigning the “6 – Reviewing” label.
|
||
|
||
**Who is Assigned?** No one. Especially not if you are working on something else!
|
||
|
||
Reviewing
|
||
~~~~~~~~~
|
||
|
||
Why do we have it?
|
||
With the Gherkin Scenario from the Concept Phase reviewers have a checklist to
|
||
test if a Bug has been solved and if an Enhancement works as expected. **The
|
||
most eager reviewer we have is Jenkins**. When it comes to testing he soldiers
|
||
on going through the different combinations of platform, web server and
|
||
database.
|
||
|
||
What does a developer think?
|
||
"Damn! If I had written the Gherkin Scenarios and Cucumber Step Definitions I
|
||
could leave the task of testing this on the different combinations of platform,
|
||
web server and database to Jenkins. I’ll miss something when doing this
|
||
manually.*
|
||
|
||
When can I pull?
|
||
As long as you are reviewing the issue the you should leave the "6 –
|
||
Reviewing" label assigned. Before moving the issue to the "To review" step the
|
||
issue should have been resolved, meaning that not only the issue has been
|
||
implemented but also no other functionality has been broken.
|
||
|
||
Who is Assigned?
|
||
The most active reviewer should assign himself.
|
||
|
||
To Release
|
||
~~~~~~~~~~
|
||
|
||
Why do we have it?
|
||
This is a list of issues that will make it into the next release. It serves
|
||
as a source for the changelog, as well as a reminder of the work we can already
|
||
be proud of.
|
||
|
||
What does a developer think?
|
||
"Look at all the shiny things we will release with the next version of
|
||
ownCloud!"
|
||
|
||
When can I pull?
|
||
This is the last step of the Kanban board. When the Release finally happens
|
||
the issue will be closed and removed from the board.
|
||
|
||
Who is Assigned?
|
||
No one.
|
||
|
||
|
||
While we stated before that said that we push issues to the next column, we can
|
||
of course move the item back and forth arbitrarily. Basically you can drag the
|
||
issue around in the huboard or just change the label when viewing the issue in
|
||
the GitHub.
|
||
|
||
Reviewing considered impossible?
|
||
--------------------------------
|
||
|
||
How can you possibly review an issue when it requires you to test various
|
||
combinations of browsers, platforms, databases and maybe even app combinations?
|
||
Well, you can’t. But you can write a gherkin scenario that can be used to write
|
||
an automated test that is executed by Jenkins on every commit to the main
|
||
repositories. If for some reason Jenkins cannot be used for the review you will
|
||
find yourself in the very uncomfortable situation where you release half tested
|
||
code that will hopefully not eat user data. Seriously! Write gherkin scenarios!
|
||
|
||
Other Labels
|
||
------------
|
||
|
||
Priority Labels
|
||
~~~~~~~~~~~~~~~
|
||
|
||
* Panic should be used with caution. It is reserved for Bugs that would result
|
||
in the loss of files or other user data. An Enhancement marked as Panic is
|
||
expected by ownCloud users for the next release. In either case an open Panic
|
||
issue will prevent a release.
|
||
|
||
* Attention is not as hard as Panic. But we really want this in the next release
|
||
and will dedicate more effort for it. But if we think the issue is not ready
|
||
for the next release we will postpone it to the next one.
|
||
|
||
* Regression is something that worked in a previous release but is now not
|
||
working as expected or missing. If a certain functionality is up for code
|
||
refactoring, the developer should describe all possible use cases as a Gherkin
|
||
scenarios beforehand, so that any scenarios that isn’t implemented before the
|
||
required milestone can be marked as a regression. If a regression is found
|
||
after a release, the reporter – or the developer triaging the issue – should
|
||
describe the functionality as a Gherkin scenario and either fix it or assign
|
||
it to the developer in charge of that part.
|
||
|
||
App Labels
|
||
~~~~~~~~~~
|
||
|
||
In the apps repository there are labels like ``app:gallery`` and
|
||
``app:calendar``. The ``app:`` prefix is used to allow developers to filter
|
||
issues related to a specific app.
|
||
|
||
Resolution Status
|
||
~~~~~~~~~~~~~~~~~
|
||
|
||
* Fixed – Should be assigned to issues in to Release
|
||
* Won’t fix – Reason is given as a comment
|
||
* Duplicate – Corresponding bug is given in a comment (using #guthubissuenumber)
|
||
|
||
Misc Labels
|
||
~~~~~~~~~~~
|
||
|
||
* Needs info – Either from a developer or the bug reporter. This is nearly as
|
||
severe as Panic, because no further action can be taken
|
||
* L18n – A translation issue go see our `transifex`_
|
||
* Junior Job – The issue is considered a good starting point to get involved in ownCloud development
|
||
|
||
Milestones equal Releases
|
||
-------------------------
|
||
|
||
Releases are planned via milestones which contain all the Enhancements and Bugs
|
||
that we plan to release when the Deadline is met. When the Deadline approaches
|
||
we will push new Enhancement request and less important bugs to the next
|
||
milestone. This way a milestone will upon release contain all the issues that
|
||
make up the changelog for the release. Furthermore, huboard allows us to filter
|
||
the Kanban board by Milestone, making it especially easy to focus on the current
|
||
Release.
|
||
|
||
.. _kanban board: http://en.wikipedia.org/wiki/Kanban_board
|
||
.. _mailing list: mailto:owncloud@kde.org
|
||
.. _core: http://huboard.com/owncloud/core/board/#
|
||
.. _apps: http://huboard.com/owncloud/apps/board/#
|
||
.. _client: http://huboard.com/owncloud/client/board/#
|
||
.. _Gherkin: https://github.com/cucumber/cucumber/wiki/Gherkin
|
||
.. _existing ones: https://ci.tmit.eu/job/acceptance-test/cucumber-html-reports/?
|
||
.. _“Given … when … then …“: https://github.com/cucumber/cucumber/wiki/Given-When-Then
|
||
.. _unit tests: https://github.com/owncloud/core/tree/master/tests
|
||
.. _Code Review Documentation: http://owncloud.org/dev/code-reviews-on-github/
|
||
.. _Jenkins: https://ci.tmit.eu/
|
||
.. _cucumber: http://cukes.info/
|
||
.. _transifex: https://www.transifex.com/projects/p/owncloud/
|