Console #129 - Interview with Gabe of Owncast - self hosted live-streaming server
Featuring Charts.css, stc, and RestFox.
đïž Projects
Browse through open source projects on OpenSourceHub.io, add your project to get more exposure and connect with other maintainers and contributors!
đ Charts.css
Charts.css is an open source CSS framework for data visualization. It helps frontend developers turn data into beautiful charts and graphs using simple CSS classes.
language: HTML, stars: 5105, issues: 16, last commit: May 2021
repo: github.com/ChartsCSS/charts.css
site: chartscss.org
⥠stc
Speedy TypeScript type checker written in Rust.
language: Rust, stars: 1585, issues: 14, last commit: today
repo: github.com/dudykr/stc
blog: kdy1.dev/posts/2022/10/open-sourcing-stc
đŠ RestFox
RestFox is an offline-first web HTTP client. It is an open source lightweight alternative to Postman.
language: Vue, stars: 693, issues: 6, last commit: today
repo: github.com/flawiddsouza/Restfox
site: restfox.dev
đș Owncast
Owncast is a free and open source live video and web chat server for use with existing popular broadcasting software.
language: Go, stars: 6566, issues: 114, last commit: 2 days
repo: github.com/owncast/owncast
site: owncast.online
Join thousands of other open-source enthusiasts and developers in the Open Source Hub Discord server to continue the discussion on the projects in this week's email!
đ€ Interview With Gabe Kangas of Owncast
Hey, Gabe!, letâs start with your background. Where have you worked in the past, where are you from, how did you learn to program, what languages or frameworks do you like?
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.
How are you planning to overcome high latency?
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 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.Â
Want to join the conversation about one of the projects featured this week? Drop a comment, or see what others are saying!
Interested in sponsoring the newsletter or know of any cool projects or interesting developers you want us to interview? Reach out at osh@codesee.io or mention us @ConsoleWeekly!