Once, We Were Makers

I saw an article on Wired today: The Lost Tribes of RadioShack. It is well worth the read even if you’re not into electronics. A key quote:

[H]is shop is a lone outpost; in a single generation, the American who built, repaired, and tinkered with technology has evolved into an entirely new species: the American who prefers to slip that technology out of his pocket and show off its killer apps. Once, we were makers. Now most of us are users.

I remember as a kid eagerly awaiting each year’s new RadioShack catalog. I’d read them pretty much cover to cover for fun. And who wouldn’t? The catalogs had fun things like radios, telephone gadgets, calculators, tape recorders, electronic “lab kits”, books, components, LEDs… I loved the catalogs and loved the store.

My parents bought me a electronic kit (if memory serves 20 years later, it’s the “deluxe 160-project electronic kit” from page 156 of the 1988 catalog, though it may have been purchased a different year). I had endless fun with that thing. It had resistors, diode, capacitors, oscillator, speaker, LED, relay, etc — plenty to make a bunch of kid-friendly projects.

Just looking at the catalog makes me excited even today. On the next page from the kit I had is a $5 crystal radio kit which needs no power source — “Solderless. With earphone, instructions, theory.” On page 28 there was a revolving red light, and some microcassette recorders on p. 36 (I had one of those for awhile).

I had enthusiasm for building and figuring out things for a long time. My dad let me take apart an old lawn mower for fun once — I’m sure he knew ahead of time it would never be back together. One of his friends from work built homemade contraptions out of things like an old vacuum cleaner (attach a cardboard tube to the exhaust and you get a great tennis ball shooter). And there was always all sorts of fun junk to discover up in the barn.

I eventually shifted to a different sort of “making things”: programming. It has kept me busy for quite a number of years.

But the Wired article has a point. RadioShack is struggling. Many people have no interest in making or fixing things anymore. The best-selling smartphone in the world comes sealed in a metal case where not even the battery can be replaced, the software is dictated by a company in California, and good luck trying to program for it without signing your life away first. A far cry from the first computer I used, a TRS-80 Color Computer II, bought, yes, at RadioShack. Turn it on, and in a few seconds you get a BASIC prompt. Can’t really use it without programming. Being able to read its manual was an early motivation for me to work at learning to read.

It is sad that so many devices can’t be worked on anymore, and that so many people don’t care. It is difficult for me to give Jacob (and later, Oliver) the sort of experience I had as a child. Companies would love to sell us $50 DVD sets, $300 “educational” game systems, $40 educational games, and any number of $30 plastic toys (some of which we have and the boys enjoy).

I’d rather give him a $10 bag of resistors, capacitors, wire, battery holders, LEDs, and a book, and see what he can come up with (when he’s a bit older, of course). And, in fact, he and I built his first computer together. We installed the ultimate in operating systems for tinkering: Linux.

This all brings me back to RadioShack. I’ve been working on ham radio lately, with an eye to that being a project for Jacob (age 3.5), Oliver (just turned 1), and me to enjoy in the future. I needed some cable, and had been told by many people to visit the RadioShack in Derby, KS. It’s like the one mentioned in the Wired article: huge, selling everything from washing machines to bulk cable, except this one specializes in amateur radio.

I asked Jacob if he would like to come with me to a radio store. “Dad, I would LOVE that!” He brought his little semi-broken walkie-talkies with him to use during the hour drive there. At one point, he was concerned that a radio store is like a library and he might have to leave them on a shelf. I assured him he could keep them.

We got to the RadioShack and he loved it. He couldn’t even really contain his excitement. He ran back and forth along the bright green stripe running down the middle of the carpet. He excitedly watched them measure out 60ft of RG-8 coax for me. He pushed buttons on the demo clothes dryer, looked at all the antennas, and just had a great time.

