written 2000-03-03 06:16:42's the thing for Freshmeat...

The official HOWNOTTO.

  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's 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 acknoledgement, 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 simply 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 websites. 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 annoucements. 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 Enlightment-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 webpages. 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 where
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, where
programs start at 1.0 and never, codewise at least, make 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
it's version is currently much, much greater than one right now.
  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. This 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 imporatant 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 graphic library is really just wrapping every
other one. Compatibility is key, here. 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

back to digest