summaryrefslogtreecommitdiff
path: root/documentation.mdwn
blob: 42581f20026231569ef53526a92fa84b5893726a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
[[!meta title="vmdb2 documentation"]]

The vmdb2 manual is published at:

* <https://vmdb2-manual.liw.fi/> (HTML)
* <https://vmdb2-manual.liw.fi/vmdb2.pdf> (PDF)


# Getting vmdb2 to change so you can do what you want to do

Sometimes it happens you want to do something that vmdb2 can't quite
do. Here's some advice on what to do in that case, and what to avoid
doing.

* First of all, please realise that vmdb2 is a hobby project for me. I
  do it because it's fun, and it fulfils a need I personally have. One
  way my hobby projects are fun for me is when other people also find
  them useful, so I am usually happy to consider changes to make them
  more useful for others. However, I want to have fun while that
  happens. I also tend to be busy, and vmdb2 is hardly the only thing
  I do in my free time. All of this means that a change is more likely
  to happen if you make it easy for me. If I don't have fun, I can
  just go do something else.
  
* Since I often don't have time for vmdb2 for days or even weeks at a
  time (remember, I have many other things to do), it's best to
  communicate over the issue tracker, instead of IRC or other chat
  systems, or private email. Discussions on the issue tracker are
  public and persistent, which means others will benefit from them,
  and can also join the discussion. IRC is ephemeral and only visible
  to whoever happens to be on the channel at the time. I'm also often
  forgetful, and having to search past IRC discussions (if I even
  still have them in my backlog) to remind myself what we've talked
  about previously, and any important details in those discussions, is
  both time-consuming and remarkably not fun.
  
* If you need vmdb2 to add new functionality to achieve the thing you
  want to do, please always, always start by describing what the
  actual goal or need is. The "use case", in other words. Explain this
  without involving vmdb2. Do say "I want to create an image that
  boots on a Raspberry Pi". Don't say "add a plugin to use
  qemu-debootstrap". I don't like to guess what the purpose of a
  change is, and I don't want to make changes I don't understand. The
  use case can and should eventually become part of vmdb2's
  documentation.
  
* I want to hear what the actual underlying need or want or goal is
  also for motivational reasons. I'm not an automaton that cranks out
  commits based on instructions from people on the Internet. I don't
  get paid to work on vmdb2. However, I do enjoy knowing "people are
  using my program to get Debian onto their Garbleplex development
  boards".
  
* Also, as the maintainer of vmdb2, I need to consider all use cases
  and the long-term health of the program. Typically, you will only
  consider your immediate need. Thus, what seems to you like an
  obvious quick win by just making a small change might be a change
  that breaks vmdb2 for others, or it might be likely to cause
  headaches for me later on.

* Don't assume I know what you're talking about. Assume I'm an
  unusually ignorant person. Spell things out for me. If, for example,
  you need vmdb2 to gain support for a new boot loader, tell me how
  it's going to be installed. Ideally, show me a short, simple,
  straightforward shell script that installs the boot loader onto an
  empty disk image, preferably without involving vmdb2 at all.
  
* Don't assume I will do research to implement the change you need. I
  don't enjoy trying to decipher technical documentation for hardware
  I don't have. Things are more likely to happen if you spoon feed me
  what I need to know. Also don't assume I have the hardware to test
  changes. Be prepared to answer my many ignorant questions, and to
  test any changes I may make. If I don't get answers or feedback that
  my changes work, I'm likely to just drop the change and go do
  something else that's more fun.

* I'm happy to get patches to add features or bug fixes. However, I
  want them to be consistent with the rest of the code base and test
  suite. Thus I may ask you to make changes before I merge.

* I do want to work with you so that vmdb2 is useful for you. I'm just
  old and tired and slow, and I need you to help me help you.