or: "Why I won't work for a social network."

I've had a lot of ideas involving social networking floating around in my head for the past few months. They were finally crystalized into a solid conclusion this week: I don't want to work for a social networking company. There are really two distinct but related problems with social networking companies, and combined they form a deal killer for me.

 

First: they are free. With the possible exception of dating sites, social networking services are free. They do everything in their power to get as many people to sign up as possible. Due to the network effect they really can't charge admission. It's not worth money to join the network until lots of other people are already on it. Combined with the economics of VC funding, the cost of joining is always driven to free. You should always be nervous when someone offers you something for free.

If a service is free then one of three things will happen. The service might charge in the future. This is a valid strategy but likely to piss off lots of current users. Next, the company could simply run out of money one day and shut down. Many great sites have simply died due to a lack of a viable business model. And finally, the site could remain free but make money doing something else; which, in the social networking world, means advertising.

Facebook doesn't charge you money because you aren't the customer. The advertisers who buy your eyeballs are the real customer. This creates an inherent conflict of interest. They serve the advertisers over the users. The users still matter somewhat since without users there would be nothing to sell, but there is a constant tension between the two. Still, this wouldn't be so bad if it weren't for the second problem: scarcity

Fundamentally social networks are selling the users' time, and time is the ultimate scarce resource. The only way for a social network to grow is by getting more users or getting more time out of their existing users. There are only twenty four hours in a day and only a certain number of people on the planet. Recent polls indicate that social networks are reaching saturation in developed nations. Most of the people who want to use a social network are already doing so, or will in the next year or two. Without new users social networks must maximize the time they get from each individual user. This is where things really start to get bad.

To further their growth Facebook has an incentive to optimize the number of ads you see per page, and the number of pages you see per day. They constantly look for ways to bring you back to the site and spend more time interacting with it. I call this the Zyngafication of content, after its most famous implementor. I stopped playing Cafe World when I ran the numbers and realized there is no strategy. You can't design a particular cafe or food item that will maximize profit. The most profitable food in the game was (as I recall) a 3 minute appetizer. The point values of foods are weighed to maximize the number of minutes you have to actually spend playing the game per day. Their incentive structure is designed to suck up as much of your time as possible.

Long term this can't be sustainable. As free services try to maximize their profit the number of ads per page will increase, and the number sneaky ways they get you to stay on the site longer will only grow. The user experience will suffer and eventually users will leave. What we need is a system that treats our most valuable resource, time, as something to be conserved instead of wasted. I suspect this is fundamentally incompatible with an advertising driven model. And I don't want to work for a company who's business model requires reducing the user experience.

So this brings up a fundamental question: Would you pay to use Facebook if it let you accomplish things more efficiently instead of less? What about photo sharing? Is there a viable model for paid social networks and services?

 

I've talked about the tablet takeover several times before on this blog. I still firmly believe my previous statement:
Ten years from now 90% of people will use something like a tablet or smartphone as their primary computing interface. And the remaining 10% will use a desktop OS on something called a workstation.
In fact, I now think I may have been too conservative. Five years is more likely. I've posted several times about this market but I haven't really talked about that other 10%. What will the workstation OS of the future look like? Who will use it? Why would they chose to use it over something like a tablet computer? What new features and apps will they have? This is the first post in a series where I will explore the future of the PC and desktop applications. Over the series I'll cover what I think the future will look like and then deep dive into particular technologies and interfaces that will be required. Don't worry, I haven't forgotten about tablets. I've got more to say about that coming up soon.

Workstations vs Tablets

First some definitions. I'm going to stop using the term PC or desktop because they are too ambiguous. I won't use creation vs consumption device because that introduces too many preconceived notions. I've settled on the term workstation and tablet. A workstation is something running a general purpose operating system on a laptop or desktop. In practice this means a future version of Windows, Mac OSX, or Linux. A tablet is a device running a non-general purpose operating system. It is probably a phone or tablet formfactor, but I expect netbooks to be coming soon as well. While there is clearly a lot of gray area between the two types of device key differences are an exposed file system, the ability to install any application, and a heavy focus on keyboard use. I'll talk about why these matter in a moment. In the long run these two types may have shared implementations (as the new Mac OS X Lion demonstrates) but they are still targeted at a different audience.  

Why and Who?

