Articles / The Official …

The Official HOWNOTTO

Ryan Gordon writes: "So, you've found your niche in the open-source world, and now you want to be noticed? You're producing cool, original, k-rad elite apps, and you want to get the recognition you deserve? There can only be one solution: FRESHMEAT."Many Linux folks who know how to program, and many more who don't, post their offerings to Freshmeat everyday, so if you desire acknowledgement, you darn well better start placing announcements for your own 0-day Linux Warez here, too. However, it's never wise to dive in without knowing what you're doing, so here are some simple guidelines to help you get the most out of your Freshmeat experience. In honor of the Linux Documentation Project, we'll call this the "Freshmeat HOWTO."

Remember that it is important to announce early and announce often on Freshmeat. Adding a new #include line to your program is usually all the reason you need to make an announcement. In fact, most programs contain less code when they are labelled version 0.0.1 and posted. With just this much, you are certain to get lots and lots of capable programmers to contribute to your infant project. After all, there's nothing like a blank slate to call a throng of rootless hackers to your aid. All coders are really just looking for a home, and you are providing them one in your new project. So go forth and announce.

Didn't get the overwhelming response to your project that you expected? That's okay. Sometimes hackers get overwhelmed by a busy day of trolling at other Web sites. This has become less of an issue since turned off the user-comment feature, but still, the inherent human right to talk about Natalie Portman and repeatedly try for a "first post" can eat into one's productivity, and cause the exhausted hacker to miss a few Freshmeat postings. Therefore, you must simply make more announcements. Make two or three a day. Go ahead; bandwidth is cheap, and chances are you still won't generate more daily announcements than the Linux kernel.

It is also important, when submitting applications to Freshmeat, to have a good name for the program. Remember that the Linux community doesn't need any advertising, so there's no need to waste those precious Perl-coding brain cells on a marketable name. To simplify the matter, the Linux community has a naming scheme that it borrows from a system known as "Hungarian Notation."

Follow this simple algorithm: Is your program GNOME-based or KDE-based? Prepend a 'g' or 'k' to the name, respectively. If it is not specific to either environment, graphical apps may usually prepend an 'x'. Java apps may use 'j', with written permission from Sun Microsystems. Database-related code may use "sql". Some other important letters are 'e' for Enlightenment-related programs, 'z' for compression algorithms, and 'b' for BeOS apps. You thought all those hours of watching Sesame Street were a waste, didn't you?

To make your application truly cool, what you really need is a RECURSIVE acronym. You get bonus points for using the word "not" in the name, too. Some examples of this are "GNU's Not Unix", "Pine Is Not Elm", "Wine Is Not [an] Emulator", and "Linux Is Not Useless [without] X-Window."

Contrary to what was stated previously, it's important to note that the 'G' in "GNU" does NOT stand for "Gnome". It doesn't stand for anything. This is merely a necessary evil in the Linux Application Naming Scheme.

Numbers are also permitted. Following the lead of artists such as MC Hammer, the Video4Linux and ISDN4Linux projects have made the replacement of words with their phonetically equivalent numerics an acceptable practice.

After you've selected all the letters that relate to your program, pick a simple word (try to avoid words that contain vowels, as vowels generally are frowned upon in Unix circles), and prepend the letters to it. A good example is a GNOME-based, database-enabled program for caching Web pages. It might be named something like "gsql4httpBy". Note that 'y' is not considered a vowel in all situations, so this is a valid name for your new program, even though it isn't a cool recursive algorithm. This will give the whole of the Linux community all the information it needs about your app.

Since you've expertly encoded all the relevant information about your project in its name, there's really no need to fill out that section in the appindex entry labelled "description." In fact, this was placed there merely to satisfy those without the creativity to come up with a decent project name. Since you are capable of producing a proper name in the first place, you may use this section to give a shout out to all your homies. An example is:

"Yo, wassup from the PhreakMaster?! Yours truely, Sir Cracksalot, is bestowing onto you all this 37337 new demo app. I wanna give some props to my buds in #visualbasic, Linux Torvalds (you kick b7tt, dude!), Loki 4 giving me stuff to pirate, and 'A' through 'F' in the phone book."

Versioning schemes are important to consider. Gone are the days of DOS when programs used a MAJOR.MINOR versioning scheme. After all, why be so direct as to increment the minor number for bugfixes, and the major number for new features? Where's the DRAMA in that? Also gone are the days of Windows, when programs started at 1.0 and never, codewise at least, made it much further. Linux programs are versioned as a fraction of one, and as they travel towards perfection, they get closer to being an integer. The astute reader has already figured out that this means Emacs must clearly be the perfect program, since its version is currently much, much greater than one.

But hey, at least we haven't adopted the Solaris versioning system. This means that Linux programmers do not need an advanced degree in calculus in order to write applications, which has helped jumpstart the Linux application market. Thanks to this easing of the programmer's burden, you can get on Freshmeat any day of the week and see a proliferation of IRC clients and Napster clones available for download.