And he’s been interested in my radio, too. When I was talking to somebody on it the other day, he said, “I think he is at the radio store. He is having fun there.” Right now, everybody I talk to on the radio is at the radio store to him. Jacob loves the fact that the backlight on my FT-857D can change colors, and often comes into the office just so I can put it into setup mode and let him spin the big wheel to change the colors. He enjoys opening boxes of components, and came out to help (and run around) while I suspended a dipole from some trees last Friday.

I had told Jacob when we got to the store that “This radio store is called RadioShack.” He obviously took that to heart, because now if he hears me talking about “a radio store”, he will say, “Dad, actually it is radio SHACK.”

So I say thank you to the Derby RadioShack for keeping the magic of making things with your dad alive for another generation.

KD0MJT

Wow — tonight was thrilling. It’s hard to explain why, but it’s pretty exciting to have a radio setup that is all wrong in so many ways work well enough for me to sit in my kitchen in Kansas and talk to someone in Indianapolis using only two-way HF radios.

I recently passed my technician and general amateur radio exams. I’ve been talking to some very nice people locally on the 2m band, which permits local (say, 100-200mi radius) communication. It’s been fun, but Kansas is sparsely populated enough that sometimes there just isn’t any activity. At all.

Earlier this week, my Yaesu FT-857D and two antennas arrived. I tried it first on VHF, and had a nice chat with Kent (KB0RWI) a few miles away. But tonight was the big experiment.

I bought a 20m dipole antenna. This is basically a 30-foot-long wire, connected to a balun and a coax feed line in the middle. You’re supposed to put it at least 30 feet off the ground, and away from trees, houses, etc. You’re supposed to have a nice RF ground for your transmitter, power supply, antenna tuner, and all that stuff. You’re not supposed to just run the coax under that (until today, annoying) small hole in the seal under the kitchen storm door. You’re supposed to have to have the correct connectors on your coax, instead of soldering an RG-8 PL-259 onto some RG-8X because you’re new at this and didn’t realize that you need to buy an adapter.

And, I’m really pretty sure that you’re not supposed to have an aggressive outdoor cat — complete with a full set of claws and teeth — attack the coax RG-8X cable as it’s being pulled through the grass.

Fail to do any of these things, and the thing might not work well, or might not work at all, or for people that use old equipment, might burn out your radio or something.

So anyway I got out the ladder today, and I got the antenna maybe 10-15 feet in the air. I have three trees in a row with the perfect separation to hang each end and the center balun from. So while Jacob went around playing with water and trying out the ladder on occasion (with my help), I used some string to hang the antenna. In the trees, not far from them. Near the house. Not 30ft off the ground.

I strung the feed line into the house, set up all my equipment on our kitchen table, flipped the switch. And — nothing. Just the occasional familiar whine while tuning. I tried the 20m band, then the 40m, then even 15, 12, and 10. No activity anywhere. So what was wrong?

I improvised some grounding — extracted the ground conductor from an old strip of AC house wiring, shoved it into the ground, and grounded the tuner and transmitter. No difference.

I unplugged the coax, and tested it with my multimeter. It tested out OK.

I plugged it back in and wiggled the connector. Turns out the connector isn’t in great shape, but it had been working.

I tried transmitting. The tuner made a whole bunch of alarming-sounding clicking noises (sounded like a symphony of relays), indicated SWR over 3, and the ammeter on my power supply went a bit nuts. Later I realized that I just wasn’t giving the tuner enough time to tune up; with a few more seconds, it tuned up just fine on every frequency. (So yes, it was supposed to do that.)

And, it turns out, that all I needed to do was wait a little while longer to hear some signals. Pretty soon I was finding stuff all over the 40m band. I heard a discussion from Chicago, another from Oklahoma City, some apparent broadcasters from Africa.

I decided I would try and transmit. I was hearing one side of a discussion very clearly and decided I would wait for an opportunity to try to contact that person. I heard his callsign, K9RM. I looked it up, and realized he was near Indianapolis, where I had lived for awhile.

