Console 33

Tink, Turbo, and Trio

Console is looking for sponsors! If you, or someone you know, is interested in sponsoring the newsletter, please reach out at console.substack@gmail.com


owncast

Owncast allows you to take control over your live stream video by running it yourself. Streaming + chat out of the box.

language: Go, stars: 3087, watchers: 53, forks: 136, issues: 61

last commit: December 26, 2020, first commit: May 24, 2020

https://mastodon.social/@gabek

tink-rust

tink-rust is a Rust port of Google’s Tink cryptography library.

language: Rust, stars: 14, watchers: 5, forks: 1, issues: 18

last commit: December 17, 2020, first commit: September 24, 2020

turbo

Turbo provides the speed of a single-page web application without having to write any JavaScript and was open sourced by Basecamp this week.

language: TypeScript, stars: 1200, watchers: 36, forks: 29, issues: 25

last commit: December 23, 2020, first commit: July 02, 2015

https://twitter.com/sstephenson & https://twitter.com/javan

trio

Trio is a friendly Python library for async concurrency and I/O.

language: Python, stars: 3609, watchers: 92, forks: 212, issues: 280

last commit: December 25, 2020, first commit: January 11, 2017

https://twitter.com/vorpalsmith


Help Wanted

If you’re interested in posting a help wanted ad for your project, send an email to console.substack@gmail.com


An Interview With Gabe Kangas of Owncast

What is your background?

I started my career more on the operations side of things, working at data centers and companies in Chicago and Omaha back before “unix systems administration” became devops.  At one point I decided I wanted to build products instead of just supporting them, so I made the change to focus primarily on mobile app development.  First iOS, and then some Android.

My first software development experience, though, was with web + PHP.  It was hacky, and I had no idea what I was doing, but I released a tool to allow Pandora listeners to connect their LastFM accounts called PandoraFM.  I’ve continued to focus on music-related projects since then, as it’s a passion of mine.  While both defunct, two of note are Longtail Music, an internet radio discovery platform, and The Bat Player, an internet radio client for AppleTV and Roku.  All along I’ve continued to have no formal training, instead I just try to learn the best tool for the job.

In the corporate realm I’ve often gravitated to media companies, building mobile at TastemakerX, Rdio, and Philo in San Francisco.

What's an opinion you have that most people don't agree with?

That the web ecosystem has become bloated, complex, and unwieldy.  

What’s your most controversial programming opinion?

I believe that the homogenization of all development into Javascript apps is harmful to software development as a whole.  Just like the world would be a far more boring place if everyone spoke the same verbal language, I believe using different programming languages, environments and ecosystems allows you to exercise your brain in different ways, leading not just to better engineers, but ultimately to more interesting people.  Plus there’s no arguing some tools are better for some jobs than others.  It’s way more fun to learn the best tool for the job than to fight a tool just because you’re comfortable with it.  Some examples of forcing Javascript where it doesn’t belong are the non-native frameworks that have become so popular such as React Native and Electron.

How do you separate good project ideas from bad ones?

I think any project that solves a problem, even just for yourself, is a good one.

Why was Owncast started?

I’ve been a bit more sensitive to large centralized networks and providers the past year or so, and once COVID hit, and I started seeing live streaming really explode. I started thinking about what the options were for people to simply run their own live stream.  While there were a couple solutions out there, there wasn’t anything that I felt was hassle-free enough to run for most people.

What overarching goals of Owncast drive design or implementation, and what trade-offs have been made as a consequence of these goals?

Absolutely.  I feel like too many web products these days are built upon stacks where the operator is responsible for fighting dependencies and setting up the proper runtime, when all they want to do is run some software.  So from day one I wanted something that could be downloaded and up running quickly without any npm installs, ruby gems, pip commands, bundlers or transpilers.  This narrows down the development choices, and led to selecting Go as the language.

And secondly, I wanted anybody who downloads Owncast to have complete ownership and control over their page’s interface without installing build tools to make changes.  People should be able to just edit some CSS to change their font and add some HTML links without installing Webpack.  So we had to find a solution that was bundler-free, but still allowed us to build a web app with the modern niceties that we’d expect.  We landed on Preact to get something React-ish without all the overhead.  Anybody can edit the components directly and immediately get that reflected on their page.

