Free Software Trip 5: Acting on what I learned.
Date: 24th January 2019
5. Acting on what I learned.
So I was back home and I had my work cut out for me. I had decided to not let what I learned in this trip go to waste and planned to slowly start moving toward using free software for my personal computing.
So my approach for it was in two steps:
- Identify what proprietary softwares I was using that I could afford to move away from and list free alternatives.
- Start the migration and write down my experience.
Below I will explain the above in detail.
1. Identify my software usage
So I got down to inspect my software usage and noted down my present setup:
- OSes - A triple boot PC with:
- Windows 10:
- This came with the laptop and I have almost never used it for the last 3 years. I couldnt afford to delete this as I had paid for Windows and the product key doesnt work on live images anymore (upgraded from win 8). So I decided to leave this partition alone.
- Ubuntu (18.04):
- I have grown fond of Cinnamon Desktop and had installed it alongside GNOME (which I don’t like alot these days). Ubuntu sends user statistics to its server and has a ton on bloatware preinstalled. This was used mainly for project where only Ubuntu is supported, like Hyperledger Fabric Composer etc.
- Manjaro (18):
- I absolutely love Arch Linux but my productivity was a bit low on it as I had to fix issues and customise all by myself, so I decided to try Manjaro. Its wonderful! I didnt expect it to be so polished and complete. I used KDE Plasma for this. I love KDE, its the most polished DE there is right now, except that it might be a bit buggy, especially in a rolling release distro. The problem with Manjaro is that it comes bundled with many proprietary drivers etc.
- Windows 10:
- Text Editors:
- Sublime Text:
- I have been using this for along time as Sublime Text is so much more faster than Atom, VSCode etc. Also the features are pretty good, and I really like packagecontrol.io. Its minimal in its design, not too dense like VSCode and opens up large number of files easily (500+), which is a requirement for me.
- But it is proprietary software.
- I use vim only for work on the server. I’m exactly proficient in Vim but I am starting to grow fond of it.
- There is still alot I have to learn though.
- This is a minimal command line text editor, but with better themes and shortcuts.
- Like that you can have an editor theme like Monokai.
- I use it very rarely. I dont like it’s shortcuts alot.
- Sublime Text:
- I like chromium, its fast and has the best compatibility for websites. I used to develop websites and I always had best support from chrome/chromium.
- I am concerned with the web being monopolised by one product, as the chromium project is still controlled by google for the most part.
- I have been a fan of Firefox since the release of Quantum. Its super fast and responsive and is the only real competitor to Chrome/Chromium.
- The problem I have is that it does not work well with dark GTK themes (Arc-Dark etc) where the default input fields have black background with dark text, making it unreadable.
- Since it is the most used platform and since it has the max visibility, I have been using this to store important projects.
- I dont like it alot, or even trust GitHub , especially since it was aquired by Microsoft.
- Its completely closed-source.
- I love GitLab, it has a ton of features, is open-source and has a version where you can self-host.
- The only issue is that the profile page is not the best for showcasing projects. Like, GitHub it needs a pinned repos section.
- The CI/CD platform is pretty interesting, but I have never really used it except for a few Jekyll Sites.
- Use exclusively for internships, where the companies require it.
- Not particularly fond of it.
- Deployment platforms:
- It is a wonderful tool to quickly publish stati websites and point your domain to it.
- Even though the CLI tool is open-source, the backend platform is not open yet.
- I use it for most of my websites.
- I have found it to be most convenient for hosting my backend based apps.
- You can point a domain to it and host apps permanently for free (with limits).
- It has a noticable cold-start as apps go to sleep when unused.
- You can add databases as Heroku Addons as needed, but they come with severe restrictions. For example, the RedisCloud addon doesnt allow you to export your data as
.rdb. Vendor lock-in sucks.
So these were the areas where I could afford to make some changes to use more free-software.
The way I saw it, the best solution was to self-host my apps on a VPS with free-software alternatives, and start using a FSF approved OS like Debain for my primary personal computing. So slowly I could add more and more free softwares and services to my toolchain.
2. Moving towards using more free-sofware.
The first thing I did was to remove my Manjaro and Ubuntu partions and replace them with Debian Stretch and Linux Mint.
I’ll explain why below:
- Debain Stretch (stable):
- Debian does not come with any proprietary software or drivers installed. This wasnt a big problem for me as my laptop had good support from the default drivers.
- I always wanted to use KDE Plasma full time and I had read that Debian has the most stable support, even if Plasma version is a bit old.
- Debian is the recommended FSF approved distro, where I can start building a toolchain of free-software tools.
- Linux Mint Tara (19):
- I need an Ubuntu based distro for my projects so I decided to try Mint.
- Mint does not collect user data and has no tie-ups with companies like Amazon.
- I really like Cinnamon and I wanted to use it in its home environment.
- Very light resource usage and good stability. My Ubuntu setup was fraught with strange bugs.
Then I decided to ditch Sublime Text as my primary editor. I started using more of:
- It is very powerful once one masters the right commands. I intend to do that, and am taking a couple courses to get better.
- Even though Atom is based on Electron, its very fast and feature-rich.
- I had to set it up to look and work like ST3, but its good enough.
- Yet I cant see myself using it full time. I think Vim is better for me.
After that I decided to self-host my apps/websites on VPS. First thing I did was to dockerize all my apps with Dockerfiles and docker-compose. Then I used NGINX as reverse proxy and then and proceeded to host the following:
- Gitea is a great self-hosted alternative to GitHub/GitLab.
- It is super light and does not need alot of resources.
- I chose to SQLite as the database as it was sufficient for my use and I saved on RAM and disk usage as compared to using MySQL.
- Gitea can be customised with templates and I did so too. It was great fun to make it look I want it too.
- Gitea is under developement with easy backup.
- I migrated all my private and public repos from GitHub and GitLab to my Gitea instance and sorted them into organisations.
- It is a self-hosted open-source alternative to Google Drive.
- With docker-compose installation was a breeze. Chose SQLite here again.
- I moved keeplink.in from heroku to my hosting on my vps and its super fast now!
- The cold start really hid the the performance of the Redis database.
- I also moved the following apps:
- Tiny Tiny RSS:
- I wanted to start using RSS more for reading feeds from the various blogs/news sites especially Hacker News.
- Used my RPI to install TTRSS on my local network with a hostname on my pc for easy access.
I completely switched to Firefox as my primary browser with extensions for Pocket etc disabled. Its great, but I a still facing the text illegibility issue with dark themes.
3. Next steps
Now that I have the base setup(s) ready I can slowly adopt more free-software tools and services.
In the future I’d like to:
- Self-host Email:
- Setting up a mail server, MTA, Webmail and POP/IMAP server with custom domain is a difficult task.
- There are many additional steps to get a functional email like preventing your emails getting marked as spam with DKIM, SPF etc.
- Plenty of tools are available like Postfix, SpamAssasin, Dovecoat etc which I plan to use in the future.
- Make an automated system to self-host all my static websites:
- I want to make a hacky solution similar to Surge.sh where I can push and publish my Jekyll or static sites with one command.
- I want even new sites (with CNAME file for custom domain), to work with 1 command, by autoconfiguring NGINX etc.
- Possible solutions I see is using Git Post-receive hooks with a bunch of bash scripts , possibly even rsync or scp. Lets see.
This trip has taught me so much and I am very thankful for the new point of view I have gained from it. I got to learn so many new concepts, new tools, new philosophies to live by and most importantly it has inspired me to aspire to the Hacker Ethic.
From the multiple projects, the self-hosting, and the taking back control of my software freedom I feel alot more confident of my skills, yet humbled by all the things which are left for my curious exploration.
I love using computers, they are the single greatest inventions of our age with an underlying guarantee of freedom and choice to use it according to our needs and thanks to the thousands of Hackers before us who have made the tools to make it possible.
This is probably the only tool in the world, where you are limited only by your curiousity and the amount of work you are willing to put in it to make it truly personal.
I dont want this tool to be corrupted and become a means to exploit innocent people and I want to do everything in my power to prevent that.
The way I see it, using more and more free-software is the first step in the process, but definately not the last.
At the same time, I feel great amounts of grattitude towards the developers before me, like Mr. Stallman, who have given away these tools for free usage. Without them, the computers and the internet wouldnt be the only place in the world where you have the option of being truly free.
I also feel indebted to the community and hope to give back to it by building useful tools myself (like keeplink.in) and publishing the code under a copyleft licence so that others can benefit from my work to.
It is nearly not enough to pay them back, but it is a start.
← Previous Post Next Post →
© Abhishek Balam 2019