Working on Freedom Respecting Software With Android
If I do not have a laptop, but I do have an Android phone, can I still work on freedom respecting software?
An Android phone is a computer. A very powerful one, that too. Remember that the first moon mission had a computer with just 4KB RAM. Today’s computers are much more powerful than that (even the one in a fridge).
There are certain things that are too cumbersome to be done on a small screen like that of a phone. Coding is one of those.
But coding is not the only way to work on freedom respecting software! What else is out there?
Using freedom respecting software
The biggest way people can contribute to a software is by using it. Android has the F-Droid catalogue for verified free software Android apps. We can install F-Droid app and install apps for our daily needs from F-Droid to start using them.
The same way installing an operating system with Linux or FreeBSD kernel is encouraged to explore freedom respecting software on laptops, once we start using F-Droid instead of Play Store for all our software needs, we automatically start exploring this new world.
Becoming good at using freedom respecting software
Merely installing and operating a software is good. But it is even better if we can explore all the possibilities that a particular software has and in turn become extremely good at that software.
When we use a software for a long time, we start loving it. This is the point at which we should start sending love to others. We can choose to send some love to the maintainers of the software too (and/or cash, if we can afford). And we share the software with others at every opportunity we get. We talk about it, we show how to do things with it, we write about it, we show how much we love it.
A software should have one or more communities around it. Often, maintainers themselves create a mailing list / IRC channel / matrix room / another communication channel for the community to come together. Join that community. Start interacting with maintainers and other users. Listen to the general vibe and bring our own positive vibes.
Some software has too many communities (like Mozilla has a thousand). In such cases, we can either join multiple communities, or even create our own community for our backyard group of users.
Some software has no community. In those cases, we should reach out to the maintainer and discuss the possibility of us creating/joining a community.
Send feature requests / bug reports
All software will have bugs. Some bugs are feature requests. These are important for software. Create an account on the bug tracker and start documenting the bugs we come across. Learn how to write a very good bug report and send helpful details. Think about the features that would make the software very useful. Track those features in bug reports too.
We should also think about how user interface and user experience can be improved. This is where we should think like a designer.
Handle feature requests / bug reports
Once we get a hang of how the tracker works, we should start interacting with others who file bugs or feature requests. Look at a bug report and see if we can reproduce it. Add details that the original poster might have missed including. Look at a feature request and think about whether there is an alternate way to implement the feature which would add greater value in the long term. Only people who have a close connection with a software can do such bug herding.
An Android phone may suck as a coding environment. But often it is possible to read code on a small device. Try to look at small changes included in merge requests and see what those does. We might be able to spot issues (especially with regards to readability of code), or at a minimum, we might learn a new thing about coding.
Good documentation makes a big difference to the usability of a software. And documentation need not always be a single large official reference place. Writing on our own blog about how to accomplish a particular task using a particular software is also very helpful documentation. There are many people who find it difficult to figure out certain software on their own. A helpful video, a few screenshots, or even a well written blog post will help them in a great way.
The biggest barrier to using phones for millions of people who are beginning to afford smartphones these days is language barrier. Localization is the answer. Some software is built to be localized into multiple languages. The localization interface is probably a web application that will open in our phone browser. Contribute a language we can write and understand.
Many projects require artwork like logos, illustrations, and other graphics. If we are good with creating these, we should feel free to put them out. If we are particularly inclined and are able to produce generic art that can be useful to many projects, we should upload those too under a license that allows reuse.
Organizing conferences is a very powerful way to bring attention to anything we need. What if we organize a conference for our favorite piece of software? Invite one of the maintainers to give a keynote. Invite our friends and family to attend. Record and upload the talks. We will create a ton of excitement.
When we interact with communities in such powerful ways as described above, we soon gain enough of know-how to be able to mentor other contributors. We should then share and spread the freedom through constructive mentorship. Inspire others to take action. Encourage them. Help them when they’re stuck. Turn them into leaders too.
Freedom is in our minds. Once we embrace that freedom, there is nobody who can stop us. Everyone has limiting beliefs in their mind. But once we are exposed to a world of larger possibilities, our limiting beliefs also grow to accommodate those possibilities. Of course, such exposure is harder for some and easier for some. But getting that exposure we need is one of the easiest ways to grow. There are opportunities all around which we should try to grab. Like the software freedom camp.