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.

Q&A interviews suck

I hate reading Q&A interviews. They’re a huge waste of time, and they say to me that the journalist quit halfway through his job. I’m not disparaging the Q&A format as a whole, which can work great outside of interviews, but I despite seeing it in them.

Here’s why. When a journalist writes a story, the process goes something like this. First you think of an idea. Then you think about who to talk with about that idea. Next, you make a list of questions to ask them. Then the interview: you ask the questions and write down the answers. This is where the Q&A format gives up. After the interview, you do the most important part of your job—you synthesize the information, making connections between all your interviewees, other sources, and prior knowledge. Then you put time into writing a clear and concise story that doesn’t include anything beyond what’s needed.

As the reader, I expect you, the journalist, to invest your time wisely so I don’t waste mine drawing all the conclusions you should’ve drawn for me. I expect you to cut the material that’s unrelated to the story you’re telling. Don’t stop at the Q&A; write the story.

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?