Category Archives: Linux

Server rebuild – with Gentoo

I have an old machine I’ve been using as a server for the past few years. It serves my mail, CVS, MySQL; acts as a home webserver (for internal use and testing) and MoinMoin wiki. I built it mostly for fun, but I seem to be relying on it more and more.

I’m currently running Fedora Core 4 on this machine. It’s actually been running Fedora for over 2 years now and has been continuously upgraded since Core 1. Aside from power outages and moving to a different home, this machine has only been down to boot into a new kernel.

Since Fedora Core 4 is end of life I now have the option of upgrading yet again or switching distributions. I love Fedora on the desktop but I’d like something more stable (as in “doesn’t change much”) on this server as I just don’t feel like messing with it.

So here I will relate the process I went through to pick a new distro. Maybe someone will find it interesting.

The Victim

  • Processor       AMD K6-3, 400MHz
  • Motherboard  ASUS P5A Socket 7, circa 1998
  • RAM               384 megs PC 133
  • Hard Drive   Samsung 40 gig (jumpered to 32 gigs per BIOS limitations)

This system is crusty and old, but it works. This motherboard has been in near constant service since 1999. The original CPU fan died so I wedged an Athlon cooler in there. It barely ever gets above ambient temperature!

The Criteria

Here are the criteria I used, mostly in order of importance.

  1. Stable – don’t make me upgrade every 6 months. Updates more oriented to bug fixes and security.
  2. Easy – basically this means Red Hat based. I won’t have to learn anything new.
  3. Fast – optimized for i586 or preferably K6-3 would be a plus.
  4. Minimal – smallest install possible, with few packages installed by default.
  5. Apache 2 – I’m used to apache 2, and would prefer it over 1.3.
  6. Different – This conflicts with “Easy” above, but it would be nice to learn a non-Red Hat based distro if there are enough other incentives.
  7. Up-to-date – I don’t want bleeding edge, but I think the 2.6 kernel by default is reasonable.
  8. Big package selection – my requirements aren’t huge, but I’d like to do everything I want without having to go outside the package management system and standard repositories.
  9. Python 2.4 – MoinMoin likes the latest Python it can get, but this isn’t a huge factor.

The Distributions

I compiled my ratings in a spreadsheet. Each distro could get up to 1 point per category. I gave the top 2 categories – stability and ease – up to 2 points.

(Sorry about the crappy table. I blame WordPress.)

Distro Stabl Easy Fast Mini apache2 Diffrnt UTD Packgs Py2.4 Total
Gentoo

 

 

1

1

1

1

1

1

1

7

Arch

 

 

1

1

1

1

1

 

1

6

Slackware

2

 

1

1

 

1

 

 

1

6

CentOS

2

2

 

 

1

 

 

 

 

5

FC5

 

1

 

 

1

 

1

1

1

5

FC4

 

2

 

 

1

 

 

1

1

5

Ubuntu

 

 

 

 

1

1

1

1

1

5

Debian

2

 

 

 

 

1

 

1

 

4

