Improving Gentoo as a tool

Gentoo is a metadistribution, meaning you’re supposed to built whatever you want with it. And we provide some of the tools to make that a reality, but we stop short. We still make it too hard to do what you want with Gentoo. Here’s some of the ideas I want to explore over the next year:

  • Increased binary package support: We already have an experimental tinderbox setup to build packages for a variety of architectures. I want to investigate increasing our collection of binary packages to make a fairly complete installation possible using only binaries.
  • Repositories for user-created distributions: We have tools like Catalyst to create basic installations with stage3 or stage4 tarballs, but it’s still hard to get what you want with them. We should make a repository of Catalyst spec files for a variety of purposes, and we should also add an accompanying mirror of the created tarballs so anyone can use them. We could also revive the Seeds project to create not just vanilla stage4 tarballs but fully fledged, preconfigured installations customized for specific purposes like LAMP servers, development machines, various cluster nodes, GNOME/KDE/Xfce desktops, etc. We already have the possibilities; we need to share our tools.
  • Creating the Gentoo metacommunity: In addition to letting you create your own distribution from Gentoo, I want Gentoo’s community to be what you want it to be. We’re in the middle of adding a few new mailing lists because our primary development list is drowning in noise. We made gentoo-project for non-technical general talk and gentoo-dev-announce for development-related information so developers don’t need to slog through gentoo-dev. I want to take that a step further by forming stronger Gentoo microcommunities around specific areas and moving discussion about those areas to their IRC channels and mailing lists. Our development community has grown too big to keep everything on a general development list. Everyone tries to chip into every discussion, even if they have no relation to it or are unaffected by it.
  • Excellence: Gentoo’s QA is not the greatest. What can we do to improve this? Some automated tools exist for pre-commit checking; can we add anything server-side? Can we add some build servers for critical system packages, so they don’t make it to users before building in a predefined set of common configurations? Can we improve our developer recruitment or add new training for existing developers? How can we renew and strengthen our commitment to excellence? You can’t create a tool with Gentoo if it’s broken.
  • New tools for new places: This is more of an exploratory idea. I’d like a team of contributors to research all the places people use Gentoo, and put together a collection of tools we’re missing. Further, we need to do more extensive research on other distributions to see what sorts of tools they have that we lack. I have no symptoms of NIH syndrome, so I’m happy to pull in working tools written for other distributions; I already did this for many of Fedora’s system-config-* tools last year.
  • Resolving the meta vs. specificity conflict: Gentoo’s status as a metadistribution sometimes produces conflicts between the goals of various projects and teams within Gentoo. Sometimes a person simply needs to make a decision of how to deal with it: pick one, or find a way to do both? Many people remarked over the past couple of years that we’re lacking strong leadership and overarching goals, which would give us some consistent way to decide which projects will “win.” As Seemant has said, Gentoo is a framework, a metadistribution, not a place that forces people to go a certain way. We should strive to enable contributors to follow whichever path beckons to them. But where is Gentoo going, and where should it go? You decide. The innovators and leaders can only suggest places for it to go, so the rest of the community has to follow them to our destination.

Why I volunteer to work on open-source software

A big ruckus came up on the Gentoo development list in the past couple of weeks, and part of it involved Gentoo contributors and their motivations. I’m sure most of us have heard that open-source software is about scratching your own itches, but I’m not sure that everyone really understands what that means.

For me, what it means is that my time on Gentoo needs to fulfill me in some way. If not, then I’ve got tons of other places to invest my free time. It does not mean every change I make fixes a problem I encountered. It does mean every change I make has some return in value. What’s value?

  • Functionality: A feature or bug fix that directly affects a program I use
  • Pride: My reputation as a developer relies upon clean, bug-free code. It’s important that my code is beautiful and functional.
  • Gratitude: Thanks from someone else for the time I spent on their problem
  • Reciprocity: An expectation that others will contribute in areas I care about if I work on things they care about
  • Stimulation: Spending time around other smart people who care about the same things

All of these are selfish, because I’m directly getting some sort of value out of my time and contribution. Many times, Gentoo developers have said they develop for themselves. That’s what they mean. Consequently, the people I care about making changes for are people who give me something I value in return. If you’re contributing in some way, I want to help you. If not, what’s my motivation?

The science of team success

Scientific American has a superb Web site, and I’ve been subscribed to its weekly updates for quite some time. Today’s update included a story called “The science of team success” that talks a lot about what can make teams fail or succeed. It references a branch of psychology called organizational psych., which is pretty much all about this. Can anyone suggest more reading on the topic?

Increasing contributions and interest via personal project aggregation

I just posted this to the Gentoo development list, but I thought other projects could use a similar idea so I decided to add it to my blog.

Hi all,

I’m sure I’m not the only one with a number of projects I’ll never get to, but I’d really like them to happen anyway. I suggest we create some sort of page that aggregates all of these personal projects together, so anyone can browse through them and look for stuff that sounds fun.

The goal is to increase contributions from outside by giving them a ready list of projects of all sizes and difficulty levels to work on, projects that go beyond what happens at Bugday. Further, it could also help current Gentoo developers who are bored or have lost interest in what they’re doing by helping them to find somewhere new to contribute.

A prototype with just my projects is at http://dev.gentoo.org/~dberkholz/proj/

Thanks for your comments!
Donnie

Why Gentoo?

I just came across another good post on why it’s worthwhile to use Gentoo, if not permanently, at least temporarily. Kathy Sierra posted on the Passionate Users blog about the inverse relationship between efficiency of your tool and your understanding of what it does. The more autoconfiguration there is, the harder it is for you to figure out what to do when you’ve got a setup that doesn’t autoconfigure.

A commenter on that post pointed to an earlier Joel Spolsky (Joel on Software) post on leaky abstractions—in other words, an incomplete, simplified metaphor that sometimes breaks down. When you don’t understand both sides of the metaphor, you can’t figure out why everything’s busted.

In the same way, automated tools suck. They’re great once you understand the black box they hide from you, but ignoring that black box entirely is a route to disaster. That’s why you should try Gentoo, or LFS, or some similar DIY distro that gives you the opportunity to understand what all those fancy GUI tools really do. Someday, they’ll break. Will you survive, or will you take your toys and go home?

OSCON talk proposals

The deadline for proposing ideas for OSCON talks was Monday at 11:59 p.m. Naturally I clicked Submit for the final time not long before then, at 11:56 p.m. Note I said “final time,” implying more than one—I decided to go all-out and submit three ideas, in hopes that at least one will slip through. For the curious, they are

  • Design and publish beautifully and professionally: How to create a professional-looking document, using Scribus and Inkscape. Many people who read this probably don’t realize I spent four years working as a page designer and copy editor at newspapers. I continue that interest today as editor of a newsletter about open-source activity for the Open Source Educational Laboratory at Oregon State.
  • Community dynamics in a large open-source project: Problems, solutions and conundrums in Gentoo. The funniest (and saddest) part is when the same things begin to repeat themselves, and nobody else remembers last time it happened.
  • Open-source software in the biosciences: Where we are and what we learned on the voyage: The cruel joke of scientists as programmers. As a grad student in biochemistry at OSU, I’ve had to deal with more ugly software than many of you can imagine. But at least more of it is open source now, right?

Anyone else submit proposals? I’d be interested to hear what they’re about.