Reviving
open-source projects

at the example of OpenTracks
by @dennisguse@chaos.social

Disclaimer

Everything that I am going to present are
personal experiences and toughts.

Lifecycle of projects

  1. initiatation
  2. planning
  3. executation
  4. closing
  5. ... abandoning?

What happens with abandoned projects?

... nothing.

And on a sunny day in the far far future,
somebody might revive it.

Before that sunny day (1)

Somebody needs have the proper problem(s) and knows somebody with the correct motivation.

... and then: the situation must fit.

Before that sunny day (2)

Make or buy?

Contribute to an active project?

Upcycle an abondoned project?

About of upcycling projects

There might be

  • ... something "working"
  • ... still have some users / be known
  • ... have solutions for details not yet known
  • ... have quite something to learn from

Let's upcycle!

Is there an abandoned project?

Is it worth reviving?

Bonus: Why was it abandoned?

Upcycling
Google's MyTracks

An Android app for outdoor activity related data.

Created in 2009; abandoned in 2013.

In 2019, OpenTracks was created.

Written in Java/Android.

Aspects of upcycling?

  1. Mission
  2. Legal
  3. Tech stuff
  4. Distribution
  5. Organisation
  6. Financial

Mission

What do you want to achieve with the project?

For OpenTracks: implement a privacy-first outdoor activity tracker.

Legal

License?

Copyrights?

Trademarks?

Tech stuff: get it running?

Do you have the required hardware?

Build and test are working?

Dependencies still available?

Are there tests?

Are tests checking something useful?

Tech stuff: make it low maintenance!

What features do we need to keep?

Check if tests prevent refactoring?

How can we upgrade the code and dependencies?

Refactor things: one at a time

Distribution

How to distribute your project?

How do new/old users hear about it?

Which release model are fits?

Organisation

Where to host the project?

Do we have a build system and CI/CD?

How do we communicate?

How to organize work?

Finance

How to get money? Donations or selling it?

How to distribute money?

Do we need to make this transparent to the outside world?

Circumstances

For OpenTracks: due to the COVID-19 pandemic,
we had quite some time...

Events in OpenTracks

  • 06_2019 first commit
  • 09_2019 first release
  • 12_2019 creation of Dashboard API
  • 07_2020 use system time (instead of GPS)
  • 08_2020 automatic export
  • 09_2020 elevation gain via barometer
  • 02_2021 user generated events are stored
  • 05_2021 fetch traveled distance from BLE sensor
  • 05_2021 EGM2008 altitude correction
  • 01_2022 indoor use (BLE only)
  • 05_2022 implement Public API

Lessons learned

  • Stick with standards:
    read them, but expect that implementation varies.
  • Remote debugging is fun (e.g., memory leaks, GPS not working, power saving).
  • Contributations are mainly feature requests
    (and some people try to implement it).
  • ... even simple, well-written issues are not taken.
  • Nightly builds and app crash reports are helpful.
  • Finance model works: about ~800/per year.
  • Do not minify/uglify code.

New is not always better.

Upcycling projects allows you to learn a lot!

... and it is kind of

... if the circumstances are right...

  • Otherwise: @dennisguse@chaos.social
  • Or: https://opentracksapp.com/

Bonus

GPS week rollover created a bug

KML/KMZ: coordinates are optional

Memory leaks in other apps can crash your application

... remote debugging via Mastodon

Implement BLE sensor without having one