Who would actually use these workstations if tablets have become so advanced that they can do what 90% of people want, and with far less fuss? I think workstations are for the pro users, where by I mean pro for professional. These are people who use their devices directly to make money, use it for a significant amount of time per day (for work), and most importantly are willing to invest time and money on their devices to get the most out of them. They will be reasonable tech savvy but that doesn't mean they are super-nerds who can explore file systems and mess with printer drivers. There is work to be done, so the device needs to function perfectly and get out of the way. Who would these people be? First are programmers and webdevelopers, obviously, since they need to directly interact with files and use advanced text manipulation tools. Next I'd include people who use advanced content creation tools: 3D artists, architects and engineers, video editors, technical authors. Anyone who works on large documents / structures which have very sophisticated UI needs. I could also see this expanding to business and finance, medical, and engineering fields; since all of these people process large amounts of data. The key to all of these types of people is their need to create, process, and distribute large amounts of data in very sophisticated ways. They need interfaces that are both wide and deep. They are the knowledge workers, and will pay a premium for a device that lets them do what they do. They have a willingness to use a deep interface which requires time to learn; provided they get value proportional to their investment. That last point is probably the most distinguishing feature. There is a subset of users who need professional interfaces and will take the time to learn them, but they also don't want to waste their time because it is valuable. They will pay for good stuff, but will dump you if you are too much of a hassle. These are the knowledge workers.

What do they need?

How could we design software for the workstation? We need to focus on a core philosophy. The list below is in no ways complete so I'd love to get your feedback.
  • Scalability
  • Efficiency
  • Reliability
  • Customization
