Open Source Contributions in 2020

When I wrote my 2019 open source contributions annual review I had high hopes for my open source contributions in 2020. As I wrote in my 2020 health annual review I allowed the political upheaval in my home country, the US, to distract me way too much. Sure there was some COVID distraction in March/April but if anything I was actually hoping the lack of travel would give me time to focus more on code generation. It was not to be. That excuse aside, I still managed to put in 698 hours into open source projects. That’s a slight uptick from 2019’s 653 hours but short of the 1000 hours I was hoping to contribute. The distribution looks very different as well, with most of it concentrated around my work with The B612 foundation . The five projects I contributed to the most fall into a relatively broad range of software (from highest to lowest number of hours contributed):

  • The B612 foundation : The B612 Foundation’s goal is to get better at tracking asteroids so we can stave off a potential cataclysmic collision. The project is doing all of their astrodynamics algorithm work as open source and I am more than happy to contribute towards that. This year’s work for B612 has been substantially around getting an astrodynamics view tied into their asteroid trajectory calculations. It allowed me to personally experiment with VueJS on a real project for the first time. I had thoughts of maybe even trying to use TypeScript instead of JavaScript but instead stuck with JavaScript for this particular application. We were able to get an interesting early concept of a UI that could be used for calculating and visualizing the impact probability and impact regions of near Earth Asteroids. I also helped with some of the Python library side of things as well. This project also was the driver behind contributions to Orekit and Spacekit.

  • Orekit : Orekit is a Java based Apache licensed open source project for doing low level astrodynamics calculations. It can be used for everything from basic coordinate system transformations to targeted trajectory propagations. One thing I wanted to do was use it for propagating Asteroids with high fidelity like we do with B612’s propagators and maybe even get it to do some orbit determination. By far the biggest challenge for that was having it use up to 200 solar system bodies as perturbing forces. That is usually not needed for most applications so by default it supports the usual accompanyment of all the planets, the sun, and the moon. The second biggest challenge was coding up a coordinate frame which matches what JPL Horizons uses for their outputs. The good news is that I was able to get the propagations within the uncertainties of the Horizons data. The bad news is I really got stuck getting orbit determinatino working. It’s something that I may be revisiting in 2021 but it’s not necessarily high up on my list at the time of this writing.

  • Mammoth Mammoth a federated social media project that uses ActivityPub for client-to-server and server-to-server communications. I’ve been conversing with Brad Koehn on various topics for a few years now. His discussion about trying to use NoSQL databases and scalable systems for creating federated social network platforms intrigued me. While I did no coding on the platform itself my general interests in creating alternate social networks was definitely activated with the idea of helping out. One of my big concerns with any of the systems I’m working with is demonstrating scalability. To help him with his efforts I created a test harness which could simulate network activity across the social network with some statistical variability. You have highly connected and not very connected users. You have highly active and not very active users. Creating statistical distributions of these and studying the performance of the network under loading is beneficial to proving the design scalability. The test harness is something I’m hoping to generalize and use on some social media projects that I want to embark on in 2021. You can watch his presentation on using NoSQL and ActivityPub here .

  • Spacekit : Spacekit is an Apache open sourced WebGL based solar system viewer that we started using on B612 for our web portal initiative. At the end of 2019 we were looking at another WebGL technology called Cesium for this effort but Cesium had problems with solar system scale visualizations. Cesium is heavily optimized for surface or planetoid focused data visualizations. Spacekit is more focused on solar system wide visualizations or even moon system-wide views. Because of that it was more appropriate for what we were doing but we did need some tweaks to it. By far the biggest thing we added was the ability to use look up tables for the position and velocity (ephemeris) of celestial bodies. Prior to that the only option was to use Keplerian equations for that. To make the look up table happen we added interpolators, root finders, and some other auxiliary calculations. There were some additional features that we may be implementing later this year as work continues on the astrodynamics view website.

  • My Social Portal : I had very high hopes for this project for 2021 and it was by far the most neglected compared to my aspirations. I still managed to put in some time on it but most of that has been on preparing for a revectoring of my efforts on this. The code and work I had done in 2019 revolved around a desktop client type application written in C# and Avalonia . Instead I’m looking more and doing some stuff server side and multiplatform but written in Kotlin. I spent many hours playing around with the Kotlin technologies but little of that was directly applied to Social Portal. I once again want to concentrate on this more in 2021 under this new direction.

  • …and the rest (4 others): There are actually only four other projects I contributed to even lightly, versus the fourteen of 2019. I did a little documentation work on Avalonia . The same is true with some work around Kotlin Native and getting that building on the Apple Silicon hardware. Although after some brief looks at it I’ve put that on the shelf for the time being. Lastly I did a little bit of documentation and support around client I wrote for LiteDB (A file-based Document Database for .NET).

2020 was the year I was really looking forward to putting a good half time effort into open source. It was not to be for reasons that are entirely my fault. I let myself get overly distracted by the political chaos. I’m hoping that in 2021 as the political environment hopefully settles down after January 20th that I can get more focused and contribute to more open source activities.