Thursday, May 10, 2018

A Kanban board for Lino Noi

I read Robin Parmar’s article A crash course in project management where he introduces the Kanban board. Wikipedia. explains that

A popular example of a Kanban board for agile or lean software development consists of: Backlog, Ready, Coding, Testing, Approval, and Done columns. It is also a common practice to name columns in a different way, for example: Next, In Development, Done, Customer Acceptance, Live. [6]

This might be something we need in Jane. The columns of the Kanban board remind our ticket states (excerpt from Ticket management in Lino Noi):

>>> rt.show(tickets.TicketStates)
======= =========== ========== ======== ========
 value   name        text       Symbol   Active
------- ----------- ---------- -------- --------
 10      new         New        ⛶        Yes
 15      talk        Talk       ☎        Yes
 20      opened      Open       ☉        Yes
 22      started     Started    ⚒        Yes
 30      sleeping    Sleeping   ☾        No
 40      ready       Ready      ☐        Yes
 50      closed      Closed     ☑        No
 60      cancelled   Refused    ☒        No
======= =========== ========== ======== ========

I’d say that Kanban is the wheel I was reinventing with the Active column of a ticket state. We might replace that column with a new choicelist for the Kanban column to use:

Ticket state Kanban column
New Backlog
Talk Backlog
Open Ready
Started Coding/Testing
Sleeping Done
Ready Approval
Closed Done
Refused Done

The KanbanColumns on Jane would then be:

  • Backlog (waiting for management decision)
  • Ready (for the team to work on)
  • Coding & Testing (we currently don’t differentiate them)
  • Approval (waiting for confirmation that the job is done)
  • Done (including “Refused” and “Sleeping”)

And every user would have in their dashboard a summary listing show tickets assigned to them, using this classification. The “Done” column, of course, is not shown in the Dashboard.

This will functionally replace the welcome messages “Your stars are (…)” and “You have 78 items in Tickets to triage. “

The Backlog is the list of tickets used by managers to discuss about what we want and how important each of them is. Our “Sleeping” state can be considered a pre-backlog stage because a sleeping ticket might wake up at any moment. OTOH it sleeping because we do not want it in the Backlog (otherwise it would be Talk). If some team member finds a sleeping ticket and thinks it should wake up, they would set it to Talk to make it (re)appear on the backlog.

The ticket state is almost the same as the Kanban column, but only almost. The ticket state is more granular, the KanbanColumns list groups several states in order to help with classifying them and discussing about them. It replaces and refines the current TicketSate.active checkbox.

Yes, this seems to be a missing piece in Jane. I opened #2384.

EDIT: Maybe we can just do that summary list directly on the TicketStates (potentially renaming some of them or reviewing our ticket states). Maybe we just want a summary view for the existing MyTicketsToWork table.

Appy-dev

Here is a failure caused by appy.pod in Lino Welfare: https://travis-ci.org/lino-framework/welfare/jobs/375856380

That failure is somewhere in appy.pod, so this is where we should switch back to Gaëtan’s original appy-python-3 project instead of appypod, my obsolete partial fork of it.

Gaëtan still insists on distributing his project without adding a setup.py. You might say that he is crazy, and you might be right, but I’d then add that we are all crazy…

But he found a workaround for his crazy obstination. He created a separate project appy-dev on pallavi.be which contains a setup.py and then uses Subversion’s svn:externals feature. Instead of creating two projects, one for each Appy branch, he writes “Mais au lieu de créer un repository entier à part, j’ai réaménagé le repository appy-dev avec 2 répertoires de base: dev0 pour Appy 0.x en Python2 et dev1 pour Appy 1.x en Python3. J’ai changé la page explicative ici: https://forge.pallavi.be/projects/appy-dev/wiki/Wiki

After reading the docs about requirements files and some local experiments I try with the requirement:

-e svn+https://svn.forge.pallavi.be/appy-dev/dev1#egg=appy

And yes! It works! My appypod project can go away, it’s no longer needed!

I updated the requirements-python3.txt files for The Lino Book and Lino Welfare.

Later I reported my first bug in appy-python-3: https://forge.pallavi.be/issues/204

Fixed another bug in atelier

I explored the failures on Travis CI where inv bd said undefined label:atelier.invlib. Yes, atelier.projects.get_project_info_from_mod() didn’t yet work in environments without a local config.py file. Such projects have neither a tasks.py file not a setup.py file, but at least thei have a main_package (and that’s what intersphinx needs).

Welfare docs no longer depend on the Lino book

The Lino Welfare docs tree had several dependencies to the Lino Book (e.g. Installing a Lino development environment and the java projects). I started to remove them because it makes things unnecessarily complicated.