From e7e43fcf660435c779176c00b3cb9149fb1fcc17bc187b94a28c4d3736830c23 Mon Sep 17 00:00:00 2001 From: Nicholas Johnson Date: Sat, 21 Jan 2023 00:00:00 +0000 Subject: Convert refs: inception-rejecting-discord-drawio-and-visual-studio --- ...n-rejecting-discord-drawio-and-visual-studio.md | 23 +++++----------------- 1 file changed, 5 insertions(+), 18 deletions(-) (limited to 'content/entry') diff --git a/content/entry/inception-rejecting-discord-drawio-and-visual-studio.md b/content/entry/inception-rejecting-discord-drawio-and-visual-studio.md index 71a069a..20f7d5b 100644 --- a/content/entry/inception-rejecting-discord-drawio-and-visual-studio.md +++ b/content/entry/inception-rejecting-discord-drawio-and-visual-studio.md @@ -2,14 +2,13 @@ title: "Inception - Rejecting Discord, Draw.io, and Visual Studio" date: 2020-03-30T00:00:00 draft: false -makerefs: false --- # Background -In the spring of 2018, I took software engineering at SIUe[1]. Software engineering is a junior level CS course. In my view, it serves as preparation for the more demanding two semester development effort that is the senior project. I'll call the professor, "Professor X" to preserve anonymity. +In the spring of 2018, I took software engineering at [SIUe](https://www.siue.edu). Software engineering is a junior level CS course. In my view, it serves as preparation for the more demanding two semester development effort that is the senior project. I'll call the professor, "Professor X" to preserve anonymity. # Story ## Project I -The first project was for the purposes of getting everyone accustomed to using Git and Redmine and working in a team as well as doing some documentation. We were put in groups of three to four and given the task of writing a fairly simple program with a GUI and some basic functionality in C#. I remember being very anxious upon forming a group because I knew my group members would likely want to use Slack[2] or Discord[3] or some other popular proprietary walled garden messaging platform. Luckily for the first project of the class, my three group members were not thrilled, but were willing to undergo the inconvenience of downloading and using Riot.im[4] / Matrix[5]. +The first project was for the purposes of getting everyone accustomed to using Git and Redmine and working in a team as well as doing some documentation. We were put in groups of three to four and given the task of writing a fairly simple program with a GUI and some basic functionality in C#. I remember being very anxious upon forming a group because I knew my group members would likely want to use [Slack](https://slack.com) or [Discord](https://discordapp.com/) or some other popular proprietary walled garden messaging platform. Luckily for the first project of the class, my three group members were not thrilled, but were willing to undergo the inconvenience of downloading and using [Riot.im](https://riot.im/) / [Matrix](https://matrix.org). ### Communication It was awkward and uncomfortable to be the only person in the group refusing to use Discord when everyone else very quickly came to a consensus on it. Peer pressure is a real thing. But after explaining my reasons, I was able to win over the group after a few days and get everyone using Riot. I even got everyone to exchange their device keys over email so we could all have an encrypted group chat. The peace of mind of having an encrypted room and using free software instead of having our group messages data mined and sold as would have been the case with Discord cannot be overvalued for me. I didn't really win the group over by convincing them with the benefits of encryption and free software. I think they just wanted to get the project moving along and saw the easiest way forward was to adapt to me. So I got past the first hurdle. @@ -26,11 +25,11 @@ Project II was a similar story to project I except that I was in a group of thre Again, it was awkward asking everyone to use Riot when they had never heard of it. I had a hard time finding a soft way to propose using it when I wasn't willing to accept a proprietary alternative. But my two group members were willing to use it. I again was able to convince them to exchange device keys in person for an encrypted room. So far, all was well. ### Documentation -And so we began our documentation. This time, I was not our project lead. Another team member had more time to work on the project, so he took the initiative. He was very diligent and before we had even started writing code, we ended up with an estimate of close to eighty classes total. We had polished UML diagrams for all those classes including package diagrams and UML class diagrams and a three tier architecture established before a single line of code was written. I was very satisfied with that. For my diagrams, I used Dia[6] and my teammates used draw.io[7]. Dia was difficult and annoying to use as far as alignment goes. It might have been due to my inexperience never having used it before, but I used it anyway for freedom. Draw.io is not free software. It uses proprietary JavaScript and requires a software license to purchase the app. Nevertheless my teammates were able to at least export their diagrams in png format so I could see them using free software. Our project lead claimed to have used Dia before and said it was too inconvenient usage-wise. +And so we began our documentation. This time, I was not our project lead. Another team member had more time to work on the project, so he took the initiative. He was very diligent and before we had even started writing code, we ended up with an estimate of close to eighty classes total. We had polished UML diagrams for all those classes including package diagrams and UML class diagrams and a three tier architecture established before a single line of code was written. I was very satisfied with that. For my diagrams, I used [Dia](http://dia-installer.de/) and my teammates used [draw.io](https://app.diagrams.net/). Dia was difficult and annoying to use as far as alignment goes. It might have been due to my inexperience never having used it before, but I used it anyway for freedom. Draw.io is not free software. It uses proprietary JavaScript and requires a software license to purchase the app. Nevertheless my teammates were able to at least export their diagrams in png format so I could see them using free software. Our project lead claimed to have used Dia before and said it was too inconvenient usage-wise. -The deliverables for the project were scheduled in such a way that we had to do all the documentation before starting the project, and continually revise documentation as the project went along. Our documentation was so effective that I trust we could've handed it to any other group in the class, and they would have been able to implement our entire design. Some of the documents were done using Google Docs regrettably. I strongly suggested using Sandstorm[8] instead since it is free software and doesn't require proprietary JavaScript in the browser. That did not end up happening since I had other classes to worry about and we were crunched for time. If I could retake the class, I would have created a separate shared repo for documentation and used a word processor for editing instead. Our team lead did not see this as viable since he felt we needed to be able to see everyone else's changes in real time. There was a lot of talk about using Sandstorm, but I was never able to make it happen. +The deliverables for the project were scheduled in such a way that we had to do all the documentation before starting the project, and continually revise documentation as the project went along. Our documentation was so effective that I trust we could've handed it to any other group in the class, and they would have been able to implement our entire design. Some of the documents were done using Google Docs regrettably. I strongly suggested using [Sandstorm](https://sandstorm.io/) instead since it is free software and doesn't require proprietary JavaScript in the browser. That did not end up happening since I had other classes to worry about and we were crunched for time. If I could retake the class, I would have created a separate shared repo for documentation and used a word processor for editing instead. Our team lead did not see this as viable since he felt we needed to be able to see everyone else's changes in real time. There was a lot of talk about using Sandstorm, but I was never able to make it happen. -Another possible free software self-hosting alternative to Google Docs would have been an Etherpad[9] instance, but public Etherpad instances did not have the plugins necessary for nicely formatting documents unless I self-hosted and installed them myself. And I guess I didn't have the time to set up an instance or something. But I did put a few hours of work in trying to get it working. It was very discouraging to be working so hard on something very tangentially related to our actual project. I wasn't able to move the group toward using Etherpad either. I ultimately ran out of time trying to make it work. I was the one pushing to use something besides Google Docs mainly due to its proprietary JavaScript. +Another possible free software self-hosting alternative to Google Docs would have been an [Etherpad](https://etherpad.org/) instance, but public Etherpad instances did not have the plugins necessary for nicely formatting documents unless I self-hosted and installed them myself. And I guess I didn't have the time to set up an instance or something. But I did put a few hours of work in trying to get it working. It was very discouraging to be working so hard on something very tangentially related to our actual project. I wasn't able to move the group toward using Etherpad either. I ultimately ran out of time trying to make it work. I was the one pushing to use something besides Google Docs mainly due to its proprietary JavaScript. After I had been defeated unable to move the group to something besides Google Docs, I gave in to using Google Docs which I was able to use anonymously without an account. I just used the shared link. But I still had to run the proprietary JavaScript in the browser which I now regret giving in to. This failure was very discouraging and harmed my motivation for doing the project. I discussed this extensively with the project lead but we weren't able to bypass the issue. After this failure, I didn't know the worse was still yet to come. @@ -43,15 +42,3 @@ So I emailed the grader explaining in detail my ethical concerns about MSTest. H I thought I would be able to use MonoDevelop as before without any issues. I had solved the issue of the testing framework. What more issues could arise? The database. The instructions for the database in the database tier of our three tier architecture were written to explain how to use the SQL database in Visual Studio. It used libraries that only worked in Visual Studio if I recall correctly. This caused an inner conflict for me. I had never failed a class before, but I knew the professor wasn't going to rewrite the specifications in the middle of the project and it would be too much for the grader to try to get something else working and too much for me to research another solution. I talked about this issue ad nauseum to our group lead, who was sympathetic but tried to still convince me to just write the database anyway. I wasn't able to get him to really make sense of the freedom issue despite sending supporting links from the FSF website to explain my position. After heated debate, we eventually came to the compromise that I would only work on the part of our program that did not include the database. I would work on the other two tiers; the controller and graphical interface. I now regard this compromise as a mistake. This still did not resolve the issue because I was unable to compile our program without having the SQL database that only worked in Visual Studio. I painfully forced myself to use Visual Studio in the university computer lab to write the project. This occurred with our team late at night all of us working furiously before the due date to get as much coded as possible and submitted. We were doing rapid trio programming because none of us had time until the last moment to work on the project. I was glad to have finished the project, but still giving in to using proprietary software did not sit well with me. I was ashamed of having given in but also understood my teammates would have had to give me a bad performance report if I outright refused to work on the project due to the database tier. So practically the choice was between failing and tacitly condoning Visual Studio by using it. I made the mistake of choosing to use Visual Studio to pass instead of putting my foot down and refusing and going to the professor again about the ethical issue. I think I didn't go to the professor again because I didn't want to inconvenience him too much to avoid another awkward conversation. I ought to have went immediately to the professor again to discuss the freedom issue. I passed the class with a good mark and accomplished the project, but still felt gross about giving in to proprietary software. - - -Link(s): -[1: https://www.siue.edu](https://www.siue.edu) -[2: https://slack.com](https://slack.com) -[3: https://discordapp.com/](https://discordapp.com/) -[4: https://riot.im/](https://riot.im/) -[5: https://matrix.org/](https://matrix.org/) -[6: http://dia-installer.de/](http://dia-installer.de/) -[7: https://app.diagrams.net/](https://app.diagrams.net/) -[8: https://sandstorm.io/](https://sandstorm.io/) -[9: https://etherpad.org/](https://etherpad.org/) -- cgit v1.2.3