As you may or may not know, we have a widget library and CLI tool named Pixlet to author and develop apps for Tidbyt. In addition, we have an API where you can push images and configure your device programatically. What we don’t have currently is a way to publish apps to Tidbyt.
The way our backend works is we load up starlark files using the same rendering library available in Pixlet. Every time an app needs updated, we execute the starlark on our servers and send the result back to the appropriate device. This means if we want to support publishing thrid-party apps, we need to be able to run them in an isolated and secure fashion that doesn’t open our platform up to being abused. The good news is, this isn’t impossible. The bad news is, it’s going to take some time to get right.
We loved Max Timkovich’s Fuzzy Clock and we got their permission to include it on our platform with attribution. This approach could be done again in the short term - reply to this discussion if you want to see your app on our platform and we’ll see if it’s something we can support. A few things we still need to square:
- Software licensing: we need to make sure we’re able to use your software without violating any laws. MIT licensed code makes this really easy.
- Config values: we configure apps through a structure in our mobile app that we haven’t open sourced just yet. If your app requires a lot of config from the user, it will be pretty hard to support in the short term.
- Bug fixes or updates: for Fuzzy Clock, we simply vendored the code in our repo. This means we’re not getting any updates and it makes it hard for us to push fixes in reverse.
- App name and copy: we need to know what the app name, summary, and description should be and who to make attribution to.
- The future: if we do this, how do we migrate to the new workflow in the futre?
One idea we had was to create a Community Apps repo where folks can make a pull request against. That way, we can review the code running on our servers and pull the source from the main branch as part of our release process. We could also have a license in the repo and potentially an agreement as part of the PR process. Would love to hear your thoughts. Is this a workflow that you would like to use?
Have ideas we haven’t thought of? We would love to hear them. Let us know in the discussion below.