head, hackergotchi

Redux: Gentoo's top 3 issues

People were so busy complaining about my pie chart that most of them apparently didn't have a chance to think about the meaning of the actual data. To try helping people look at the information rather than its presentation, here's a bar chart of the same information:

I don't recommend looking at it because you may go blind, but I've made available the (extremely ugly) script that created this.
head, hackergotchi

What are the top 3 issues facing Gentoo?

I ran a quick, informal poll on the internal Gentoo developers' list last week, and tonight I began analyzing the results. 50 developers responded to my 9-question survey, and I'm going to post the results of 1 question at a time.

First question: What are the top 3 issues facing Gentoo?

Pie chart

Technical issues are way down on the list. Developers' top 5 issues are manpower, publicity, goals, developer friction, and leadership. It's good to see that we've been addressing at least a couple of them with the newly energized public relations project and work on the Code of Conduct. Other issues that have been ongoing for quite a while now are the lack of distro-wide vision and goals. The Council could provide those by increased activity and taking stronger stands in particular directions, and that's part of the reason I did this survey—to figure out which directions our developers care about. I think part of the problem is that nobody sits around pondering directions and ideas. Everybody's busy working in their own little areas and not thinking about the big picture. Manpower, or lack of it, is another issue I'm indirectly addressing in my push for greatness, which I'm going to post more about at some point (I promise!).

To create this chart, I used Google's excellent chart API. The neat part about the API is that it's simply a URL, so you can construct it with any language. I used a shell script since I was already fiddling around with awk. Any answer with less than 4 respondants was grouped into Other to make the rest of the chart readable.
head, hackergotchi

LCA attendees rank Gentoo #4 distro

Everybody who went to LCA entered their distro, editor, and shell upon registration. Peter Lieverdink posted graphs of the results.

Gentoo made an excellent showing, coming in 4th after Ubuntu, Debian and Fedora. This is particularly neat because LCA attendees fit Gentoo's target audience really well: developers and power users.

Thanks to Daniel Black for the link to that graph.
head, hackergotchi

Improving Gentoo's PR

This won't be a long post, because I'm tired. Sorry for the dearth of posts on here, but I've been busy writing other things—see below.

For anyone who hasn't heard, I took over as lead of Gentoo's public relations efforts a little over two weeks ago. Three days earlier, I wrote an LWN article concluding that Gentoo isn't falling apart, but it's totally failing to communicate. After writing that article, I realized that somebody had to step up to deal with this problem—who better than me?

My focus right now is showing people that Gentoo development is just as alive as it's ever been. I'm doing this by opening windows into development through more frequent news postings, with links to discussion forums to respond to the posts. Doing this, combined with writing to people ("You will") rather than about them (saying "Users will..."), will help build better relationships with our users.

Another part of improving the perception of a lively, active community is updating the look of our website. The old website redesign never made it to fruition, so a few of us have begun taking a look at how far it got, what happened, and what to do now. At a minimum, I'd like to make some slight changes to give our site a face lift. The design hasn't changed for 6 years now, and it shows.

One major, easily fixable problem with our website is that there's no obvious place to go for users who want to contribute. There should be a big "Get involved!" or "Help Gentoo!" link right up at the top of the page, next to "Get Gentoo!" All this requires is a little webpage that describes all the ways people can help. In fact, the whole website isn't task-oriented enough. This needs to change.

In the future, I'm going to begin improving the "press" aspect of PR, based on my notes from an excellent talk by Josh Berkus at OSCON 2006 on public relations for OSS projects. The main ideas here are providing a press kit for reporters with all the basic info they want, building relationships with local reporters by using local Gentoo contacts, putting together some case studies of people and businesses using Gentoo in interesting ways, and improving our process for creating and posting news and press releases.

Finally, any Gentoo users can help improve Gentoo by simply advocating it to Linux users you know, giving demos and talks at Linux user group meetings or conferences, promoting it in articles, or writing in your blog about something Gentoo does really well.
head, hackergotchi

New xorg-server for testing in ~arch

