[[!tag personal]]
I've been happily unemployed for a while now. I went to New Zealand with my significant other, and we've been there for some months. Soon we'll be moving somewhere else. I've hacked a lot on Obnam, my backup application. I've taken some photographs. I've generally enjoyed life.
It's getting time to start thinking about making some money again. To kick that off, I wrote down some ideas on my dream job. They are a fantasy, of course—I don't expect to find anything that gives me everything in the list—but it's good to know what the fantasy is, so I can compare possible jobs against it.
My dream job
My dream job is to develop free software I use myself, either alone, or with co-workers with a good attitude towards work, or as part of a true community project (one where the direction of the project is not decided based on corporate interests).
I want to have some freedom in choosing each project, within the constraints of doing business.
I want to have a significant part in the project, and not be just another cog in the wheel. I need to be able to do large, sweeping changes to any part of the project, or its architecture. This may mean I should be on the project from the beginning, though the project may be part of a large one where I have less influence.
The project should be developed, from the start, using tools, technologies and processes that I like and am conviced work well, for example, using sensible languages, TDD, high test coverage, and DVCS.
At least one of schedule or scope should be flexible. There should be room in the schedule to occasionally stop and step back and look at the bigger picture, or to go out on a walk to think deep thoughts about what is going on.
The work should be challenging, and should teach me new things. It should let me build on existing knowledge and experience.
The job would involve me in just one project at a time. Multitasking between projects is so much less productive than concentrating on one project that it frustrates me to switch frequently.
Projects should be shortish, up to a few months. Larger projects should be broken down into shorter ones.
Work should be done at home, or in a quiet office with private rooms, or rooms for small teams.
There should be no NDAs, all development should be in public, and no copyright assignments should be required.
The employer should not use software patents at all.
Management should concentrate on providing a good working environment, and sufficient resources to do good work, and should not try to micro-manage me or my team.
I should be compensated reasonably well. I should have at least five weeks of vacation per year. If work requires me to be away from home during weekends, or travel on weekends, those days should count as work and be compensated in some way.
I would like my employer to send me to one or two interesting conferences each year, perhaps even to give presentations about my work. One of the conferences should be Debconf, the yearly Debian conference.
I must be able to other things in my free time, at least if they don't directly compete with what the employer has me do at work. This includes being a Debian developer, if I choose to do so.
Ways of earning money
The other thing I've been thinking about is ways of earning money. Here's a brief list:
- Get a traditional job.
- Do consulting jobs. I am bad at finding them, though. Some such jobs would be interesting, others not so much. Perhaps the ideal form of this would be to have a few companies hire me to do things like piuparts development, or other tool development for Debian or Ubuntu.
- Sell free software development in small units. For example, if there were a lot of people interested in Obnam, they could buy an hour's or day's worth of development at a time. This would let me work on things I'm most interested in, as long as they're popular.
- Set up an online service of some kind to generate revenue. Ads are passé, so it'd probably have to be a subscription based service.
There's more things, but those are at the top of my list right now.