Coding Blocks
Coding Blocks
Jan 17, 2021
Who Owns Open-Source Software?
Play

We discuss all things open-source, leaving Michael and Joe to hold down the fort while Allen is away, while Joe’s impersonations are spot on and Michael is on a first name basis, assuming he can pronounce it.

This episode of the Coding Blocks podcast is about the people and organizations behind open-source software. We talk about the different incentives behind projects, and their governance to see if we can understand our ecosystem better.

This episode’s show notes can be found at https://www.codingblocks.net/episode150, if you’re reading this via your podcast player.

Sponsors

  • Datadog –  Sign up today for a free 14 day trial and get a free Datadog t-shirt after creating your first dashboard.
  • Linode – Sign up for $100 in free credit and simplify your infrastructure with Linode’s Linux virtual machines.

Survey Says

Anonymous Vote
Sign in with Wordpress

News

  • We appreciate the new reviews, thank you!
    • iTunes: @k_roll242, code turtle

Upcoming Events:

You Thought You Knew OSS

Q: What do most developers think about when they think of “open-source” software?

Q: Is the formal definition more important than the general perception?

Formal Definitions of Open-Source

  • opensource.org: Open source software is made by many people and distributed under an OSD-compliant license which grants all the rights to use, study, change, and share the software in modified and unmodified form. Software freedom is essential to enabling community development of open source software.
  • opensource.com: Open source commonly refers to software that uses an open development process and is licensed to include the source code

Pop Quiz, who created…?

  • C: Dennis Ritchie
  • Linux: Linus Torvolds
  • Curl: Daniel Sternberg
  • Python: Guido von Rossum
  • JavaScript: Brandon Eich (Netscape)
  • Node: Ryan Dahl
  • Java: James Gosling (Sun)
  • Git: Linus Torvalds
  • C#: Microsoft (Anders Hejlsberg)
  • Kubernetes: Google
  • Postgres: Michael Stonebraker
  • React: Facebook
  • Rust: Mozilla
  • Chromium: Google
  • Flutter: Google
  • TypeScript: Microsoft
  • Vue: Evan You

Q: It seems like most newer projects (with the exception of Vue) are associated with corporations or foundations. When and why did that change?

GitHub Star Distribution

Q: What are the most popular projects? Who were they made for, and why?

Who uses open-source software?

  • There are a lot of stats and surveys…none great
  • All surveys and stats agree that open-source is on the rise
  • You kinda can’t not use open-source software. Your OS, tools, networking hardware, etc all use copious amounts of open-souce software.

Individuals

  • Many (most) smaller libraries are written and maintained by individual authors, and have few or no contributors
  • Some large / important libraries have thousands of contributors
  • 10 most contributed GitHub projects in 2019
    • VS Code has almost 20k contributors
    • Flutter has 13k contributors
    • Kubernetes and Ansible have around 7k

Q: Why do individuals create open source? What do they get out of it?

Corporations

  • A lot of corporate “open source” that are utilities or tools for working with those companies (ie: Azure SDK)
  • Many open source projects are stewarded by a single company (Confluent, Elastic, MongoDB)
  • Many open source projects listed below are now run by a foundation

Let’s look at some of the most prominent projects that were started by corporations. Note: many of these projects came in through acquisitions, and many have since been donated to foundations.

Microsoft
Google
Facebook
Amazon
  • Well, lots of toolkits and sdks for AWS…
Oracle
Focused Corporations

Sometimes a company will either outright own, or otherwise build a business centered around a technology. These companies will typically offer services and support around open-source projects.

  • DataStax
  • Elasticsearch
  • Canonical
  • MongoDB

Q: Why do corporations publish open-source software? What do they get out of releasing projects?