Eventually he invited a station trying to get in to participate. And:

“KD0MJT” (I announced my callsign, as a request to join the conversation)

He said he only made out the 0, but eventually we were talking quite well. It was a brief conversation, but interesting; the person he was talking to was in Portland, and couldn’t hear me (and I could barely hear him, but not loud enough to make out).

That with no phone lines, no Internet provider needed, etc. And with a rig that is far from being at peak efficiency. I had no idea what to expect tonight — and was surprised that just tossing an antenna up in a tree let me talk to someone in Indiana. That’s 650 miles away. I wonder what I’ll be able to do once I get things done the right way.

This hobby is going to be fun. Many thanks to Mike_W for equipment suggestions, Kent and Dan from Newton ARC for encouragement and coming out to the house to test things, Kent for being my first ham radio contact ever (on 2m while I was using an old 1981 radio), Chuck (K9RM) for taking a few minutes to be my first HF contact, and my dad for helping plan out exterior wall penetration methods that will eliminate this coax under the kitchen door and lack of grounding business.

Jacob, by the way, still loves his radios and is starting to take an interest in mine. It wouldn’t shock me at all of he’s one of these kids that gets his technician license in the 2nd grade or something. I think he and I can do this together for a long time.

Update 11/1/2010: My callsign has changed to KR0L.

Radios

Those of you that follow me on twitter or identi.ca know that I’ve been working on my amateur radio license. This started a few weeks ago when Jacob got excited about radios, and must have infected me too.

I’ve been studying and learning a bit. I had called a local ham (amateur radio operator) I know from church. He gave me one of his apparently newer radios, a 1981 2m Icom IC-22U 10W unit. That was great and got me all the more interested. Then last Friday, a couple of local hams came over to check out that radio and see what repeaters I could hit with it. They discovered a handheld 5W unit could hit at least one local repeater, and this 10W unit could too. One of them also had an HF rig in his pickup, and it was fun to stand out in the driveway and listen to conversations in Michigan and Utah. That evening erased any doubt in my mind about whether or not I would become a ham — and it’s a bit hard to believe it was only a week ago.

I had been studying for the Technician-class amateur radio license, the lowest of three levels of licensing. One of the guys that came over Friday gave me a book to study for the General license, the intermediate level. It warned me to allow a month to prepare, and here I was planning to take the exams Tuesday. I picked it up Sunday, so really got 2 days of studying in.

Tuesday I drove to Independence, KS, about 2.5 hours away for the exams. I went so far primarily because the Wichita exams weren’t going to be offered until mid-August and I didn’t want to wait that long. I found a fun group of people in Independence. I hadn’t expected to have fun taking exams, but really, I did. We visited before the exams, and they wanted to know where I was from, of course.

When it was time to take the exams, I guess I sort of surprised them by already having my FRN (FCC registration number) and photo copies of my IDs with me. One of them said, “You’re going to have no trouble with this, are you?” I took the Technician exam, checked my work carefully, and turned it in to be graded. They checked it twice and had two people looking over it before they announced I passed with all 35 questions correct.

I should note at this point that I was the only person taking the exams that night.

Anyhow, on to the General exam. Same drill. It was harder, of course, and I turned it in to be graded. One of them looked at the test, looked at me, put on a grave face and said, “Uh oh, not one right.” I knew he was joking… and they announced I passed THAT one with 100% correct as well. I hadn’t expected that, and neither had they. That was what I planned to do, but they said that nobody had ever walked in, taken two tests, and had a score like that — and pretty much insisted I try taking the Amateur Extra exam as well. I said I haven’t studied for it at all and really doubt I could pass, but eventually went ahead and took that one too. I didn’t pass, but I don’t think they’d have wanted to let me leave without trying.

After the paperwork was done, they invited me to hang around and chat with their group that was meeting next door for a bit. I did, and drove home.

