From b1eed925e590b4ace01e3a2f648ba9fb6ee5dcde5b1bacbe212b89929a644872 Mon Sep 17 00:00:00 2001 From: Nicholas Johnson Date: Mon, 25 Nov 2024 00:00:00 +0000 Subject: Move static files to subdirectory and update links It's good practice to keep static website assets isolated to their own subdirectory. --- static/narrative.org | 375 --------------------------------------------------- 1 file changed, 375 deletions(-) delete mode 100644 static/narrative.org (limited to 'static/narrative.org') diff --git a/static/narrative.org b/static/narrative.org deleted file mode 100644 index 49b9e62..0000000 --- a/static/narrative.org +++ /dev/null @@ -1,375 +0,0 @@ -#+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. -- cgit v1.2.3