the questions: documentation of the development process

Lukas Pirl tahoe-dev at lukas-pirl.de
Sat Aug 8 09:28:54 UTC 2015


Thanks Daira.

On 08/07/2015 12:19 PM, Daira Hopwood wrote:
> We're distributed across time zones (and sleep schedules), so I would suggest
> just asking a question and staying in the channel as long as it takes for a
> response.

Okay, first insight. :) I'll stick to email then because it's easier to
follow over multiple hours (I am in a very different time zone as well).

You'll find a quick preface and after that the questions together with
the answers I came up with. *Everyone* can agree, disagree or elaborate
further.

Once I have a clear picture of the whole thing, I'll document key
information in the Wiki.

I want to address the distributed, community-driven development of OSS.
Although those questions are formulated project-specific, feel free to
answer in a more general, abstract sense (e.g. for OSS in general).

1. What are the software-development *methods and practices* employed
for the development of TahoeLAFS?
   (inspiration on Wikipedia "Software development process" [1])

  Probably no method was ever chosen actively/explicitly.
  However, a continuous variant of feature-driven development [2]
  probably fits.

2. Sometimes it is hard to find a consensus and someone has to decide.
What *roles* are present in the development team of TahoeLAFS?

  I can only guess here. I know a few key people but I hope to
  hear from you who is an expert in which field or who does what sort
  of management etc.

3. In education, students learn that it is important to treat *testing*
(regression tests, automated builds, test-first) as important as coding.
How does TahoeLAFS handle this?

  From my observations:
  * It is strongly desired to have core functionality tested.
  * A high code coverage is desired.
  * There are no acceptance tests.
  * Test-first is not a must.
  * Automated builds happen for whatever environment contributors add.

  What else?

4. As a globally distributed development team, how important is
*real-time communication*? Are there regular video-chats, chats or even
face-to-face meetings?

  * there is the IRC - what are the usual topics/activities there?
  * the are the twice-weekly meetings on Hangout or IRC
    * do they still take place? I haven't seen a log for long
  * on some occasions (?) there is a physical meet-up
    * hackdays? release breakfast? …?

5. How do you *chunk the work*? Are there fixed time slots with clear
aims in beforehand and a review afterwards (sprints etc.)? Why is(n't)
that beneficial?

  * self-assignment of tickets in the tracker
  * milestones with very soft deadlines
    * assignment of tickets by core developers
  * no review of the work during the last milestone
    (aimed to high/low etc.)

6. What do you think are the important *tools* to support the team
through the development lifecycle (discover requirements, design,
prototype?, implement, verify/test, maintain)?

  * Trac
    * requirements
      * collect
      * discuss
      * prioritize
      * assign
      * --> document
    * design
      * discuss
      * --> document
    * documentation
      * core architectures/concepts in trunk
      * information for user and first pointers for devs in Wiki
  * GitHub to ease collaboration
    * retrieve patches
    * review patches
  * Travis as CI
  * Buildbot for automatic builds
  * Twisted unittests

7. What do you think the main success factors are, with respect to
methods and tools, in developing TahoeLAFS?

8. In your opinion, what are the main challenges for the development of
TahoeLAFS related to methods and tools?

Thanks in advance & best regards,

Lukas

[1] https://en.wikipedia.org/wiki/Software_development_process#Approaches
[2] https://en.wikipedia.org/wiki/Feature-driven_development


More information about the tahoe-dev mailing list