Then was the frustrating part of the week: waiting for my license. I can’t transmit until the FCC issues my license, even though I had passed the exam. My handheld radio arrived later in the week, and of course I still couldn’t do much with it. Finally the FCC posted my license late yesterday so I was able to talk to people. It’s been fun and I look forward to doing more. I was able to talk to people 55 miles away while driving, and with suitable equipment at home should be able to do much more than that.

Several of the people I talked to were offering me tips. I’ve never seen a group of people so eager to help out someone new. It’s an amazing community and I think Jacob and Oliver will enjoy it one day too.

Hardware/Machine Reporting Tools

We have a tool at work, Kaseya, for our Windows machines. It handles updates, but also can report back information gathered from them: OS version, patches installed, time since last checkin, last user logged in, user most frequently logged in, plus details about hardware: RAM, disk size, serial number, etc. I’m looking for a tool that can do this on Linux as well.

Of course, we could roll our own; all the above is readily cleaned from standard commands plus examining /proc and /sys. But before we roll our own, we want to be sure there’s nothing else out there worth using.

Down the road, we might also like it to grow in another direction: centralized configuration, storing links between machines and people in a database, and generating DNS, DHCP, etc. configurations out of it. Whether that would be the same tool as this is another question.

There are, of course, expensive and overkilling well-known commercial packages to do this. We’re after something simple that gets the job done.

Any ideas?

Bicycling in Rain and Mud

I recently posted here about bicycling in the mud and rain, and got some good suggestions (and also on the icebike mailing list). I eventually decided to replace my current bike (Trek 7.3FX) with a Specialized Tricross Sport Triple. As I mentioned in the bike store, “it seems odd to spend this kind of money on a bike only to ride it through mud and sand.” Another customer overheard and said, “It sure does — but don’t worry, it’ll be fine!”

But on the other hand, I figure that it is probably realistic for me to ride it around 3600 miles (5793 km) per year. At that rate, it will pay for itself in reduced car costs in about a year.

I picked it up last Friday, and on Saturday moved my accessories (headlight mount, tail light, water bottle cage, etc.) to it. The Bontrager Back Rack I from the 7.3FX did not fit well, so I ordered the Specialized Tricross Rack Set, which did fit well (I’m not using the front rack though).

This has been a wet week. I rode Thursday when it had stopped raining about 20 minutes before I left in the morning, and we got more rain in the afternoon. Although both the Tricross and the 7.3FX have 700x32C tires, even the factory tires on the Tricross performed far better in mud than the 7.3FX ever did — and I can still go much more wide if I feel it necessary. Actually, somewhat to my surprise, I didn’t really have a problem with kicking up mud; my enemy turned out to be kicking up sand. It didn’t really damage anything, and I had to try not to cringe as I saw the sand hitting the chain, etc. I rinse it off when I get to my destination, and clean/lubricate the chain frequently in these conditions.

I haven’t yet been on the bike during an active rain, but from what I’ve done so far, I think it will be fine. So at this point, there’s very little that will prevent me from riding.

Time to learn a new language

I have something of an informal goal of learning a new programming language every few years. It’s not so much a goal as it is something of a discomfort. There are so many programming languages out there, with so many niches and approaches to problems, that I get uncomfortable with my lack of knowledge of some of them after awhile. This tends to happen every few years.

The last major language I learned was Haskell, which I started working with in 2004. I still enjoy Haskell and don’t see anything displacing it as my primary day-to-day workhorse.

Yet there are some languages that I’d like to learn. I have an interest in cross-platform languages; one of my few annoyances with Haskell is that it can’t (at least with production quality) be compiled into something like Java bytecode or something else that isn’t architecture-dependent. I have long had a soft spot for functional languages. I haven’t had such a soft spot for static type checking, but Haskell’s type inference changed that for me. Also I have an interest in writing Android apps, which means some sort of Java tie-in would be needed.