I just committed xorg-server, which is a prerelease for 1.4.1. Here's the Gentoo ChangeLog:

Bump to 1.4.1 release candidate. It's gotta be an improvement over 1.4, so i'm letting it go into ~arch.

(#192221) 'xorg-server-1.4 - keyboard LEDs do not work' fixed upstream.

(#201047) 'xorg-server 1.4 no longer loads xmodmap via xinitrc properly' fixed upstream.

(#197104) 'xorg-server-1.3 and 1.4 consumes 100% CPU, locking the keyboard, apparently triggered by opening an OpenOffice pulldown menu' fixed with patch from master branch.

(#196019) 'xorg-server creates unnecessary file /etc/X11/X11/Xsession.d/92xprint-xpserverlist' fixed by not installing the same file twice to 2 different places (Andy Crook).

(#195886) 'xorg-server-1.4.0-r2 built with hal USE flag crashes on shutdown if dbus service is not running' fixed upstream.

(#195551) 'xorg-server-1.4 fails to build w/kdrive on amd64' fixed with Makefile.am patch designed for easier sed but unsuitable for upstream because the line gets too long (Michael Gorse).

(#194503) Don't spit versions when showing drivers to rebuild via qlist, and also provide a command for people to do it themselves later.

The upstream X.Org change list is available here.
head, hackergotchi

New GCC hotness

I've been talking with Lance lately about setting up a good development machine, and GCC 4.3 (still unreleased) came up so I checked out its changes. Here's a few I found particularly cool:

  • A new forward propagation pass on RTL was added. The new pass replaces several slower transformations, resulting in compile-time improvements as well as better code generation in some cases.

  • A new command-line switch -frecord-gcc-switches has been added to GCC, although it is only enabled for some targets. The switch causes the command line that was used to invoke the compiler to be recorded into the object file that is being created. The exact format of this recording is target and binary file format dependent, but it usually takes the form of a note section containing ASCII text. The switch is related to the -fverbose-asm switch, but that one only records the information in the assembler output file as comments, so the information never reaches the object file.

  • A new internal representation for GIMPLE statements has been contributed, resulting in compile-time memory savings.

  • A new command-line option -fdirectives-only has been added. It enables a special preprocessing mode which improves the performance of applications like distcc and ccache.

  • Experimental support for the upcoming ISO C++ standard, C++0x

  • Fortran: The -fexternal-blas option has been added, which generates calls to BLAS routines for intrinsic matrix operations such as matmul rather than using the built-in algorithms.

  • Fortran: Support to give a backtrace (compiler flag -fbacktrace or environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a run-time error occurred.

  • Java: libgcj now supports all 1.5 language features which require runtime support: foreach, enum, annotations, generics, and auto-boxing.

  • x86/amd64: Tuning for Intel Core 2 processors is available via -mtune=core2 and -march=core2.

  • x86/amd64: Code generation of block move (memcpy) and block set (memset) was rewritten. GCC can now pick the best algorithm (loop, unrolled loop, instruction with rep prefix or a library call) based on the size of the block being copied and the CPU being optimized for. A new option -minline-stringops-dynamically has been added. With this option string operations of unknown size are expanded such that small blocks are copied by in-line code, while for large blocks a library call is used. This results in faster code than -minline-all-stringops when the library implementation is capable of using cache hierarchy hints.

  • x86/amd64: Support for SSSE3 built-in functions and code generation are available via -mssse3.

  • x86/amd64: Both SSE4.1 and SSE4.2 support can be enabled via -msse4.

  • x86/amd64: GCC can now utilize the ACML library for vectorizing calls to a set of C99 functions on x86_64 if -mveclibabi=acml is specified and you link to an ACML ABI compatible library.

  • MIPS: libffi and libjava now support all three GNU/Linux ABIs: o32, n32 and n64. Every GNU/Linux configuration now builds these libraries by default.

  • The configure options --with-pkgversion and --with-bugurl have been added. These allow distributors of GCC to include a distributor-specific string in manuals and --version output and to specify the URL for reporting bugs in their versions of GCC.

I'm already using GCC 4.2, but I hadn't really looked into its changes either until now:

  • OpenMP is now supported for the C, C++ and Fortran compilers.

  • A new command-line option -Waddress has been added to warn about suspicious uses of memory addresses as, for example, using the address of a function in a conditional expression, and comparisons against the memory address of a string literal. This warning is enabled by -Wall.

  • C++: -Wextra will produce warnings for if statements with a semicolon as the only body

  • C++/libstdc++: Enabled library-wide visibility control, allowing -fvisibility to be used.

  • x86/amd64: -mtune=generic can now be used to generate code running well on common x86 chips. This includes AMD Athlon, AMD Opteron, Intel Pentium-M, Intel Pentium 4 and Intel Core 2.

  • x86/amd64: -mtune=native and -march=native will produce code optimized for the host architecture as detected using the cpuid instruction.
head, hackergotchi

Who made Gentoo Linux, and when? A commit analysis

LWN just published my story of this name as premium content. I ran a number of analyses on Gentoo's CVS commit history, kindly provided by Robin Johnson, to look at what happened to our developers and our commits over time. If you want to know the results now (rather than waiting until the content becomes free), subscribe to LWN—the best Linux and open-source software news.
head, hackergotchi

HOWTO make Gentoo great

Gentoo is good. How do we make it great?

Over the past year or so, I've read a few books, and I want to use those ideas to build a better Gentoo. The books:

I plan to write a short series of posts discussing the lessons in these books and how to apply them to Gentoo. In this post, I'm going to summarize the concepts of "Good to Great." I'll discuss how we can apply them to Gentoo in a later post. The book explains what it takes to transform a good company into a great one. It's a comparison of companies that made a transition from good to great (thus the title) with companies that remained merely good. Jim Collins and his group reduced the differences to a remarkably small set:

  • Level 5 leadership: The leaders of great companies aren't charismatic, big-name CEOs. They're humble, and their ambition is for the company, not for themselves.

  • First, get the right people: Before you decide what to do and where to go, get the right people in the right spots. Otherwise, you've got the wrong people creating the wrong vision, strategy, etc., which the right people are then forced to implement. Concrete implementations:

    • "When in doubt, don't hire—keep looking. (Corollary: A company should limit its growth based on its ability to attract enough of the right people.)"

    • "When you know you need to make a people change, act. (Corollary: First be sure you don't simply have someone in the wrong seat.)"

    • "Put your best people on your biggest opportunities, not your biggest problems. (Corollary: If you sell off your problems, don't sell off your best people.)"

    The right people have the right innate abilities and character traits, not necessarily the specific knowledge and skills. For example, look for work ethic, dedication, and problem-solving ability, not ebuild-writing skills and knowledge of bash.

  • Confront the brutal facts: Don't deny reality, or you can't make the right decisions. To do this, create an environment where everyone can be heard, so the truth can come out. Don't lose faith that you will win eventually, but accept the reality of now.

  • The Hedgehog Concept: Only do things that overlap in the three circles:

    • You're passionate about it

    • You can be the best in the world at it

    • It drives your resource engine

    The resource engine is a combination of time (how well we attract contributors), money and brand (how well we create a community), drawn from an accompanying monograph for the social sectors.

  • Build a culture of discipline: Create a culture of self-disciplined people who are "fanatically consistent with the three circles." Bureaucracy arises to compensate for incompetence and poor discipline due to having the wrong people. If you've got the right people, you don't need the bureaucracy.

  • Technology accelerators: If a new technology fits into your Hedgehog Concept, become a pioneer. If not, settle for decent, or drop it altogether if you can.

  • The flywheel and the doom loop: Transforming from good to great is not quick. It's a flywheel, slowly building momentum. From outside, all people see is the breakthrough, but from inside there's a prior buildup. Merely good companies couldn't build momentum—they jumped around from focus to focus, never getting anywhere with any of them. You don't need to spend effort getting people behind your idea. Show them the results, and they'll follow you.