Scalability means the software and the interface scales. iMovie is a great way to learn to edit video, but it doesn't scale with the task. You hit a limit very quickly; both in terms of what types of things you can do with it and the sheer amount of media it can handle. iMovie will grind to a halt if you try to edit 100 hours of footage down to a 2 hour movie, and you'll be very frustrated with the interface. iMovie doesn't scale. Final Cut Pro does. While it has a bit of a learning curve you can do almost anything with it. Other software I'd put in this category include: IDEs (Eclipse, IntelliJ, NetBeans, etc.), Maya (3D modeler) and AutoCad. I'm sure there are more examples in other industries. Interesting I don't think there is a professional app in the text manipulation industry yet (MS Word that doesn't suck) so perhaps there is an opening for new software there. Efficiency does not refer to CPU or memory efficiency. A modern computer has ample supply (though battery life could always be longer). I'm referring to the most precious commidity of all: the human's time. Someone who uses a workstaion expects their software to make them work faster and easier. Anything which automates a task or reduces conginitive load is a very good thing. Never waste a human's time. This also applies to interaction design. Why do I have to tell my program to save open files when I quit? It's much better to just auto save everything and restore it when I return. This reduces the time I have to spend thinking about it, so I can focus on getting my work done. Efficiency also includes shortcuts, automation tools, and filters. Anything to let me work faster. Reliability it goes without saying that computers must be reliable. They must do their work properly, never slow down and never lose data. This is even more important for the knowledge worker since work time and usually money are at stake. Fortunately PCs have made great strides here, and Mac OSX Lion has some interesting new features to make this happen. This category is mostly outside of the realm of user interaction design, however, so I won't say much more about it. Customization is perhaps the most important of the four. Anyone who uses a tool for a long period of time makes it their own by customizing it. This is perhaps the most defining feature of being a human. We integrate tools into our mental system. We modify our tools to suit our needs and provide us a competitive advantage. The great painters did not use stock brushes. They either made their own or modified a stock brush to have the exact shape and flow they wanted. Many great programmers have their own specific set of dogeared tech books and directories full of code snippets to reuse. We customize our keyboard shortcuts, put files in particular places, pin browser tabs, create bookmarks, switch wallpapers and litter our (physical) desktops with pencil holders and sticky pads. A customized computer is a computer well used and loved by it's owner. A stock computer is a computer never used.

Next Steps

I've gone on long enough for today. In the next post I'll cover some kinds of interaction that will meet the needs of the knowledge worker, and show some existing examples. In the meantime let me leave you with a few ideas to ponder:
  • IDEs are some of the most sophisticated applications available thanks to highly advanced UIs (code completion, class generation, syntax highlighting), heavy integration with other tools (put a web server *inside* of your IDE?), and yet are almost all completely free.
  • Only nerds complain that OpenID and OAuth suck for desktop applications. Why?
  • File systems let you track files, not documents, and yet documents are usually what we care about. Can we do better?
  • iTunes might be the most widely used pro app in the world, even if it's recently jumped the shark.
 

I've heard a lot of noise recently about these new fangled smartphones and tablets not replacing 'real computers', especially since the announcement of many new tablet products, including the HP TouchPad. That they are just expensive FaceBook machines. I've also heard people say that there's no room in the market for more devices: iOS and Android will take up the market and leave nothing for anyone else. It'll be just like the PC wars again!

Well... no. We definitely are going to see a huge shift in the industry over the next couple of years, but there will not be just one or two OSes controlling the market. And laptops won't be obliterated by tablets any more than TV destroyed the movies and radio. We won't see Mac vs PC again, or desktops vs Apple IIs. 2014 won't be like 1984.

First a disclaimer. These are my opinions, not the opinions of my team or employer. I work in Developer Relations. I have no knowledge of long term HP strategy, nor do I have any influence on it. This is simply the ramblings of an long time computing observer.

Tablets are no substitute for 'real' computers

Let's tackle these issues separately. First the claims: 'tablets suck for real work', or 'I would never use one. They are too limiting', or 'They are only for content consumption'. What are we talking about?

By tablet computers I mean things like the TouchPad or the iPad. These are devices which run a non-general purpose OS. There is no exposed filesystem. Apps are sandboxed and safe. A PC is a desktop or laptop running a general purpose OS like Windows, Mac OSX, or full Linux distros. Regardless of the form factor (touch vs keyboard), these are fundamentally different kinds of devices. Now the claims:

Tablets are too limited compared to a real computer. Yes the current generation of hardware is limiting, but it's going to get better; and fast. My top of the line computer less than 10 years ago had a 400mhz processor with 64MB of RAM, no GPU, and 8 GB of slow disk storage. Pretty much all tablet computers far exceed this already, and will soon support printing, directly controlling hardware in your house, and be first class citizens of the network (assuming Apple ever lets you jettison iTunes from your 'real' computer). They will all get better, and quickly. Especially when there is competition.

Tablets suck for real work: Yes, they are primarily designed for content consumption and tasks that require typing a paragraph or less. But guess what: that's a lot of stuff. In fact that's what 90% of people do 90% of the time on their computers. Most people don't write more than a paragraph at a time on their real computers. Most people surf the web, check Facebook, place games, pay their bills, and write a few short emails. A tablet device that can do 90% of what they need with less fuss and less cost is a big deal. A really big deal. Half of people could never learn to drive before the automatic transmission was invented. Yes, it's that big of a deal.

'I would never use one. They are too limiting'. That's very true. If you get nothing else from this essay, I hope you remember one thing:

They aren't built for you!

These things are built for the 90% of people who don't need everything a full PC does. By definition, if you are reading this blog, then these things aren't built for you. You are a programmer or writer or artist. You need a 'real' computer. In 10 years (probably far less), you will own a tablet computer, but it won't be your only computer.

In ten years I will still have a laptop with a real keyboard, possibly a disk drive, and most certainly an exposed filesystem with regular installable apps. It will still have a command line. (bash4eva!) I'll certainly use a tablet computer as well, but it won't be my only computer. However, for 90% of people, the tablet will do everything they need. It's built for them, not us.

OS Wars

Now that we have the audience for a tablet out of the way, lets look at the OS wars. There's a lot of talk that we'll have just iOS and Android. That they have an insurmountable lead. That the market wants one boutique option and one mass market indistinguishable option, just like MacOS and Windows.

I really don't think this is the case. I don't think any OS will have more than 25% market share in 10 years. Despite the similarities, the mobile OS market is very different than the PC market. Why? Well, let's compare the world of 1984 with the world of 2011.

  • Hardware: In 80s and early 90s you bought a PC in a computer store or maybe a department store like Sears. In 2011 you buy a phone in a cellphone carrier store, or on the web. You buy a tablet computer in a cellphone store or a mass market retailer like Target. These stores really didn't exist 30 years ago. Getting distribution for a device is very different now.
  • Apps: In 1984 you bought apps on floppy disks, wrapped in boxes, sitting on a shelf in a computer store. Or maybe Sears and Toys'R'Us (for games at least). There were no 'app stores'. Today, mobile apps are almost always bought in a store provided by the mobile platform itself. It doesn't matter if a retail location wants to carry your apps or not. No one has to fight over physical shelf space. The economics are fundamentally different.
  • Advertising: In 1984 computers were mainly advertised in computer magazines and newspapers. Remember those? Those things that no one my age reads anymore? (I'm 35 by the way.) Now we read and shop online. Or on our phones. Or get recommendations from friends on Twitter. And mobile devices are advertised on television. Advertising has changed. People find out about products in fundamentally different ways.
  • Compatibility: In 1984 software compatibility mattered. Software was hard to write, required huge lead times, couldn't be easily updated, and speed was of the utmost importance. Only the biggest apps would be on more than one platform, so getting apps on your OS was a big deal. IBM went to a lot of trouble making OS/2 Warp work with Windows 3.1 apps, for the sake of compatibility. Apple created expensive Apple II plugin boards for the Mac, all for the sake of app compatibility.

    Today most of the apps we run are backed by platform independent web services. Only the client app is different. And even that is easier thanks to open standards, modern programming languages, and the web. webOS has smaller market share than iOS and Android, but we still have Facebook, AngryBirds, and about 2 million Twitter apps. And you can view all the same websites. Compatibility simply isn't an issue anymore.

The economics of mobile operating systems are fundamentally different than the desktop wars of olde. To say we are in for a repeat of Mac vs Win is like saying the two world wars were identical because they both involved Germany and had the word 'World' in their names. Well the world has changed.

I think there will not be any single OS winner. Instead it will be more like cars. Many different models and vendors to cater to different tastes. They each have their own colors, addons, and spare parts; but they all drive on the same roads (the internet) and all take the same gas (webservices). 2014 simply won't be like 1984. And that's a very good thing.

I finally watched Code Rush this weekend, a documentary about open sourcing mozilla and the sale of Netscape to AOL in the late 90s. There is no doubt that Netscape created the web as we know it. The web changed everything. But I wonder about Mozilla itself. Did open sourcing Mozilla really make a difference to it's success?

I know that Firefox has been a great force for good, encouraging competition and pushing the web forward. However, Firefox only became what it is today when the Mozilla foundation decided to stop the end-all-be-all Communicator effort and instead focus on creating a single product: the world's best browser. Firefox, while open source, is primarily developed by Mozilla.org. Mozilla is a company. They may be a non-profit company, but they have income from search deals that they use to pay staff. Did being open source make a difference? Couldn't a closed source Mozilla do the same thing?

I've been thinking about this all weekend and I'm still not sure. On the one hand being open source built up a community of interest around it, a rallying point for the open source world, even if most of the actual coding came from paid employees. On the other hand, Firefox's userbase is somewhere around 20% of the internet. That means most Firefox users don't know or care what open source is. They use it because it's a good browser.

In the end I think open sourcing ended up being a benefit. Not because it allowed tons of Mozilla forks and variations. I can't think of any high profile Mozilla forks, actually. No, I think the real value was that it freed the Mozilla code base from Netscape Inc. It was insurance. No matter what happened to Netscape the code would always be free, with the option to one day create a non-profit around the code in case the community didn't like what Netscape did with it. And in the end, after AOL bought the company, that's exactly what happened.

So, perhaps my real question is: did the people making the decision to open source the Mozilla code base have this in mind when they did it, or is it a fortunate accident of history? Perhaps we will never know.

Over the years I've worked on a lot of open source projects. I've also worked on quite a few commercial projects. What a lot of them have in common is the need to market themselves to developers, but without any marketing budget. When I worked on JFXStudio my budget was 20$ a month from my own pocket.

What you are about to read is an essay form of a presentation I gave at OSCON 2010 a few weeks ago in Portland. I considered just publishing the slides, but it's really not as useful without the spoken words that go with them. Since I consider this such an important topic I rewrote it as an essay that I hope will help open source project leaders market their projects successfully. Enjoy! (photo courtesy of Flickr user EraPhernalia Vintage)

Why should you listen to me?

Before I dive into the essay, let me tell you a quick bit about me and try to convince you why anything I have to say is useful. (We'll see how it goes. If I don't see you at the end I'll know I failed. :)

My name is Josh Marinacci, and I've worked at Sun for five years and now work on the Developer Relations team at Palm. Over the past decade I've worked on both commercial and open source projects, often with very little marketing budget because they are developer focused.

On the open source side I've founded or been involved with the Java lib Flying Saucer (xhtmlrenderer), the widget system: AB5k/ Glossitope / WigetFX, JFXtras, the JFXStudio community site, SwingLabs/SwingX, and I've been a community leader for Java.net for years.

Some commercial projects you might have heard of include Swing, NetBeans, JavaFX, the Java Store, and now of course Palm's webOS. While not all of those are still shipping products (I suspect the Java Store was canned), they were all projects that needed to attract developers.

The core of all of this is Marketing. Now, when you saw the word marketing in the title of this essay you probably came expecting me to show you some cheap ways to make users aware of your project. While I am going to teach you about that, I'm going to teach you some marketing first. We often hear the word marketing used when really someone means advertising.(a quick aside: This may or may not be the strict business school definition of marketing, but I've found it to be practical and useful for our purposes).

What are we marketing?

Before I can explain marketing, let’s consider what we are marketing. Throughout this talk I'm going to use the word product over and over. You may say: but we aren't selling anything, we are open source. True, you aren't selling a product for money. But you do have a product. It's the software you've created. And you are selling it. Customers are buying it from you, but they are buying it with their time and their code and their feedback rather than dollars. Even though it's not a monetary transaction all of the principles of marketing apply as if you were a commercial company.

You see marketing really has multiple pieces:
  • Marketing research: Who is your market? What do they want?
  • Product Design: What does your product need to do to fit the needs of the market
  • Advertising: making the world aware of your product
  • customer feedback: using feedback from your customers (and potential customers) to improve the first three.

You need to know who your product is intended for: your market. You need to make sure your product fits the needs of this market (no less and no more). Then you need to advertise. Advertising isn't an dirty word. Advertising is simply making your target market aware of your product. There are lots of ways to do this that don't involve buy 30 second spots on TV, which we'll cover later in this talk. And finally you need a way to get feedback from your customers, or potential customers, and pipe this information into improvements of your research, design, and advertising. If you take a discipline approach to marketing then your project will be a success. (note, promise not legally binding. not valid in some states. mind the gap).

Who is your Market?

This is the most important thing you must figure out, possibly before you even start writing code, because it will shape everything you do.

Now, often open source software was created to scratch an itch. So often you are the target market. That's perfectly valid. So the question is whether that market contains more people than just you. Suppose you create an apache plugin to meet your needs as a website administrator, then your market might be other website administrators. With some thinking and searching you can figure out who is your market, and it may lead you to some users who are very different than yourself.

For example, when I created Flying Saucer I originally imagined it would be for people who wanted to put simple HTML content inside of desktop Java applications. However, I lucked into a new market. I added an PDF export option because I found a good PDF library and thought it would be cool. After I blogged about it I discovered that there were a lot of people who wanted to auto-generate PDF forms and reports from HTML because it was far easier than other code based PDF solutions. Once we knew this we started adding features to make better for those kinds of users. Things like the CSS 3 extensions for pagination. This was a case of customer feedback leading into our market research and then back into product design.

Defining your product

What is your project about? You need a brief and concise description of your project. If you can't summarize your project in a paragraph, or better yet a single sentence, then you haven't thought through your project enough and should go back to your market research and product design. Even a huge large mature project like tomcat still has enough focus to describe it briefly.

You should create a description of your project that is one page long, then a shorter one that's one paragraph, then a one sentence version. This will not only help you narrow your focus to the most valuable features, but you'll be reusing these descriptions over and over when you start your advertising.

Here's a simple example:

FirefoxScreenSnapz042.png

This screenshot is from the Flying Saucer home page. In a single paragraph it tells the new reader exactly everything they need to know: the library renders XML and XHTML content with CSS, and it's 100% Java. Right away the visitor can determine if they should investigate further or move on to look for a different project. This helps not only keep them from wasting their time, but also from wasting your time.

Your Website

To effectively market your project you need a coherent message, and that starts with having a single place for people to learn about your project. It's the 21st century, so that means you need a website.

A Google Code site is not a website.

FirefoxScreenSnapz043.png

Other than maybe a short text blurb this site contains no information about your project. It's a great collection of tools for existing contributors but it doesn't provide anything that would make someone want to come back to your website again, much less contribute to your project.

This is a website:

FirefoxScreenSnapz044.png

The website is visually interesting and it gives users a taste of the application. This particular site is for a project I created called MaiTai. MaiTai a tool for creating audio visual mashups, so I chose a dark color scheme with splashes of intense seductive colors.

This page first draws you in with the design and some pictures on the side. Then it has clearly defined structure of news, about, and a gallery of samples. Most importantly it tells you what the project is about through the tagline at the top and a summary snippet. This is the most important part of your message. This is where you start to reuse the descriptions I had you create above.

Building your site

Keep your site simple. I recommend WordPress or one of the other great blogging / simple CMS platforms out there. As a Java guy I hate the idea of running my site on PHP, but I almost always choose WordPress because it's simple and it has a large rich community of themes, plugins, and support. It gets the job done with as little fuss as possible. Now, I'd like to think I'm a good developer. Could I build my own website by hand? Sure. But you know what, my goal here is to produce an open source project, not a website. My time is better spent working on the marketing and project code, not mucking with a webtools.

Some of you may still think: WordPress? Really? Will your site scale as you add users? Will it have the features you need? Probably not. But that's a problem you want to have. It's not something you need to worry about right now. Worry about it once you have tons of users, and then you'll have some help building the replacement site. Don't shave the yak. Get a site up ASAP and get on with your project.

And this goes double for the visual design of your site. If you are a programmer like me then you aren't a great designer, or at least it will take you a long time to design something good. Instead, choose from one of the hundreds of great themes already created for Wordpress and customize it. That's what I did with ProjectMaitai.org. I spent a half hour looking through themes, picked one, then added the splash image at the top. Done. Get back to coding.

Basic Advertising

Okay, so now you've got your target market, a first version of your code, and a website. Now you need some real users.

Step zero: be polite.

The next few weeks will be equal parts exciting and frustrating. Always be polite and considerate. Choose your words carefully and gently. Actually, pretty much throughout life I recommend this. If you are always nice to people and smile then wonderful things will happen. I promise.

Step one, don't get outside users yet.

There's probably still major bugs in your code or website that you've overlooked because you are too close. Get some other developer friends (yes, developers have friends) to look over the site and try the software. Go back and fix what they find. Now go get some users.

Step two: draft a press release.

Remember that one paragraph description I had you create? That goes here, followed by the longer version. That's all a press release is. Yes, I know. Press releases are the bane of modern news, but they exist for a reason. They are a concise description of what you've created, spelled out so clearly that even the dumbest chimp with a newsblog can't get it wrong. Your goal is to get your message out.

Step three: submit your press release to the right people

And by right people I mean website and news blogs who are likely to be interested in your project. Is this a game library? There's 8 dozen sites for game programmers. Is this a Java project? Then the first person you should email is the editor of Java.net. Editors are always looking for new content on a tight deadline, and your well written press release makes their job that much easier. When you email these people you don't want to come across as spam. Write a personal email to the editor politely explaining that you've been working on a cool new open source project and you'd really appreciate it if they'd mention it and link to your site. Then paste the press release after saying thank you. That's it. That's 90% of launching a project.

Step four: fire up the links.

After getting a little press coverage start submitting links to the press articles to the various aggregators like Digg and Reddit. You could submit your own press release, but I've found that the press coverage of your project is considered more authentic than a link to your own blog, and so it will probably get rated up higher. You should also link to your project from Twitter and Facebook. Your friends are your friends, so they will likely spread the word just because they like you. (Which is why you should always be polite, to get more great friends with other friends).

Step five: rinse and repeat

Now that you have some word out there and a connection with a few interested people, you need to do it again. That means you need something new to talk about. That's why I like using blogging platforms for the website. They are built with the idea of continuous new content in mind. Every time you work on a new release, blog about it with a list of what's new and cool. Having trouble building a new feature? Blog about it. Did you get mentioned in the news? Blog about it? Did another project pop up that competes with you? Yes, blog about it. Anything to create new content of interest. Then take a subset of this news and tweet about it. When you have a big new release, send it to the news editors. Keep the cycle going.

Promotions

Every now and then you want to do something special to build interest, usually around the a new release of your project. This is called a promotion. There's a bunch of fun things you can do that are simple and cheap.

Have a contest.

Create a contest that is relevant to your project. For JavaFX we did a contest where you had to code up something cool that fit a theme, and you could only use 30 lines of code, and you had only one month. Keeping the contest constrained prevents them from becoming unwieldy, and if it's short then it gives you an opportunity to have another contest again soon.

The contest should have a prize, but a cheap one. You should have a prize because you want the contest to feel real. There should be a sense of accomplishment for the winners. But you should keep it cheap so that everyone understands this is really just for fun (plus you have a shoestring budget, remember!) A tshirt or mug is good, but I'm a big fan of amazon gift certificates because they can be used anywhere in the world and don't require expensive postage.

Remember that open source is often a status economy. When announcing the winners recognition is the most important thing. Plus announcing the winners gives you one more thing to blog about. :)

Write some articles.

As your project matures there will be need for longer form documentation and use cases. Lots of news sites want longer form articles for their sites, and some will even pay for them! Kill two birds with one stone by writing an technical article on your project. It can be an intro article or cover how to do something specific and useful with your project, perhaps by combining it with another project. My article on using Flying Saucer with [itext? the pdf article] was one of my most heavily read Java.net articles, and it has continued to serve as great documentation to new project visitors.

Better integrate social networking tools.

When you post to your blog you can cross post using social networking aggregators (links to some). Even better, you can let your users spread the word for you. Install a 'tweet this post' plugin to your blog. And create a facebook fan page. Fan pages were design exactly for this case letting people follow the news of a non-person like a software project. it also means your mom doesn't have to be spammed with updates on your open source code (unless she wants to). Creating a fan page takes just a few seconds and can provide a lot of valuable exposure.

Conferences:

Eventually you will want to talk about your project at a conference, perhaps a Open Source Convention of some sort. :) This means you must get comfortable with talking to a large audience. Don't worry, by this point you'll be so comfortable talking about your project that you'll be overjoyed to have more people listen to you.

