LibreShift / red-moon

Android screen filter app for night time phone use.
GNU General Public License v3.0
657 stars 81 forks source link

Red Moon Maintenance Status #281

Open smichel17 opened 3 years ago

smichel17 commented 3 years ago

This is not an announcement of changes to come, just confirming how things have been for several years already.

Working on Red Moon is not a priority for me right now, but I still use it daily. I plan to maintain it to the level of "works on my device[1]." That means I will fix bugs that annoy me enough, and that's all — no other bugfixes or new features are planned. That said, I'd be thrilled to have co-maintainers, so I am willing to match the effort that anyone else wants to put in:

There are a few things I still plan to do:

[1] As I write this (2020-12-18), that's a Samsung Galaxy S6 (SM-G920A) running Android 7.0.


I care about software freedom, and I try to run exclusively FLO software on my personal computers. Today I have mostly achieved that (with exceptions for a few messaging apps, for when I'm not willing to ask others to switch to Signal or Matrix), but it was a gradual transition. Most proprietary apps I used had a decent FLO counterpart on f-droid, but there was no screen filter app good enough to replace Twilight. Red Moon, developed by @raatmarien at the time (which built on top of Shades, by @cngu), was the closest, and its code base was easy enough to understand to the junior programmer I was back then, so I started helping out. I didn't plan to become the primary maintainer; it just happened that way, as @raatmarien became busier with other things.

Red Moon is a small enough project that it is possible to get it feature-complete; if every open issue on this repo were fixed, there would be nothing more to do, except keep it working on the latest versions of Android and as many devices as possible — very low effort required. My plan was to get Red Moon to that point, and then basically move on. I still have some interest in that… however, Red Moon is one of many projects I'd like to work on, far more than I will ever have time to complete. And so I have chosen to prioritize those that I feel have the most potential to improve the world.

Today, there are several other screen filter apps looking to solve the exact same problem as Red Moon. It seems like a waste of time to work on this problem when others are doing the exact same thing. I would rather work together to create the single best app we can. I actually proposed this (#222) but despite some initial interest, I was not able to entice the other apps' devs to participate meaningfully. I have no hard feelings towards them, and I'd be willing to help if they wanted to use any of Red Moon's features in their own apps (e.g. automatic pause to exclude apps from filtering). At the same time, I can't deny this hugely decreases my motivation, especially compared to other projects that nobody has attempted before.

As importantly, Android has a built-in blue light filter; I mostly use Red Moon for additional dimming and an automatic backlight control — basically, as a toggle for when I'm reading in bed at night. Building a better screen filter app is not as important as it once was. Through the combination of improvement and increasing irrelevance, my original motivation to work on Red Moon has been solved.

I'd like to think that some day I will return to finish the app. But if I'm being honest — with myself and with you — I will probably switch to gnu/linux phone (pinephone or librem 5) before that happens, and at that point I'm unlikely to return to Android, as a user or developer. In the meantime, I'll keep Red Moon working well enough for myself, or switch to a different app (and update the status here); and I remain interested in improvements that anyone else would like to contribute, and willing to help you with them.

NoahAndrews commented 3 years ago

Respect. This is very well-written, and more than reasonable. I wish all maintainers who don't want to actively spend time on a project would be so up-front about what they are and are not willing to do (bonus points for being willing to help newcomers learn the codebase and make the app better).

Thanks for reminding me that Snowdrift exists, it's a really, really cool model. Contributing a few dollars a month to a project that isn't bringing in enough money to really do anything useful with definitely feels like it's impacting me more then it's impacting the project. I've added my 13¢ (for now!) pledge :)

smichel17 commented 3 years ago

Learning to Code

Since I wrote this post, Red Moon has gotten a tiny but consistent trickle of people interested in contributing— maybe one person every 3-4 months. It must have gotten onto some list of "good first Open Source projects to contribute to", or appear in search results. So, based on my experience in the last year with some interested contributors, I can offer some new information about what will works and what won't.

Mentorship, not Management

The most important thing is that you need to be self-motivated to contribute to Red Moon in particular, ideally a specific feature. As I said in the post above, I am willing to match your effort; before I put in my share, I need you to demonstrate that you're willing to do yours. Looking back over the state of the project to figure out what is a good fit for you to do takes some effort from me. If you're waiting for me to do that preemptively, it's going to be a while. So far, I've averaged 3-6 months to respond to an email like "Hi, I heard Red Moon is a good project for new programmers. What should I do?".

Beginner, not First-Time Coder

I wrote earlier that "Red Moon is a good project for learning to code". I no longer think it's a good project if you don't know how to code at all. This doesn't have anything to do with Red Moon itself, but more about tooling— Android and Git. I'd still say Red Moon is a good first real world project, and a good project to learn Android development.

You'll probably have a better experience contributing if you've done some previous programming activity where you wrote at least 200 lines of code— maybe it was a small personal project that only had 200 lines of code, or maybe it was for an assignment in class (either in person or online).

If you've never written a line of code before, I would advise you not to struggle through figuring out version control, getting an Android development environment set up, and learning Android APIs. Start on something smaller and more self-contained.

I'm still not sure whether I know enough! If you… - Can write fizzbuzz - Can write a recursive function to print the numbers in the fibbonaci sequence - Understand basic data structures, like a List, Set, and Map …then you probably know enough. Note: I'm not saying to go memorize just those things and you're good, but if you've gotten to them in the course of your learning, then you're probably good to go. If you understand the difference between Big O and Theta, or you can explain what an iterator is and why it's useful, then you almost certainly know enough to contribute *(again, unless somehow you happen to know *only* that thing)*.

Mentorship Offer

Mentoring takes time & effort, and I have other projects I'm working on, too! There are a few things that will make it work out better for both of us: