summaryrefslogtreecommitdiff
path: root/static/resource/narrative.org
blob: 49b9e62ae4f7c155df9ea8bf36142a9af1dcb0aeeb6fff644306e99107eb4dba (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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
#+TITLE: Struggle to graduate without nonfree software
#+LANG: en
#+AUTHOR: Wojciech Kosior
#+LICENSE: CC0

Due to pandemic many people experienced deaths of their relatives, others became
jobless. Those are some severe losses, many of which couldn't be prevented.
At the same time we also witnessed an embrace of proprietary videoconferencing
platforms, that brought a huge loss of freedom. Most ppl would disagree over
how severe this loss is, but one is certain - it *could* be prevented.

As a university student, I struggled to avoid losing freedom and pass my courses
without surrendering to the imposed not-free-as-in-freedom services,
often by proposing free/libre solutions instead. I didn't expect to win this
fight - but now I think it may happen. I describe my fight below so as to
build up and inspire others.

* Studies
For over 3 years I've been studying informatics at the AGH University of Science
and Technology in Kraków, Poland. Over that time I was becoming more and more
determined to avoid nonfree software. That, among others, meant getting
a librebooted ThinkPad and switching to GNU/Linux distros that only include
libre packages.

"What about studies?" - one could ask - "Weren't You required to use Windows?
  Or MS Office? Or some other proprietary tools?"

Actually, a great majority of the jobs could be completed with (or even
required) free software. In present times there we have the luxury
of having excellent libre operating systems and libre tools for most tasks,
including free software implementations of most popular programming languages.
On those few occasions some nonfree tool was required, I was either able
to convince given professor to let me do a replacement homework (e.g. doing the
same exercises under Postgres database instead of Oracle's) or do it at the
university during other groups' classes. I admit running nonfree software
on someone else's computer doesn't fully solve the problem of nonfreeness
and is not something to be proud of. Nevertheless, it just seemed fair.

I was also gradually taking the issue of in-browser javascript
more seriously. Web pages' js runs in an isolated sandbox, which makes many
ppl believe it's OK even when it's nonfree. Sandbox might indeed solve
security issues, but the true problem with proprietary programs lies elsewhere,
in taking away of user control. Currently, maintaining one's software freedom
in the field of web browsing is not easy. Numerous sites break with js disabled.
On many occasions I had to ask colleagues to put me into a Google sheet
for something studies-related, because I couldn't do that without js
(also, proprietary js is not the only issue with Google services).
I only dared to ask them for that, because I knew they were already accessing
Google sheets.

* Start of the pandemic
Without bigger problems I completed the 5th semester of my studies. At the
beginning of 6th - the pandemic began. Universities closed, most students
traveled home and professors started organizing remote
lectures and classes. You guessed it - they all chose proprietary platforms.
The ones used were Cisco Webex, MS Teams, ClickMeeting and, duh, Skype.
Each of those either doesn't have a free software client or I couldn't find one.
Of course, the professors expected everyone to be able to easily connect using
web interface. They didn't realize the problem of nonfree js.

Lectures didn't pose a real problem, since they're not obligatory at the AGH.
As to lab classes, their form varied from professor to professor. Some only
described what they want us to do for homework. Then we had to just upload the
completed homework to UPEL (AGH's modified version of Moodle). Some organized
non-obligatory consultancies. Many didn't care about actual presence on classes
and only wanted student to appear at specified time to interactively
hand homework in. Finally, one expected us all to attend the meetings at lab
class hours and was very angry about me having issues with it.

What were my actions in those circumstances? I would *very* politely email every
single professor who announced something would be done via one of the
problematic platforms. In my mails I usually linked the Costumed Heroes video
and some free videoconferencing tools (Jami, Jitsi Meet). I often remarked, that
the service used by them has no free software client available. Centralized
nature of those services and surveillance being possibly conducted through them
are also severe issues, but to me - software freedom was the decisive factor.

I'm under impression, that few professors didn't understand the issue or only
understood it partially. Hence, replies like "the solution would be to run
the program in a virtual machine" or "You don't need the source code to use the
service". Fortunately, even though many professors were irritated by my emails,
most of them eventually agreed to for example use another tool (Jami/Jitsi Meet)
to receive my homework. I think what helped me a bit is the fact, that they are
all teaching some field of computer science. Otherwise, the fraction of those
who don't understand the problem would be way higher. That's why I think it
could be more difficult on other faculties or in case of lower-level education
(e.g. schools).

* 6th semester
As the universities were closing, I was in the middle of doing some kind of
group homework for machine learning course. It was quite natural, that
I asked one person doing that homework with me to forward
what the professor said during Skype sessions. She later continued to do
me this favor and everything else could be done in free software.

The first real problem was with the artificial intelligence methods course (I shall later
just call it AI). It was rotational and we managed to have one lab class on-site before
the pandemic. The homework for this class was to be done in proprietary Framsticks
application. When emailed, the professor allowed me to do some neural networks
exercise instead. But I did have double stress, because I then had to ask him to
provide me with the required materials using some method other than Google Drive
(which I would be able to download from, but only if someone gave me a link to
a single file and not to a folder).

Later in march we learned another professor teaching AI wanted us to
complete an online NVIDIA course and send him a certificate. This was supposed
to serve as a replacement for a single lab class. The course,
obviously, required nonfree js. I wrote an email to that professor,
but did not receive any response.

Also in the early part of the semester, I was supposed to hand in distributed
systems homework via Webex. When I emailed the professor, he agreed to use Jami
for that. That was a little victory, but classes of this course were also
rotational - I knew I would have to ask 3 more professors with subsequent
homework. The grading system was such, that if one refused,
I would fail the entire course.

Near the end of March, system programming (i.e. meddling with guts of Linux) 
classes started. Those were obligatory and during Webex meetings students would
present their homework. The professor didn't want to lose time connecting to other
services than Webex. At that point, his response didn't give any hope. Especially
that I knew him from earlier semester and he didn't seem very kind.
I kept uploading homework exercises to UPEL but I was to live in uncertainty
through the Easter and long after it.

At some point I emailed two professors about the use of nonfree platforms
for lectures. One didn't respond at all and the other replied rudely
and seemed not to understand the issue. That's how I stopped caring about
lectures.

It was April. I presented second distributed systems homework. But even in cases
proprietary videoconferencing platforms were not needed,
there were other difficulties. For example, some lab classes assumed using
Java packages from Maven repository. Even though I knew given library is
free software, I would always attempt to avoid using a language-specific
package manager for it. That's because repositories used by tools like Pip (for Python)
and Gradle (for Java) allow some sorts nonfree packages and also lack good
security verification. This deserves its own essay. Eventually, I would
install libre libraries from there, but only if they were not packaged for my distro
and there were too many dependencies to install them manually. You can imagine,
that this costed some time and on my faculty - time is precious.

Also in April, the lazy "do an NVIDIA course" professor sent us a list of
students who did not send a certificate. Surprisingly, my name was not on the list.
Instead, I was rated 100% for this exercise. I concluded, that he just wrote down
surnames of all students who sent him emails with certificates and also mistakenly
included my surname from my mail... I did not want to be a cheater, so I later
emailed him about his mistake, but he didn't respond anyway.

More problems with AI were to come. Another professor wanted us to do homework
in proprietary Choreographe simulator. After learning about the nonfreeness issue,
he proposed that I use Webots instead and I agreed.

Around that time I was to realize, that the most unkind professor of that semester
wold the one giving software engineering course. The course had the form of a group
project, but we were still expected to appear on meetings every week.
The professor first didn't answer my emails and eventually wrote a long reply
in which he threatened, that if I miss one more meeting, I'm going to fail the
course. He wrote why he thinks I'm obliged to connect to ClickMeeting and the
way he wrote that showed great annoyance or even anger. He did, however, write,
that he doesn't care whether I connect directly or my voice reaches him through
colleague's computer. And that's what we did. Me and 1 buddy from my project
group were connected through Mumble and he was also connected to the meeting
(as he would anyway). He moved his microphone close to the speaker so that
I could hear the others and vice-versa. That was so provisional I am very
surprised it worked!

May. Distributed systems homework presented to 3 professors and 1 left to
convince. Another AI homework was also supposed to be handed in interactively,
but the professor first agreed to use Jami and later decided, that he's already
seen so much AIML stuff, that he doesn't even need my commentary.

End of May was when the situation seemed to be the most overwhelming.
There was yet no course I knew for sure I would pass, there were still many
emails to be written and I was already having delays with some homework
due to lack of time.

In June the semester was theoretically ending, but in practice grades could
be given until the middle of September. Everyone, who hoped they would be able
to conduct some classes at the university, now knew it wouldn't be possible.
One of those ppl was the last professor I had to hand in distributed systems
homework to. Although he was not eager to use another platform, he agreed
for Jitsi Meet, which doesn't require installation.

Professor giving network security course also put up with the impossibility
to organize stationary finals, as he used to. He instead gave us some
exercise to complete and upload. Unfortunately, we were supposed to use
Cisco Packet Tracer to simulate networks. The professor was unkind at some
point earlier, so I was not sure if he would allow me to do some replacement
task. But he did. The new exercise involved Mininet and nDPI library.

The last AI homework could only be fully done using Jupyter Notebook on Google
servers. I did what I could on a local Jupyter Notebook instance. I did not
need to have this 100% completed in order to pass the course.

System programming classes were also finishing in June.
I wrote another email to the professor. I was afraid he would just say I failed,
but no. He said he would look at my solutions and decide and *maybe*
it would be possible to meet at the university in September.
Hence, I had some hope, but no guarantee.

Now, another, bigger problem - the compilers course included an exam, that was
supposed to be done through MS Teams. I wrote to the professor preparing it.
Even though he always seemed to like me, he did not (could not?) give me
an option to write the exam some other way. I though I would fail then, but
funnily - Teams failed to handle the load of over 100 students connecting and
the exam was instead conducted via email (sending photos of solutions).

In that semester we already had seminar classes. The professor wanted
students to present their prototypes on some meeting, but I didn't have
mine ready yet, so he allowed me to finish it during summer holidays and
eventually I avoided the meeting. I also had little contact with my
thesis supervisor. We were to talk in July and that was the first time
free software videoconferencing failed me by refusing to work properly
(there were some issues earlier, but not so severe).
At least it didn't happen during handing in of some homework...

In summer I also had to do an internship. I first backed out of a well-paid
(as for internship) offer after learning, that there is no way to
negotiate a contract, that would allow my code to be released
as free software. I eventually did another, unpaid internship,
which had the benefit, that I was able to spend some of its time working
on my thesis.

In September I finally met with the professor and presented my system
programming homework. He turned out not to be as unkind as
he seemed before.

So after all the struggle I finally passed the summer semester and even had
decent grades. What at some point seemed almost impossible, was now a reality.

* 7th semester
The winter semester was the last semester of the first-cycle
studies, so it was shorter - all classes had to finish by the middle of
December or earlier. Before the semester started in October, university had
specified some formal rules as to what platforms and tools can be used
to conduct classes and exams. This was mostly to comply with GDPR.
Allowed videoconferencing solutions lecturers and teachers can
officially use were MS Teams, Cisco Webex, ClickMeeting and Google Meet,
although didn't see anyone use the last one.

This time most professors required presence on meetings.
The only exception was introduction to security engineering where
the professor announced there would only be consultancies and uploading
homework on time equals presence on lab classes.

There was a cryptography course. The professor did not agree to use
Jitsi Meet citing too big amount of work to bother using another
platform. Even though he suggested that I write to university
authorities, I didn't do that, for reasons not related to the topic.
I just kept writing tests (those were conducted through UPEL, so it
was not a problem for me) and uploading Jupyter notebooks with completed
exercises. This course didn't involve anything like interactive handing
of homework, so the only problem were my "absences".

Situation with computational geometry course was very silimar, with
the exception, that all homework was to be presented through MS Teams.

Another course I chose was optimization of code for different architectures.
I knew the professor teaching this. During fortran course on one of the
earlier semesters he required us to use proprietary ifort compiler.
On the other hand, he was one of the professors showing appreciation
for stuff I do well. When I emailed him, he was kind, although
afraid of using any other platform that those allowed. He suggested
me to contact student council of our faculty to suggest Jitsi Meet to
dean and eventually get it hosted by university itself. The professor
even said, that he would then happily use it for all his classes.
Unfortunately, student council never responded to my emails.
I was allowed to gain presence by writing reports instead of
participating in the meetings. This took more of precious time,
but I was glad anyway.

For second and final part of the seminar course the professor
made obligatory consultancies. He initially wanted to stick to allowed
platforms and even pointed out, that Jitsi Meet also runs on someone
else's server and hence - is not safer. I then responded with my
counterpoints and once again asked politely that we use Jitsi Meet.
I made it clear, that I'd rather fail, than use any proprietary platform
and he finally agreed.

For optimization of code we were also supposed to be presenting our
homework interactively, 2 times during the semester. The first time was
at the beginning of November and the professor wrote, that he agrees
to use platform not from the official list. He just noted, that he
doesn't take responsibility for security of any data exchanged
through it.

Then I had an argument with my supervisor, who got annoyed with
me (although there were probably other factors, too) and gave an
ultimatum that I use MS Teams. I didn't agree and my
supervisor was supposed to inform dean about resignation from
supervising. Perhaps the dean didn't read the email?
I'm just guessing. Anyway, I wrote again a few weeks later
and even borrowed some electronics from my supervisor - almost
as if the argument never happened.

Around that time someone told on the professors giving security course
and they started organizing classes via MS Teams, but they still didn't
require students to do anything during those classes and they allowed
me to just send them emails at the right time and they marked me present
based on that. There were also difficulties with Windows VM being required
for some exploit exercise - but I eventually also avoided Windows, even
though it required some additional work.

At the beginning of December it was clear, the only problems
were cryptography and geometry. I wrote another email asking for
a way to pass the first one. The professor told me to implement some hashing
algorithm in Jupyter. I suspect he might have needed that as a teaching
resource. I chose BLAKE2b, implemented it, sent it to him and this way
passed the course and even got the highest grade for it, despite my
mistakes in tests. That was surprisingly easy.

I also wrote to the professor giving geometry course. At first, she
didn't respond. The semester was supposed to end on 15 December
(although only some of the professors gave final grades that early).
Before that I wrote another email and I eventually received a determined
response, that I am being failed for absences. She did not mention
some of my homework being uploaded late, but I guess that's good for me.

At that point I was going to stop arguing. My supervisor in an email
got back to the topic of meeting on MS Teams and I responded, that
I'm not going to pass this semester and thanked for cooperation.

Then, someone convinced me not to hesitate to argue more or seek help
from university authorities. Or rather, I still didn't want to do the
second thing, because I already declared to the professor, that I won't.
But I did write subsequent emails. She agreed for an online meeting
on 8 January... but on MS Teams only. And I refused again and yet
again wrote why it is wrong to fail me like that.
She was not responding to all of my emails and I ended up spending
a lot of time waiting for replies. She eventually told me again
to contact the authorities for a permission to use another platform
and CC'd associate dean in that email. Given that, I no longer felt obligated
not to inform him about the issue.

As he's always busy, quite a few reminder emails were needed. In the
meantime, the deadline to upload thesis passed. Actually, that was
the deadline for those, who wanted to defend in January. Defense
in March was still possible, it would just be too late to apply
for second-cycle studies - something I wouldn't be interested in,
given all the difficulties I faced so far.

The dean eventually responded, but he didn't read into the right email
in the thread, so another set of reminders was needed. On 13 January
he finally wrote, that he talked to the professor and she would
allow me to correct the reports she considered bad.
No mention of videoconferencing services. Was there another misunderstanding?

The email i received from the professor explained the situation to me.
The dean pleaded for her to allow me to pass without interactive
presentation of my homework. So she would then give me a positive
grade and I would pass the semester, right? In theory only.

She then wrote about how bad my homework is. I never claimed it
to be perfect, because it was all done in a hurry and I even couldn't fix
some problems I knew about. But I don't think it was bad either, especially
considering the mere amount of it.
She eventually wanted me to correct 2 exercises. So I did.
I finally uploaded those on 15 January. I had to actually wait 4 more days for
the grade, but I got it. I finally passed my 7th semester.

Now, there are still some possible pitfalls, e.g. getting statement from my
supervisor. But after a month of stagnation the case seems to be finally
heading into the right direction.

When I look behind, I'm actually glad I acted
how I acted. Perhaps I won't be able to please those who want to see
me graduate. But I don't think graduating by surrendering to
nonfree platforms would bring any long-term benefits. Only more compromises.
Come back in some time to see how this compromise-less effort ends.
This article will be updated :)

* Notes
- I called all university teachers professors, although only the Framsticks
and seminar ones have that title.