When you write a session proposal don't make it sound like a vendor pitch. People come to a conference to learn how to do something or how to solve a problem. If your project helps with them with, then great, but your project shouldn't be the focus. Much like with the articles, pitch a session that uses your project to help solve real world problems. Make sure to spell out what the attendees will learn from your session.

Even if you aren't talking about your project, attending a conference gives you an opportunity to talk about your project to new people. And if you give a talk on another topic you can always mention the project in the 'about me' section and give people an opportunity to come up afterwards and ask questions.

Quick & Easy

Get some cheap & fun business cards. Biz cards are insanely cheap to get these days. Make them something fun, remember you aren't a for profit business so you can afford to be a bit silly if you want. The key is having a card that someone can use to get more information, so it *must* have your website and preferably direct contact to the person who gave them the card (probably you).

Use your email signature. This is a small bit of advertising space. Put a link and one sentence description of your project in your email sig. (check with your boss before using it on professional communication).

Self printed tshirts. You probably don't have the budget to print up a bunch of tshirts. But you can use a site like Printfection to create tshirts that others can pay to have printed for themselves.

Throw a party: yes, a party. If you've got a big release coming up then having a party is a great way to celebrate it. It doesn't have to be big, it can just be you and some friends getting together at a bar. All that takes is a tweet with the time ad place. Be sure to announce it beforehand, encourage locals to attend, and take pictures to post on the blog afterwards. Always be looking for new blog content. Oh, and have some way for people to recognize you at the bar, like a silly hat or project tshirt.

Marketing Checklist

If you already have an existing project here's a checklist of things to make sure you've got covered

  • description: one sentence, one paragraph, and one page description of your project.
  • Web site & code site: blog, mailing list / forum, vcs, issue tracker,
  • Social networking: Twitter, Facebook fan page, Linked-In group
  • A product roadmap and a marketing roadmap listing the promotions you are planning.

Conclusion

Marketing your open source project doesn't have to be hard, or expensive. It just takes a bit of resourcefulness and passion. Most importantly, be patient. It will take time to build up your developer audience. Keep at it and they will come. Good luck with all of your projects!

More Reading