Foundations

  • Foundations are organizations that own open-source projects
  • Foundations have many different kinds of governance models, but generally they are responsible for things like…
    • code stewardship (pull requests, versions, planning, contributors, lifecycle, support, certification*)
    • financial support (domains, hosting, marketing, grants)
    • legal issues (including protecting the contributors liability)
  • Most big open-source projects you can think of run under some sort of foundation
  • Typically they are funded by large corporate backers
  • There are a ton of foundations here. including many “one-offs”: https://opensource.com/resources/organizations ** WordPress Foundation, Python Foundation, Mozilla foundations
  • Foundations are run in a variety of ways, and for different reasons, some even offer many competing projects
  • https://opensource.guide/leadership-and-governance/ ** BDFL – Python, small projects, one person has final say ** “Meritocracy” (not a great term) – Active contributors are given decision making power, voting ** Liberal Contribution: Projects seek concensus rather than a pure vote, strive to be inclusive (Node, Rust)
Apache (1999)
Cloud Native Computing Foundation
  • Kubernetes, Helm, Prometheus, FluentD, Linkerd, OpenTracing
  • A whole bunch of others that start with a K

Linux Foundation

  • Linux Kernel
  • Kubernetes..? Ah, they’re over CNCF, and many, many, many other things
  • Let’s Encrypt, NodeJS (through the OpenJs Foundation)

Q: Why do corporations donate projects, why do individuals? Who really owns open-source code?

Resources We Like

Tip of the Week