Which brings us to the point of cross-pollination. You might be thinking that you are now ready to hack some code and submit it to Freshmeat, but golly gee, whatever should you work on? You could perhaps find a lacking feature in Linux and implement it, or find a radical new concept and make it a reality. But until you've been in this business as long as Stallman, you probably want to take it easy and hone your hacker skills. Clearly, the best way to do this is to reinvent the wheel.

Is there a cool KDE application? Rewrite it from scratch with the GTK+ toolkit. Don't contribute enhancements to the existing project. Don't even evaluate their codebase for potentially reusable code; that goes against the spirit of COMPETITION. You need to write something... cooler. Is there a Java version yet? Rewrite it. What about a console version? Rewrite it. A applet? Rewrite. An EPPLET? REWRITE. A pure assembly version? RE. WRITE. Make sure that every program exists for every possible user's exact configuration. We are talking about the very soul of user friendliness here! Also try not to forget about BSD, BeOS, OS/2, and... uh, Windows. Remember that rewriting is always a more creative process than porting, and there's nothing more important in mental health than a creative outlet. Doing a search on the appindex for "icq" will demonstrate how popular this method of project development/psychotherapy can be.

For those that aren't inclined towards end-user applications (those pesky user interfaces!), you may also delve in at a lower level. There are many libraries that need to be cross-bred. Do you like SDL? You can help make sure it can use GGI, SVGAlib, X, FBcon, and AAlib as video backends. BUT -- does GGI have an SDL backend? Is anyone working on linking clanlib into this? And you can help make sure that clanlib can use DRI. And DRI should be able to use SDL as a backend. You should be able to link all graphic libraries together so they can call each other in a perfect Zen-like circle. Remember that Linux is not complete until every possible graphics library is really just wrapping every other one. Compatibility is key. And don't forget sound APIs; I haven't even mentioned OSS, ALSA, and ESD yet. Look at all the work we have to do!

So, with this preparation added to your programming toolkit, you can now submit your applications to Freshmeat with confidence. Get hacking.

After years of being oppressed by the computer industry, Ryan is coming out of the closet; he was an English major in college. He can be found sleeping on Scott Draeker's laundry room floor, or alternately at

T-Shirts and Fame!

We're eager to find people interested in writing editorials on software-related topics. We're flexible on length, style, and topic, so long as you know what you're talking about and back up your opinions with facts. Anyone who writes an editorial gets a freshmeat t-shirt from ThinkGeek in addition to 15 minutes of fame. If you think you'd like to try your hand at it, let know what you'd like to write about.

Recent comments

05 May 2004 17:40 Avatar insajt

You forgot..
You forgot that if you are new to programming, USE PHP! No other language! Use PHP for whatever you're doing, even if it's 3D shoot-em-up! And whoa, don't forget.. use a database!

If you are really new, create a web-based-front-end for one or several existing applications. I mean, I'd love for a web-based 'ls' clone.

Seriously, I really want an 'ls' front-end which stored the file lists in a database which will engulf 40% of my hardware capacity.. really!

Am I the only one that thinks that this web-based-frontend-database (ab)use has gone too far?

I think it'd be a great thing if freshmeat would create a section of its own for such projects.

14 Mar 2001 09:07 Avatar bbaamm

Re: Hackers are volunteers ...

> Your article really rubbed me the wrong
> way. You aren't attacking lame flamers,
> warezers or other counterproductive....
> Broccolist

Oh, please. No-one wants a million re-writes of the wheel. It may have been neccessary as a learning experience to know how the wheel works, but you don't have to post it here "thinkin you da man", thats just sad.


14 Mar 2001 09:04 Avatar bbaamm

Re: Is having alot of apps negative?

> I totally disagree with all of your
> opinions on the matter of wether or not
> it's negative to have lots of
> people/hackers .......

Oh, get a sense of humor. If you make a handy little tool that someone else would find useful, thats not really been done before, put it here. Other than that, yes! too much shit blocks the drain.


Very funny mate.


16 Mar 2000 16:33 Avatar billw

More helpful suggestions!
Why not actually contribute something useful instead of criticizing those of us who do? If you don't like the way things are being done, do them better. Show the world another way to do something and if it's truly better, others will follow.

11 Mar 2000 07:14 Avatar jeffcovey

The "How to Write A Great Submission" Editorial...
... is linked from the "contribute" page. If you saw some of the horrors which still arrive in the fm backend, you'd know that not everyone reads it, but it seems as though many people do; the quality of submissions does seem to have gone up since it appeared, and I get email from people asking whether theirs was an "ick" submission. :)


Project Spotlight

Kigo Video Converter Ultimate for Mac

A tool for converting and editing videos.


Project Spotlight


An efficient tagger for MP3, Ogg/Vorbis, and FLAC files.