The top comment when I posted about Owncast on Reddit was about high latency. Do you see any ways of overcoming this in the future?

Many people ask why Owncast has latency compared to something real-time like WebRTC, and it’s simply about using the right tool for the job.  Owncast uses HLS, a fantastic solution for the “one-to-many” video distribution use case.  HLS handles video as small segments that can optionally be cached on CDNs and distributed via S3 compatible storage providers, meaning you can scale the video to many more people than other options, at the same time offloading your bandwidth requirements somewhere cheaper and faster.  Owncast has never tried to fill the need of tight real-time requirements, but you can tweak your configuration to lower the length of each segment to see how low latency your particular setup can safely go, as the defaults err on the safer side.  The future looks bright, however, as the Low Latency HLS spec is becoming solidified and adopted in more places.  And I’m sure once that’s something a little more fleshed out in places I’d love to adopt it, too.

What is your typical approach to debugging issues filed in the Owncast repo?

I generally ask them to run with defaults, enable verbose logging and send over the logs.  It’s often some configuration that was attempted, or something outside of Owncast itself that is the culprit in most debugging.

Is Owncast intended to eventually be monetized if it isn’t monetized already?

There’s no monetization.  There’s different routes that could be taken, but it’s still early days, and I’m far more focused on making something that is useful to people than prioritizing monetization opportunities. But you never know, ask me again in a year or two!

Do you think any of your projects do more harm than good?

I don’t think I could work on something that fell into the category of more harm than good.  I want to make things that are useful for people and ultimately lead to making their lives better in some way.  It’s unfortunately pretty common for people to trade away a lot in return for services and platforms that don’t make their lives any better.  I’d never be happy knowing I was involved in that.

What is the best way for a new developer to contribute to Owncast?

Drop by our Rocket.Chat and hang out.  Even if you don’t know specifically where you’d like to contribute you’re always welcome to join the crew and feel things out.  I know sometimes you need to get a lay of the land before you know what specifics interest you for contributing.  But if you do know what types of things you’d like to work on, see if there are any issues labeled as “good first issue”.  Admittedly those tasks come and go pretty quickly, but it’s a great first step.

Where do you see Owncast heading next?

In particular I’m really excited about our roadmap of features that we’ll be building out.  While big tent pole features such as being able to completely manage your server via a web interface and being able to record your streams have been planned for a while, feedback from the community is helping us prioritize other features such as much needed chat moderation, and a much wanted ActivityPub integration.  But, big picture, I want to focus on making it easier to configure, getting in the features I feel are needed, while being open minded and nimble with the thoughts and ideas people who are excited about the project would like to see.

Where do you see software development in-general heading next?

I think we’ll start seeing the pendulum swing the other way as the scrutiny of large tech companies reach a boiling point and more, smaller, projects that focus on privacy and personal ownership will become more popular.  I particularly appreciate the stance that the Small Technology Foundation has taken with “small is beautiful”.  While I don’t believe everyone will be running their own email server anytime soon, finding and building smaller communities that align with your personal ideals feels like a working model with things like the Fediverse, and I think that will continue, with new projects facilitating that.

Do you have any suggestions for someone trying to make their first contribution to an open-source project?

Find things you care about and start small.  Documentation, testing, and answering questions are all non-code related things you can get involved with even if you aren’t yet comfortable with a project’s codebase.

And since we’re on the topic of contributors, I want to take this opportunity to thank everybody who’s been a part of the Owncast project.  I’ve been lucky to have met a really great group of smart, thoughtful, energetic and supportive people who, along with those running public Owncast servers, are building a small community of people who are enjoying live streaming that they control.  It’s so cool.  


Last Week’s Responses

Of the following chat services, which do you prefer?


Like what you saw here? Why not share it?

Share

Or, better yet, share Console!

Share Console

Also, don’t forget to subscribe to get a list of new open-source projects curated by an Amazon software engineer directly in your email every week.