Python Bytes
Python Bytes
Michael Kennedy and Brian Okken
#222 Autocomplete with type annotations for AWS and boto3
Sponsored by Linode! pythonbytes.fm/linode Special guest: Greg Herrera YouTube live stream for viewers: Watch on YouTube Michael #1: boto type annotations * via Michael Lerner * boto3's services are created at runtime * IDEs aren't able to index its code in order to provide code completion or infer the type of these services or of the objects created by them. * Type systems cannot verify them * Even if it was able to do so, clients and service resources are created using a service agnostic factory method and are only identified by a string argument of that method. * boto3_type_annotations defines stand in classes for the clients, service resources, paginators, and waiters provided by boto3's services. Example with “bare” boto3: Example with annotated boto3: Brian #2: How to have your code reviewer appreciate you * By Michael Lynch * Suggested by Miłosz Bednarzak * Actual title “How to Make Your Code Reviewer Fall in Love with You” * but 🤮 * even has the words “your reviewer will literally fall in love with you.” * literally → figuratively, please * Topic is important though, here are some good tips: * Review your own code first * “Don’t just check for mistakes — imagine reading the code for the first time. What might confuse you?” * Write a clear change list description * “A good change list description explains what the change achieves, at a high level, and why you’re making this change.” * Narrowly scope changes * Separate functional and non-functional changes * This is tough, even for me, but important. * Need to fix something, and the formatting is a nightmare and you feel you must blacken it. Do those things in two separate merge requests. * Break up large change lists * A ton to write about. Maybe it deserves 2-3 merges instead of 1. * Respond graciously to critiques * It can feel like a personal attack, but hopefully it’s not. * Responding defensively will only make things works. Greg #3: REPODASH - Quality Metrics for Github repositories * by Laurence Molloy * Do you maintain a project codebase on Github? * Would you like to be able to show the maturity of your project at a glance? * Walk through the metrics available * Use-case Michael #4: Extra, extra, extra, extra, hear all about it * Python 3 Float Security Bug * Building Python 3 from source now :-/ It’s still Python 3.8.5 on Ubuntu with the kernel patch just today! (Linux 5.4.0-66 / Ubuntu 20.04.2) * Finally, I’m Dockering on my M1 mac via: * docker context create remotedocker --docker "host=ssh://user@server" * docker context use remotedocker * docker run -it ubuntu:latest bash now works as usual but remotely! * Why I keep complaining about merge thing on dependabot. Why!?! ;) * Anthony Shaw wrote a bot to help alleviate this a bit. More on that later. Brian #5: testcontainers-python * Suggested by Josh Peak * Why mock a database? Spin up a live one in a docker container. * “Python port for testcontainers-java that allows using docker containers for functional and integration testing. Testcontainers-python provides capabilities to spin up docker containers (such as a database, Selenium web browser, or any other container) for testing.” import sqlalchemy from testcontainers.mysql import MySqlContainer with MySqlContainer('mysql:5.7.32') as mysql: engine = sqlalchemy.create_engine(mysql.get_connection_url()) version, = engine.execute("select version()").fetchone() print(version) # 5.7.32 * The snippet above will spin up a MySql database in a container. The get_connection_url() convenience method returns a sqlalchemy compatible url we use to connect to the database and retrieve the database version. Greg #6: The Python Ecosystem is relentlessly improving price-performance every day * Python is reaching top-of-mind for more and more business decision-makers because their technology teams are delivering solutions to the business with unprecedented price-performance. * The business impact keeps getting better and better. * What seems like heavy adoption throughout the economy is still a relatively small-inroad compared to what we’ll see in the future. It’s like water rapidly collecting behind a weak dam. * It’s an exciting time to be in the Python world! Extras: Brian: * Firefox 86 enhances cookie protection * sites can save cookies. but can’t share between sites. * Firefox maintains separate cookie storage for each site. * Momentary exceptions allowed for some non-tracking cross-site cookie uses, such as popular third party login providers. Joke: 56 Funny Code Comments That People Actually Wrote: These are actually in a code base somewhere (a sampling): /* * Dear Maintainer * * Once you are done trying to ‘optimize’ this routine, * and you have realized what a terrible mistake that was, * please increment the following counter as a warning * to the next guy. * * total_hours_wasted_here = 73 */ // sometimes I believe compiler ignores all my comments // drunk, fix later // Magic. Do not touch. /*** Always returns true ***/ public boolean isAvailable() { return false; }
38 min
The .NET Core Podcast
The .NET Core Podcast
Jamie Taylor
Picking the Right Azure Resources with Barry Luijbregts
Support for this episode comes from RJJ Software Ltd RJJ Software is dedicated to helping you to realise your company's digital potential through innovative solutions using the latest technologies. Remember: you can also always follow the show on twitter @dotnetcoreshow, and the shows host on twitter @podcasterJay In this episode of the .NET Core Podcast we chatted with Barry Luijbregts (aka Azure Barry) about the many different Azure resources and how to pick the "best" ones for your project The full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at https://dotnetcore.show/episode-70-picking-the-right-azure-resources-with-barry-luijbregts/ Support for this episode also comes from Datadog. Head over to datadoghq.com/dotnetcore, sign up for a 14-day trial, and claim a free t-shirt! Remember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend. You can support the show by making a monthly donation one the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast The .NET Core Podcast is a proud member of Jay and Jay Media. If you like this episode, please consider supporting our Podcasting Network. One $3 donation provides a week of hosting for all of our shows. You can support this show, and the others like it, at https://ko-fi.com/jayandjaymedia
1 hr 18 min
Soft Skills Engineering
Soft Skills Engineering
Jamison Dance and Dave Smith
Episode 250: The management track and active listening
In this episode, Dave and Jamison answer these questions: Questions * I’m a Tech Lead at a decent sized corporation. If I want to grow towards a promotion my options are a more people management track towards Engineering Lead (basically a TL who also manages 1-2 other TLs) or a more technical track towards Staff TL. Where I’m struggling is I don’t know how I would actually work towards the Staff level, seeing as most of my time is spent wrapped up in mentoring, coaching, planning meetings, and just generally large blocks of time spent on Zoom. Have you ever seen someone move down that path? I worry I would be letting my other responsibilities slip through the cracks by focusing on my own technical advancement. How should I balance what my team needs from me vs. what I need to focus on to get to a role like that? Is the best way to get there 1 step back (to being an individual contributor again) and then two steps forward (working towards Staff Engineer then Staff TL)? * Hello soft skills! Love the show and your great banter, keep the laughs coming. Do you have any tips for ‘active listening’? My manager is very, very chatty and our catch ups over zoom often last two hours or more. I find myself drifting in and out while he talks and then need to snap out of it when I hear something that might be useful. How do I keep focused in extra long meetings where we are one on one and the content is not particularly interesting? Thanks! Show Notes https://mediocre.dev/it-takes-more
28 min
Search
Clear search
Close search
Google apps
Main menu