Here are my current candidates:

  • JavaScript. I have never learned the language but dislike it intensely based on everything I have learned about it (especially the diverging standards of implementation). Nevertheless, there are certain obvious reasons to try it — the fact that most computers and mobile phones can run it out of the box is an important one.
  • Scheme. Of somewhat less interest since I learned Common Lisp quite awhile back. I’m probably pretty rusty at it, but I’m not sure Scheme would offer me anything novel that I can’t find in Haskell — except for the ability to compile to JVM bytecode.
  • Lua — it sounds interesting, but I’m not sure if it’s general-purpose enough to merit long-term interest.
  • Scala sounds interesting — a OOP and FP language that compiles to JVM bytecode.
  • Smalltalk. Seems sad I’ve never learned this one.
  • There are some amazing webapps written using Cappuccino. The Github issue interface is where I hear about this one.
  • Eclipse. I guess it’s mostly not a programming language but an IDE, but then there’s some libraries (RCP?) or something with it — so to be honest, I don’t know what it is. Some people seem very excited about it. I tried it once, couldn’t figure out how to just open a file and start editing already. Made me feel like I was working for Initech and wouldn’t get to actually compile something until my TPS coversheets were in order. Dunno, maybe it’s not that bad, but I never really understood the appeal of something other than emacs/vi+make.
  • A Haskell web infrastructure such as HSP or hApps. Not a new language, but might as well be…

Of some particular interest to me is that Haskell has interpreters for Scheme, Lua, and JavaScript as well as code generators for some of these languages (though not generic Haskell-to-foo compilers).

