add poly1305.mdwn - documentation
[libreriscv.git] / meetings / sync_up / discussion / sync_up_2024-01-16_discussion.mdwn
1 # Discussion of commit frequency - Tuesday 16th January 17:00 UTC
2
3 * Link to sync-up meeting: [[meetings/sync_up/sync_up_2024-01-16]]
4
5 Discussion of commit frequency and other points mentioned in
6 [this](https://lists.libre-soc.org/pipermail/libre-soc-dev/2024-January/005912.html)
7 email thread. After meeting discussion, points agreed upon will be documented
8 in the wiki.
9
10 ## Points to be discussed
11
12 Dmitry's points of concern:
13
14 * As a developer, I should have a liberty to interactively rebase, fixup,
15 squash commits, commit when I can and want, and same for push. If there are
16 restrictions on this from NLnet side, these must be explicitly published on
17 their own guidelines. I'm sure they have different forms than the ones
18 exposed.
19
20 * My point is, as I work on it as an individual in my free time, I
21 should have flexibility to a certain degree to develop it when and how
22 I want. And I commit the code when it's at least somewhat "ready" and
23 "stable" and "beautiful" according to my personal standards. I
24 extensively use interactive rebase to make the history readable. When
25 I find that some branch commit introduced an error, I go back there
26 and edit it interactively, then force push. This makes the linear
27 history work when the master is rebased, decreases the chance of the
28 later bisect and simply avoids the trash like "oh look I fixed a typo"
29 for the code which just got rebased into the master (unless required).
30
31 * Obviously this works better in branches or in master if you have force
32 push rights (and likely develop alone); but it has its own benefits.
33 Obviously it isn't a silver bullet, but it makes the history way
34 better, and that's the approach I always follow. And now, despite that
35 nobody had problems with this before, now we have this discussion.
36 This is not the first time we have some rules established for which we
37 lack the explicit requirements. The lack of these is fine as long as
38 there's a technical rationale. I doubt any real SW project has a
39 "commit whatever you have" policy. Real SW projects follow "commit
40 respectively and wisely" policies instead.
41
42 * Indeed, these statements are vague and reflect my own personal
43 experience and preferences. But, unless you have a real severe cause
44 to completely bend someone else's behavior and habits into the way you
45 like it, I'd prefer to avoid it. You know I don't have massive chunks
46 of the code with me (I wouldn't even if I had time, what's the
47 purpose?). But I try to avoid "trash" commits, I try to commit things
48 which work, and I always worked this way. After all, it's an Open
49 Source development, not some corporate idiocracy.
50
51 * As for "we're afraid something might get lost", I'd recommend starting
52 with the different places to think about. For example, git and CI.
53 These seem to be much better targets; these are the real points of
54 failure.
55
56 * Yes this is subjective; I hope we _all_ are subjects though. "Commit
57 once you think it's good enough to show to others, it breaks nothing,
58 there's nothing to be ashamed of, you find it appropriate to publish
59 at this stage" -- these all look reasonable. The beauty is in the eyes
60 of the beholder.
61
62 Dmitry's point on his personal time:
63
64 * My point is, I
65 really have not much time to work, and I indeed try hard to dedicate
66 all the free time I have. Please don't make me feel that I waste this
67 time taking the spokes out of the wheels. :-)
68
69 Jacob's response:
70
71 * Assuming you're not working directly on the master branch, I think it
72 should be sufficient to push a WIP commit with whatever changes have been
73 made by the end of the day, that can be rebased, squashed, amended, etc.
74 next time you work on it. (if you're working on master, please don't
75 rebase/squash/amend any commits, use a separate branch if you want that,
76 then push to master once the commits won't change anymore)
77
78 * It would also be useful but not required to push your current code if
79 you're posting major results or asking questions, so others can see your
80 code -- after all it's really hard to spot bugs in code you can't see!
81
82 * I don't think there are any NLNet restrictions other than that code needs
83 to be public before submitting RFPs.
84
85 * we should probably put our conclusions in the developer documentation,
86 Andrey would you be willing to do that? icr if that docs bug is closed
87 yet...there's probably a good task to put this under.
88
89 * maybe just expand the existing wiki section somewhat?
90
91 *(Andrey: I agree. A first rough draft will probably be this page.
92 Only the most important points the team agrees on will be written
93 into HDL_workflow, if not already present.)*
94
95 Luke's responses:
96
97 The "regular commit push" approach imitates corporate backup systems:
98
99 ```
100 if you were working for a Corporation (and they were any good)
101 your private machine would be backed up by the IT Staff,
102 onto redundant servers, every day, without fail, so that there
103 is abolutely no chance work could be lost.
104
105 it would not be your problem, because the Corporation IT Staff
106 set up your machine, give it to you with backup software
107 pre-installed, it s basically not your problem, and you would
108 not be "wasting your time" on backups.
109
110 the FOSS equivalent of that is that you push, again, without
111 fail, to a public repository, but this is of course taking
112 up *your* time to do it. this is unfortunate but necessary,
113 as we obviously cannot invade your privacy of *your* personal
114 local machine to forcibly push to Libre-SOC servers to ensure
115 backups and Transparency!
116 ```
117
118 Luke ensures there are at least 3 backups of the LibreSOC project:
119
120 ```
121 i have TWO remote machines doing daily backups of the server
122 and i want it increased to 3. i also do a 3rd intermittent
123 server backup (manual rsync) because being on a Mobile Internet
124 it costs me USD 3 per Gigabyte, i only do that if absolutely
125 critical.
126
127 so that is 3 backups and i really want it to be 4.
128
129 then also there is salsa and other servers and all developers also have
130 clones of the repos, but they are intermittent and
131 cannot be relied on, plus cannot back up the full server itself,
132 just the repos.
133 ```
134
135 Luke's point whether Nlnet requires such restrictive measures
136 (answer to Jacob's point):
137
138 ```
139 yes you are correct, but the backgground/context is that it
140 is far stronger than that with very serious implications.
141
142 their mandate is "Works for the Public Good".
143 if it's not public, then they would be in flagrant
144 direct violation of Dutch Foundation Law to give money
145 out for private work, which no messing about
146 is jail time for the Directors.
147 ```
148
149 Luke also asked Dmitry why is it an issue to follow the approach
150 of committing and pushing frequently.
151
152 One of the reasons perhaps could be slow or low-bandwidth
153 internet, but given the low overhead of git pulls/pushes, this
154 isn't an issue in practice.
155
156 The point to perform regular git commits is documented in
157 [[HDL_workflow]] (documents LibreSOC standard procedures),
158 in the "git" section.
159
160 Luke mentions that if an argument exists for not following the
161 procedure, it needs to be mentioned:
162
163 ```
164 if you can provide an explanation as to why you consider it
165 reasonable to not follow the Project Standard Procedures
166 as outlined in the HDL Workflow page, then we have a
167 justification to put in front of NLnet and the EU Auditors,
168 and everything is fine.
169
170 this is basic ISO 9001 QA Procedure, which I trained in back in
171 1993. the "red flag fail" is not when you don't document
172 something, it's when you say you are going to follow a certain
173 procedure / practice *and then do not follow it*.
174
175 it is documented in HDL Workflow *all* commits shall be pushed,
176 and you are requesting, Dmitry, not to follow that Procedure.
177 you therefore explicitly need to explain clearly (and publicly),
178 no fuss, and there is no criticism here expressed *or implied*:
179 why you are not going to follow that Documented Procedure, ok?
180 ```
181
182 *(Andrey: I didn't see HDL_workflow say
183 "all commits shall be pushed". It makes sense given that Nlnet
184 only pays for published work, but perhaps this needs to be
185 written explicitly?)*
186
187 Luke also made a point that
188 there may be exceptions due to privacy/security concerns, but
189 those must be discussed outside of LibreSOC public sytems:
190
191 ```
192 if there is a privacy or security reason
193 that you cannot reveal publicly, then NLnet will be perfectly
194 understanding of that as well, but the discussion there
195 has to move *offline* and not take place on Libre-SOC public
196 servers. it is one of the *only* exceptions to the rule
197 "everything is public". NLnet do actually fund some very
198 senstive projects, where anonymity of the developers is
199 absolute top priority... *but* the work still has to be
200 public, to fulfil "Works for the Public Good" Mandate.
201 ```
202
203 Also a point on Nlnet:
204
205 ```
206 as Jacob points out, you absolutely cannot
207 get paid for private work, as this directly conflicts with
208 NLnet's "Works for the Public Good" mandate.
209 ```
210
211 Luke on git history cleanup:
212
213 ```
214 i worked out Dmitry, that you probably actually enjoy doing the
215 git history cleanup, it is a sense of satisfaction and pride :)
216 ```
217
218 Point made by Andrey to Dmitry:
219
220 * I understand your concern of being able to develop independently,
221 committing changes when ready for comment/review (*so long as the
222 development history is clear; which is easy to do with separating big
223 changes into many commits, before pushing*).
224