...here's the thing for Freshmeat... The official freshmeat.net 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 segfault.org 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. ----[bio]---- 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 [email protected].