Open Sourcing the Swift Apps

We're releasing the code for our iOS and macOS apps as open source

Daniel Jilg

Daniel is TelemetryDeck's co-founder and technical lead
undefined

Right now, we can only work on one of our apps at once. I am the only full-time developer on the team, and while Charlotte is highly competent and amazingly smart, she only has very limited time.

Everyone loves using our macOS app. It's smooth and fluid, adheres to the system's human interface design guidelines, and is generally a pleasant experience. But it can only be used by a small subset of our customers: people with Macs who have already downloaded and installed the app. If you're on Windows or Linux, or if you get sent a TelemetryDeck link, you're out of luck.

The app is also hard to develop because we seem to be fighting against a host of bugs and unclear behaviours in SwiftUI on macOS, even in the newest versions.

The current situation is not good for us or our customers. So let's change it!

  • From now on, the dashboard is the canonical way of interacting with TelemetryDeck
  • The iOS app will lose its editor and become a viewer app.
  • Both the macOS and iOS apps are open source now!

With these changes, I hope we can streamline our development and give more people an awesome experience with TelemetryDeck!

Dashboard is the canonical app

Dashboard is the web application to view and edit your insights, apps, and settings for TelemetryDeck. It can now do everything the Mac app can do and more.

Going forward, Dashboard will be our primary and canonical app. It will receive updates first, and any support requests regarding the Dashboard will float to the top. Once a feature is more stable, we'll try and port it to the macOS and iOS apps.

While Dashboard is no native app, we'll still try and make it as pretty and accessible as possible. It'll also auto-upgrade and is universally available on any computer or device with an internet connection.

The opening of the source

The shared codebase for our macOS and iOS apps is now freely available. We're doing this for two reasons:

  1. We want to show our appreciation. So many people are working with TelemetryDeck, and we want to give you the option to change and remix all the pieces to make them more applicable to you. Use our chart code in your own projects! Run a modified dashboard on an old iPad. Fork the project and make it WEIRD. Make it yours.
  2. We realize there's a lot to do on the codebase, and we don't have the capacity to do it right now. So rather than taking all of your suggestions and chucking them on the backlog pile to rot, we'd rather have your PRs! Come on in and FINALLY fix that bug that has been bothering you for a month!

The code is now licensed under the MIT License, and the official Repo for it is TelemetryDeck/TelemetryViewer.

As you browse through the code, you will see that the entire app is written in SwiftUI and has a shared codebase between macOS and iOS. Certain views and features are duplicated so that we can write different code for the two platforms where necessary.

Contributing

We very much welcome your pull requests, both for bug fixes and also for changes and improvements. We hope that the community can help us improve the app for everyone. In return, we'll think up a system of gifting contributors free additional signals, because y'all are awesome.

We would still like to retain some control over the direction of the apps, so if you disappear for a month and then suddenly push a huge PR that guides the app into a direction we don't want it to go, we'll probably have to reject it.

Instead, if you want to add or modify a larger feature, please open an issue or a GitHub discussions thread first. We can discuss your feature idea with the community and the team and give you the green light so that you'll know with some certainty that your feature will be accepted. (Of course you're always free to make your personal fork and use that, regardless of our feelings!)

Future plans

Very soon, we'll submit the iOS app to the App Store under its own account (the TestFlight lives in my personal account right now).

In that version, the button that opens the insight editor will be commented out – while it is cool to be able to edit your insights on the go, most people use the iOS app for viewing, and that's what we feel capable of supporting.

The open-sourced code will also need more documentation. Right now, code-level Swift docs are very sparse in the codebase, and that will have to change if we expect people without a direct way to call me navigating the code base.

Once we have a bit more breathing room, we'd love to work on widgets for iOS 16, widgets for macOS, and switching our chart system over to Swift Charts. That might be a while though, so if you're impatient, give it a go right now!

Happy coding <3
-- Daniel