Going Open Source under GPLv3 but not being Google Dev Library worthy
Mar 15, 2022
Towards the end of 2021 and since then more and more users and software developers expressed interest for Track My Indoor Workout. I get mostly feature requests, but several users went to technical depths to help me support their fitness machines. As I involved more developers in the project I needed to get it ready for contributors, so I set up CI/CD on GitHub. Right now that consists of three steps:
- Flutter CLI formatting check with 100 character (“flutter format –line-length 100”)
- Flutter analyze check with CLI (“flutter analyze”), based on the official flutter_lints package, see configuration
- Flutter test run, which right now mostly consists of unit tests
At that point the source code was still closed. The only reason was proprietary fitness machine protocols. Not only I had to reverse engineer Precor Spinner Chrono Power’s protocol, but I ran into several other examples, like the Matrix treadmill (TF50) and indoor bike (R50) claimed FTMS compatibility but both of them botched the standard and I had to reverse engineer. I’ve reached out to many companies, and I was ready to receive some documentation which could require a signed NDA (Non Disclosure Agreement). Manufacturers are very protective of functions which modify the machine’s behavior (for example change a treadmill’s speed) due to liability reasons.Unfortunately not one manufacturer got back to me so far with the exception of KayakPro ergometers. So I won’t wait for any information or NDA any more because I’d like to follow the traditional open source contribution model. After going open source I felt a tremendous relief.
Let’s talk about the license. The most popular ones are MIT and Apache, these are very liberal, but I wanted something which aligns better with the application’s mission: to prevent machines from becoming a coat hanger rack and to fight the subscription fee milking of athletes would require the application to remain free. GPLv3 guarantees that: if anyone forks or uses the source code, any modification should be published as open source!
I tried to nominate the project to the Google Dev Library to get it more out to the public. I had a feeling in the back of my mind that GPLv3 would be a no-no, but I didn’t see any signs of license limitations on the Dev Library’s pages. Only during the actual submission process turned out that - surprise - only MIT and Apache licenses are accepted. So I landed on an Apache 2.0 + GPLv3 dual license model for the submission to go through.
Unfortunately the submission wasn’t accepted. I assume I’ll need to increase test coverage and code quality, have more contributors, and ultimately have a more thriving project. Therefore I reverted back the license to GPLv3 and I’ll keep adding new features requested by users. I was working on these supports to name a few: Yesoul S3, LifePro FlexStride Pro, Stages SB20.