Languages not in the running because I already know them include: OCaml, POSIX shell, Python, Perl, Java, C, C++, Pascal, BASIC, Common Lisp, Prolog, SQL. Languages I have no interest in learning right now include Ruby (not different enough from what I already know plus bad experiences with it), any assembly, anything steeped in the Microsoft monoculture (C#, VB, etc.), or anything that is hard to work with outside of an Emacs or vim environment. (If your language requires or strongly encourages me to use your IDE or proprietary compiler, I’m not interested — that means you, flash.)

Brief Reivews of Languages I Have Used

To give you a bit of an idea of where I’m coming from:

  • C: Not much to say there. I think its pros and cons are well-known. I consider it to be too unwieldy for general-purpose use these days, though find myself writing code in it every few years for some reason or other.
  • Perl: The first major interpreted language I learned. Stopped using it entirely after learning Python (didn’t see any advantage of Perl over Python, and plenty of disadvantages.)
  • Python: Used to really like it. Both the language and I have changed. It is no longer the “clean” language it was in the 1.5 days. Too many lists-that-aren’t-lists, __underscorethings__, etc. Still cleaner than Perl. It didn’t scale up to large projects well, and the interpreted dynamic nature left me not all that happy to use it for some tasks. Haven’t looked at Python 3, but also it probably isn’t ready for prime time yet anyhow.
  • Java: Better than C++ for me. Cross-platform bytecode features. That’s about all that I have to say about it that’s kind. The world’s biggest source of carpal tunnel referrals in my book. Mysteriously manages to have web apps that require 2GB of RAM just to load. Dunno where that came from; Apache with PHP and mod_python takes less than 100M.
  • Haskell: A pretty stellar mix of a lot of nice features, type inference being one of the very nice ones in my book. My language of choice for almost all tasks. Laziness can be hard for even experienced Haskellers to understand at times, and the libraries are sometimes in a bit of flux (which should calm down soon). Still a very interesting language and, in fact, a decent candidate for my time as there is some about it I’ve never picked up, including some modules and web toolkits.
  • OCaml: Tried it, eventually discarded it. An I/O library that makes you go through all sorts of contortions to be able to open a file read/write isn’t cool in my book.

Bicycling Update

I’ve been bicycling to work for awhile now. It’s become pretty much routine for dry days. I can reliably ride the 10 miles to work in less than an hour, even with heavy winds.

My biggest enemy right now: rain. My first few miles are on gravel and sand roads, which aren’t maintained to the highest of standards. When it rains, there will be mud. I ride a Trek 7.3FX, which I bought with the idea of just riding when it’s dry. It works quite well for that. But its slick tires don’t work so well in mud. Plus our mud is sticky, and the tires pick it up, then deposit it on the frame that goes around the wheel and the brake arm. So I have a mess to clean up.

My current dilemma is: do I buy a second bike for use when it’s wet, or there’s a chance of rain? My 7.3FX can’t use tires that are very wide, and a different bike of course could. There would be expense involved, obviously, but I would really like to be able to ride more often than I can now. Winter was pretty damp here and I didn’t get to ride much at all over the winter months. Or, would different tires plus fenders do the trick on the 7.3FX? (I’m thinking not.)

If I do get a different bike, then the question would be whether to sell the 7.3FX. I really like that bike, and imagine it would be faster on the 7 miles or so of paved roads that I ride every day. Perhaps I’d keep it as a fair weather or long-distance bike.

I plan to visit the bike shop tonight and see what my options are.

Some More Gopher Data

Yesterday, I invited you to download a piece of Internet history. Today I have unearthed a bit more data to add to it.

There is a new torrent with 1.5GB more data (3GB uncompressed). This includes the FTP site from boombox.micro.umn.edu/pub/gopher, which was a large collection of Gopher client and server software. Also included was ftp.unicom.com/pub/gn-tools, the old GN server, and wiretap.area.com. This last site was mirrorable via FTP, and included the UMN Gopherd .cap and .Links files, so it can be served up via PyGopherd. The full contents are available in my post to the Gopher mailing list.

Incidentally, thank you to everyone that has helped seed, download, store, host, and otherwise preserve the 2007 archive. It is much appreciated. I have contacted several institutions recommended to me in comments or emails to try to arrange a stable long-term home for the data.

Enjoy.

Update: This torrent is now available elsewhere; see this post for the most current location.

Download A Piece of Internet History

Back in the early 1990s, before there was a World Wide Web, there was the Internet Gopher. It was a distributed information system in the same sense as the web, but didn’t use hypertext and was text-based. Gopher was popular back then, as it made it easy to hop from one server to the next in a way that FTP didn’t.

Gopher has hung on over the years, and is still clinging to life in a way. Back in 2007, I was disturbed at the number of old famous Gopher servers that had disappeared off the Internet without a trace. Some of these used to be known by most users of the Internet in the early 90s. To my knowledge, no archive of this data existed. Nobody like archive.org had ever attempted to save Gopherspace.

So I decided I would. I wrote Gopherbot, a spidering archiver for Gopherspace. I ran it in June 2007, and saved off all the documents and sites it could find. That saved 40GB of data, or about 780,000 documents. Since that time, more servers have died. To my knowledge, this is the only comprehensive archive there is of what Gopherspace was like. (Another person is working on a new 2010 archive run, which I’m guessing will find some new documents but turn up fewer overall than 2007 did.)

When this was done, I compressed the archive with tar and bzip2 and split it out to 4 DVDs and mailed copies to a few people in the Gopher community.

Recently, we’ve noted that hard disk failures have hobbled a few actually maintained Gopher sites, so I read this archive back in and posted it on BitTorrent. If you’d like to own a piece of Internet history, download the torrent file and go to town (and please stick around to seed if you can). This is 15GB compressed, and also includes a rare video interview with two of the founders of Gopher.

There are some plans to potentially host this archive publicly in the manner of archive.org; we’ll have to wait and see if anything comes of it.

Finally, I have tried to find a place willing to be a permanent host of this data, and to date have struck out. If anybody knows of such a place, please get in touch. I regret that so many Gopher sites disappeared before 2007, but life is what it is, and this is the best snapshot of the old Gopherspace that I’m aware of and would like to make sure that this piece of history is preserved.

Update: The torrents are now permaseeded at ibiblio.org. See the 2007 archive and the 2006 mirror collection.

Update: The ibiblio mirror is now down, but you can find them on archive.org. See the 2007 archive and the 2006 mirror collection.

Moral obligations of Free Software authors?

I’ve got a bit of a problem.

I enjoy writing software. I often write software to solve some sort of problem that I’ve had. Usually virtually any code I write winds up in my git repositories, on the theory that it might be useful to someone else. Some of the code that I think might really be useful to people gets even better treatment. OfflineIMAP, for instance, has a very comprehensive manpage, heavily commented example config file, wiki, mailing list, public bug tracker, etc. Most of these I did the majority of the work to create, but OfflineIMAP does occasionally receive code and documentation contributions from others.

Now here’s my dilemma. For my purposes, OfflineIMAP is, well, finished. It does everything I ever wanted it to do, and does it better than I ever expected it would. There are some people that would like it to do other things; for instance, optimize performance for IMAP folders with 100,000 messages in them, do UTF-8 folder name translation, and retry a sync if a connection is lost rather than crash (OfflineIMAP was designed to crash gracefully and be automated, so this has never bothered me.)

None of these are features that I care about, and I don’t have much time to devote to OfflineIMAP these days. It is not an interesting problem to me anymore as, well, I’ve solved it already.

Yet I’ll be honest and say I feel guilty about the bug reports that are stacking up in the OfflineIMAP bug tracking system. OfflineIMAP is used by people that have an expectation for improvement. My efforts to hand over maintainership of OfflineIMAP have failed (the people have gone AWOL shortly after agreeing to maintain it).

This problem is even more acute for hpodder, my command-line podcatcher. hpodder works great and is simple. But I no longer listen to podcasts. At all. (I blame my Kindle for that.) Therefore I no longer even use hpodder. Again, I feel guilty for not working on it; for instance, when language changes broke its UTF-8 support, I haven’t gone in to fix it. Neither has anybody else, for that matter.

This leads me to a dilemma. If I do nothing with my code but toss it on git.complete.org, few people will benefit from it. Most people need documentation, packages for their distribution, etc. git repos don’t tend to show up highly in search engines. So, although technically I’ve shared things with the world by putting them there, practically speaking I haven’t done people many favors.

On the other hand, if I go the whole “responsible maintainer” route, writing documentation, wiki, mailing list, Debian packages, etc., then I have the problem of, well, actual users who want actual support. I feel bad if I’m not in a position to give it to them. Many people seem to have the expectation that software is never “finished” and will continue to be improved. (Ah, if only my name were Knuth I might stand a chance to evade that one. But only a chance, given all the TeX spinoffs.) This expectation, in turn, reduces my enthusiasm for publishing my code online as Free Software. Because now I can’t just toss it up there and say “help yourselves”. Now I get angry emails about all the bug reports piling up. On the other hand, I also get occasional small contributions via my PayPal “tip jar”, which are awesome and motivating.

Despite my grumbling, I do continue to maintain OfflineIMAP, primarily as a patch reviewer these days. I take an aggressive stance on quality, and when I get patches that add features without documentation, I usually write documentation for them before committing them. If I have evidence that a patch hurts quality, I yank it (as I had to do with IDLE support, which was a great feature, but the patch caused all sorts of stability problems due to its requirement of imaplib2.py). For that reason, I suspect, forks haven’t taken off.

So what’s a person that writes niche software to do? OfflineIMAP isn’t at the level of popularity of something like Gnome, or even debhelper, and never will be; its userbase consists of people that think that IMAP support in $MUA isn’t good enough. hpodder is the somewhat small domain of console-loving podcast listeners.

What are your suggestions? Should I abolish the bug trackers and just go for simple? Is there something more I could be doing to make the community feel more empowered? Is simple posting on git.complete.org not as bad as I thought?