Gentoo
As you may have guessed, this is the one I chose. I’ve tried Gentoo before and always got fed up. This time I’m going to go for it. It loses on my 2 top categories – stability and ease – but the other pluses won out. It can be optimized for my CPU. It is as minimal as I want. It has the packages I want in versions I want. It’s definitely different and will teach me some new stuff. It has as big a package selection as I could want. Since I can control everything I can overcome the stability issue as well with a little research. I think this shows one of the virtues of Gentoo: it can be bent to fit many niche applications.
Arch
The only point Arch looses to Gentoo is on package selection. I found the installation to be needlessly complex and the instructions unclear. It’s also i686 specific, which means it’s not for me.
Slackware
Slack is very stable, fast and minimal, but a bit too behind the times for me. I’ve been running 2.6 kernels for years, and would like a distro that has as well. I also like package management that involves dependency resolution. A computer can figure out what depends on what. I shouldn’t have to.
CentOS
This was initially my top choice. It would be easy to move to CentOS and keep all the familiar Red Hat goodness, but gain stability and long support cycles. In the end, though, a thirst for the new and the need for a fast, minimal distro won out.
Fedora Core 5
It would also be easy to do an upgrade or an install of the latest Fedora on this machine. I know I’d be doing it again in 6 months, though. A ‘minimal’ install these days is getting to be about 1 gig, which is a bit much. I’m running into some SELinux problems on my other FC5 machine (the way I have MoinMoin configured it does some things that are unusual and insecure ). I know how to write my own policy to get around the problems, but I’m tired of dealing with it. FC6 is supposed to have easier SELinux tools. For a home server I don’t need the security.
Fedora Core 4
It’s end of life. I could get updates through the Fedora Legacy project, but I’m already running into packages that are older than I’d like (like MoinMoin and MySQL). There’s also the hunger for something new which is really the reason I thought about changing in the first place.
Ubuntu
I’d really like to run Ubuntu, but I don’t think it’s to be. They’ve got a server version now, but it’s not attractive enough in enough areas to make me leave Red Hat land. People who like Debian love Ubuntu, but I’m not one of them. I may put it on a desktop some day but I’m not going with another rapid-release-cycle distro on the server.
Debian
I’m just not a Debian person, it seems. It’s known for being stable, but more stable than I can deal with. Even ‘Etch,’ the ‘testing’ version is a bit crusty for me. I’d have to lose some newer packages I really want (although it seems to be an excellent platform for MoinMoin). I’ve also seen Debian stable servers crash more than I like.

Conclusion

So the numbers have spoken, and I’m going to install Gentoo on my server. I’m actually kind of excited about it. I’ve experimented here and there and run nearly every major distro (including some BSDs). This is the first time I’ve decided to run a non Red Hat based OS on a vital machine for any length of time. I’ll post again once the install is done.

More on Writing Documentation

Jono has been writing lately about open source communities and how to make it easier for people to get involved. While I could quibble with the details, I agree with the principle. People contributing to open source projects shouldn’t have to deal with technical details. Art guys should know the intricacies of Inkscape, but not SVN and bugzilla. Coders should (just) deal with code, documentation people should deal with documentation.

From the documentation perspective, I don’t agree that documenters don’t need to know markup languages.

To me, writing documentation is a form of teaching. A documenter’s job is to instruct the user in how to do what they need to do. Documentation should make things clear, spur ideas, and empower. It should give the reader mastery of the software and enable them to integrate it into their brain as a tool. Documentation should do all this as quickly and clearly as possible.

To meet this end, document writers need to be as structured and organized as possible. We need a high level overview of the problem so we can break it down for the reader. We think in terms of the hierarchy and flow of a document. Just as an essay needs to have an opening paragraph, supporting points and a conclusion, a User’s Manaul needs a certain sructure that follows the way a user will look for help.

So a markup language of some type is essential. Be it HTML, wiki markup or DocBook/XML, we need to be able to structure documents. The problem is most markup languages suck. HTML works great for web pages but it makes sloppy documentation. Wiki markup is quick and easy, but it’s too limited. DocBook/XML forces the writer to use good structure and hierarchy, and takes care of a lot of the tiresome details (like table of contents, and nearly all presentation markup) but the learning curve is pretty rough. It is needlessly complex for most things.

The solution?

We need more accessible tools. For documentation we need a more usable subset of DocBook, or maybe a whole new XML application designed for software documentation. I hear something like this is in the works. We also need editors that can handle whatever format we settle on. I’ve tried various editors and in the end I’m more productive editing in Vim and doing all the markup manually.

