summaryrefslogtreecommitdiff
path: root/static
diff options
context:
space:
mode:
authorNicholas Johnson <nick@nicksphere.ch>2022-04-30 00:00:00 +0000
committerNicholas Johnson <nick@nicksphere.ch>2022-04-30 00:00:00 +0000
commitdeb16043cf33710cd8e19bd0487957263a43b466b83fd69f2e00bbb79ae8fc27 (patch)
treed3a14522fbecc36a5fc63fbbdbd2d3fbdb11644ef2f93653dd87584de315057b /static
parent1fc31109cddfb85e677cd1f0d8c4e4b6c192e9ebaeae34bca456fb662c8ffc71 (diff)
downloadjournal-deb16043cf33710cd8e19bd0487957263a43b466b83fd69f2e00bbb79ae8fc27.tar.gz
journal-deb16043cf33710cd8e19bd0487957263a43b466b83fd69f2e00bbb79ae8fc27.zip
Update theme
Diffstat (limited to 'static')
0 files changed, 0 insertions, 0 deletions
href='#n102'>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".

Situati