If we’re actually going to solve these problems we need to do away with the edit-patch-submit cycle altogether. What we’re doing in Jokosher is a good example. We did almost all the documentation for 0.1 on the wiki, then generated our final docs from that. It still required a lot of manual work to get from wiki output to the final HTML, though. Now that we’re moving to DocBook/XML, the situation is worse. We’re building a new site that will support editing HTML and DocBook directly on the wiki, but the tools are still not there yet. We will need to modify existing tools to get what we want.

We need an infrastructure that supports contribution, but who builds this infrastructure? I’ve seen good projects suffer because there are people who would love to contribute, but just can’t get their foot in the door. Again, the Jokosher project has solved some of these problems. We’ve taken the time to write “Getting Involved” documents to give people step by step instructions to contribute. We’ve got forums and wikis and clear documentation for developers. All this stuff takes time away from development, but building a community that allows people to get involved means a better project in the long run.

Writing Jokosher Documentation

I’ve been working on writing documentation and organizing a documentation team for Jokosher these past few weeks. Jokosher is truly a “scratch your own itch” type of project, conceived to fill a need for a simple, usable, intuitive audio editor on Linux. It is by musicians, for musicians (and other audio artists).

Open source projects are always in need of more help, and documentation is usually lacking or lags behind the software. I thought I’d say a bit from a documenter’s standpoint on why I got involved with Jokosher in a world full of projects needing docs help.

  • They made me care – I know the people behind Jokosher and I trust them. I heard about what they were doing and thought it was going somewhere. So many projects start and go nowhere. From an idea over a year ago to the first commits in February, Jokosher has come together and generated excitement. In a few days it will make its first release. It’s V0.1, but it works. It’s a project I can care about that fills a real need. There’s a community around it that shares a vision to do something different and better.
  • They made it easy – I’ve tried to contribute to an open source project before where I had to fight just to help people. Questions did’t get answered, information on getting involved wasn’t easily available, bug reports sat forever without action. I submitted a patch and didn’t hear anything for weeks. With Jokosher, there’s a good mailing list, the website has up to date info on getting involved, and the developer’s site has lots of information. For the most part, information on what needs done and how the project is moving forward is easy to discover.
  • They rewarded me – Once I started writing and submitted a patch for the User’s Guide, I got an E-mail saying thanks immediately. For an hour’s work I got a thank you. I never failed to feel appreciated. When I dropped into the IRC channel (#jokosher on freenode), people said Hi and where quick to answer questions. Jono even mentioned me in his blog and gave me credit for my work. My name is now in the credits in the Jokosher Help menu. The other project I worked on included my work, but I was never given credit anywhere.
  • They lowered the bar – The documentation for Jokosher was opened up for editing on the Wiki. The documentation itself is all in HTML, which is far easier to deal with then Docbook/XML. That’s not to say we won’t go to Docbook eventually, but to get a project off the ground, making it easy makes a difference. If I had to sit down and edit Docbook on my home system, validate it, then submit a patch I don’t know if I would have bothered. With the docs on a Wiki available on the internet, I could work anywhere at anytime.
  • They gave up control – Having documentation that can be edited by anybody is a leap of faith. Sure, with a Wiki you can roll back changes, but you still have to give up an element of control. What if someone writes reams and it’s just horrid? My first patch was committed within hours. No one stood over my shoulder and told me what to do, they just let me roll. I got helpful feedback, but I never felt like I was a puppet just doing someone else’s work.
  • They challenged me – I have a friend who studies leadership in a small to mid-size group context. He told me there are a small but significant (~15% of population) number of people with leadership ability who will show up a couple times and if you don’t challenge them they’ll go elsewhere. Some people need something to do or they won’t stick around. I think a lot of geeks are this way. Once I started submitting work, Jono sent an E-mail thanking me and asking me if I could work on revamping the documentation pages on the Wiki and fleshing out a “Getting Involved” page. It was a bit more than I had planned on, but it was the push I needed to move to a deeper level of commitment. To me, that’s what team building is about. That’s what makes community – getting people involved and committed to the project so it means something to them.