Articles / The Official freshmeat.net ...

The Official freshmeat.net 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 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 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 icculus@lokigames.com.


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 jeff.covey@freshmeat.net know what you'd like to write about.

RSS Recent comments

04 Mar 2000 08:32 foogle

Excellent
The author deserves so much more than just a T-Shirt : )

04 Mar 2000 10:33 rowan

Very cool
Really a very, very nice editorial

04 Mar 2000 10:52 hallvar

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 make lots of apps. This is to some extent the very reason of the open-source model. It's a right to be able to modify GPL'ed software to your own liking and distribute it to others who might be interested! You don't even give an argument to why people shouldn't put together their own hacks or simple programs. And is this negative for the end-user ? he only ends up with more choices and perhaps a better program.

And BTW what is wrong with the versioning scheme that you're complaining about, is it too "unpretty" for you? do you think the app would be more stable if we called it "95" or "2.0". The program would still be the same, but might give users the false impression that the program is stable, even though the number "2" only meant that this is the second new feature since the first public release.

It's seems to me like you only wanted to make a "funny" and ironic article, but sometimes it's better to laugh with someone than to laugh of someone!

04 Mar 2000 12:03 zaharazod

hmm..
interesting, and definitely entertaining.. might give some newbies the wrong idea, though.. i really desperately hope that freshmeat doesn't turn into anything like /. ; that would be really sad. i mean, posting two or three times a day isn't REALLY necessary.. it would be better to change more than an #include before you release a new version.. and alot of people would argue that if they're too busy trolling about poor natalie, they're not worth reaching =)

04 Mar 2000 13:07 jjramsey

Is the situation at Freshmeat really so bad?
I've never seen stuff like "31337-speak" (or in something resembling actual English, "elite-speak") on Freshmeat. I haven't particularly seen *a lot* of apps that are redone versions of other apps, like GTK+ versions of Qt apps, and so on. *Some*, yes, but they don't dominate. I've also rarely seen two or three updates of the same app in a day, nor apps that don't have at least *some* code done.

Freshmeat hardly looks like the overrun commons that you describe.

04 Mar 2000 14:49 yodaman

hahaha
Thats GREAT! of course, now im very afraid of releasing an app im developing. This article has stopped a revolution.

04 Mar 2000 16:21 orentirosh

Hit counts
After an announcement on freshmeat your utility, however humble, will get hundreds of hits in less than two days. After that it goes back to a trickle of a few hits per day. I don't know about you but it's FUN to get hits and know that people are actually using your stuff. The temptation to announce again and get another wave of hits is really quite strong...

04 Mar 2000 17:14 cgray

Naming
I think that the author was wrong on the naming issue. Sure, Hungarian Notation is (considered) stupid when programming, but I find it very helpful when I'm looking for an application. For a couple of examples, if I wanted to find a WindowMaker dock app, I could search Freshmeat for wm or do a "dpkg -l wm*" using Debian. Or I'm using gnome and don't have any qt libraries on my system, so I can just avoid any application prefixed with the letter k.

It's the old "don't go polluting the namespace" issue. The programmers get to name the programs, and we tend to think of things like this.

I just finished writing a program, which I probably will not be releasing after having read this article. Why? It doesn't have a good name. The folks at Freshmeat would laugh at it because it reinvents the wheel. It's probably just as well. But when you see that cool program on my computer and can't find it anywhere on the net, you know who to thank.

04 Mar 2000 17:39 yath

Versions?
Please DO tell us what you have against the predominant versioning scheme. Unlike the other points in this editorial, no preferable system was implied. It sounded like a random rant, but then again so did a lot of the editorial.

04 Mar 2000 18:42 lsutic

Bullseye
You pretty much hit the nail on the head there - except that part about EMACS being the perfect program, I mean, "Windows *2000*". Say no more.

Furthermore I think you deserve at least a Freshmeat tuxedo.

04 Mar 2000 19:31 broco

Hackers are volunteers ...
Your article really rubbed me the wrong way. You aren't attacking lame flamers, warezers or other counterproductive individuals, you are attacking coders who are spending a great deal of their time programming useful or entertaining software. And what are most of these people getting for their work? Not a penny!

And yet you come on here and whine about these hackers with a sarcastic tone. I find that comparable to going to a food kitchen, standing behind the volunteers and complaining that they are not serving the soup with the correct hand movement.

Broccolist

04 Mar 2000 19:52 tljohnsn

13th Post
This is the unlucky post

04 Mar 2000 20:27 scherrey

Most Amusing..
This would be much funnier if it wasn't so damn true. Ouch.

well done,

Ben Scherrey

04 Mar 2000 20:46 liamquin

After the storn, the rains come, and there is new growth.
For each negative point implied, there's a positive rejoinder.

For each positive rejoinder, there is an implied action.

Should Gtk be able to use KDE themes, and KDE to be able to use GTK themes? Should we work on interoperability? If you take away geek motivation, what is left? Money?

I like to dance naked in the rain, to splash my bare feet in the mud of a new spring.

Who will write the call to action that this article seems to demand?

04 Mar 2000 22:10 nicoc

Please do not reinvent the wheel *too* often.
Let me begin with my own experience. I wrote a simple program two years ago that did not exist on the net. I published it on freshmeat and got an e-mail saying "hey, I just made public the same kind of program". I had a look at that program, but it wasn't addressing some important issue I was concerned about and couldn't without important modifications, so I kept on with my own. Since then the other program pretty much won as it developped faster and now also does what my program was doing. My program is still maintained, but developement stalled.

Yersterday, I saw the fifth announcement of a new program that does the same... again. Why didn't those authors look for an equivalent program before coding ? Why did they start over instead of contributing to an existing one ? They obviously knew about freshmeat, so why didn't they begin by searching on freshmeat for a program that would do what they needed ?

My answer is that being an author is *cool*. Free software used to be about sharing code to get there faster and do not spend time on "solved problems", it is more and more turning to be "I'm cool, I maintain free software on the net". People want to see their name appears on freshmeat or other places. Who cares if it already exists, who cares if I could get the same result in a tenth of the time by hacking an existing one, I'll make a new one, a better one, and I'll be cooler than the other guy who wrote the former one, I won't even look at what he did, others will contribute to my stuff, I won't !

Bottom line is that you get tons of bad ICQ clients, tons of window manager applets doing the exact same thing and an endless list of "new library for roasting CDs", "new library for standard C++ classes", etc. And you get those and not new kernels because they are easy to code, hence are the shortest path to get your name on the billboard.

Some will say that this brings freedom of choice. I doubt it: when you look for a specific kind of program, you end up using one of the two or three major ones (most dowloaded ones), as you want something that works, not something that you'll have to hack to get working. I would agree that sometimes it gets necessary or useful to start from scratch and forget about the old code base, but most of the time, trying to implement something that's missing to another program will make it more generic and turn it into a solid base and make it even easier to add other missing features.

Diversity and some form of competition are good and motivating, but endlessly duplicating the same effort is wasting precious time, as tons of things are still missing. So please fellow hackers, let's cooperate some more and get there faster, contributing is *cool* too !

05 Mar 2000 00:22 Avatar icculus

Some thoughts from the author...

...okay, okay. The versioning joke was lame. I'm sorry. :) In my next life, I'll be sure to point out that while highly-trusted applications (like Enlightenment) are still at revision 0.16, we haven't gotten to the point of intentional version confusion in the Linux realm, yet. Like Solaris 7 being really just marketing-speak for two-point-seven. Or OS/2 becoming Warp, Warp Server, Warp "blue box" and Warp "red box"...And don't get me started on the differences between Windows 95, 98, 2000, and "Millenium". But then again, I think I vaguely made this very point in this lifetime.

As for the Linux Application Naming Scheme (let's call it LANS, for short), I do agree that it is informational. I am perfectly serious about that. However, here is how I select applications: I like GTK/GNOME stuff, so when I went looking for an AOL Instant Messenger client for Linux, I could immediately ignore the ones that started with "k". Of those that were left, I chose the one with the most downloads. And unless it gives me copious amounts of trouble, I'm not going to try another one. So the LANS only got us half way there.

Furthermore, I get my Freshmeat newsletter emailed to me everyday, and I take approximately three seconds to read it. Apps without coherent names (like the mother of all LANS programs (freshmeat.net/appindex...)), get skipped immediately. And while I've no use for it, I admittedly did stop to read the description for Cut the Crap (freshmeat.net/appindex...) ...I mean, the name was catchy...I hope that isn't bowing down to the suits to admit that, but really, do go and punch in icq on the little "find" text field at the top of this page...how many of these apps are you really going to thoroughly research?

Which brings us to the next point: reinventing the wheel. There are so many things still lacking in Linux. And don't get me wrong, I'm an avid user myself. I work for Loki, because Loki fills a void in the Linux universe: games. Cool Games. And the GPL is NOT here to allow us to reinvent the wheel. Someone made that suggestion...the GPL is here to PREVENT us from replicating work. I mean, if you need a Napster client for every toolkit, fine. But for god's sake, please merge the GTK+ code into an existing KDE client. This might require more work than a simple, mostly-hardcoded client that is "complete" in one day, but now you can consolidate bugs in the app, and enhance one app instead of fighting to beat someone else. Could you imagine rewriting Mozilla for each toolkit? Of course not. But adding a new front end is cool. The argument for competition doesn't hold true for free software...not even for KDE vs. GNOME. Because both can, and should, interbreed, if both must exist. More important than rewrites for toolkits...I BEG to every hacker out there...don't just WRITE yet-another-finger-client (I cringe at every app that starts with "ya") just because you can...enhance one, or find something original to do. The world will notice (and thank) you much more for producing the next product with as much impact as the GIMP than they will for bestowing another version 0.0.1 audio CD player.

So, seriously this time: GET HACKING.

--ryan. (icculus@lokigames.com (mailto:icculus@lokigames.com))

05 Mar 2000 02:30 ph43drus

I'm Guilty As Charged...
Yep. I'm a guilty party. See this app (www.freshmeat.net/appi...). It is a Ya app, with acronym -- not recursive though, an mpg123 frontend -- almost as many of those as ICQ clients ;) and it has a random versioning scheme -- well almost, I code a bunch, estimate the version, slap it on there, and release everynow and then.

In defense of this awful crime, I have to give my reason for doing this. YaMMS was purely a learning excersize that turned out to be mildly useful (I'm using it for learning IPC, SysV style and BSD Sockets). So, I originally intended to keep it to myself, and then I figured, ``hey why not, other people might like it too.''

Other than that, he's right about everything but the versioning. I like the .1 .2 .skip .a .few .99 .32.7 scheme.

It actually would be kind of fun to merge it with another effort (like one of the ones with a ncurses frontend).

So, my apologies to all.


Jeff

05 Mar 2000 04:33 gray

gnome vs kde
I personally believe that interbreeding KDE with GNOME is a real headache, because I you do that, for every program you'll need some abstraction layer from the used toolkit. Probably it'll take 2 month until someone invents the GNOME/KDE abstraction lib (gekalib). GNOME supports a total different view of things opposed to KDE, just take the difference between C++ and C. (just take a look at the STL) Personally I don't like both KDE and GNOME and I'll intend to write yet another GUI-lib. (However I will not name it yaguilib) However the zen circle of gfxlibs contains some truth. You forgot to mention that downloadable rpms and srpms are just a waste of time.

05 Mar 2000 07:37 paulsokolovsky

Linux chauvinism

Yeah, that's cool! Cannot drive away temptation to joke on other what-to-submit-on-freshmeat subtopic. DISCLAIMER: I'm kidding, don't kill me!

So, I wrote some stuff to port *nix stuff to damned windows. Why in hell? That's because of that stupid boss, he told I must use windows and not linux. 'Damn', I said, 'I will use your #@$#%% windows. But I will use it in the same way as my wonderful linux.' So I wrote. Now I can take package from my wonderful linux distribution, compile it there and say 'ha-ha' to Bill. What's next? Of course, I've got a thought about fellow humans who failed to make millions with Open Source, and live in Real World, and have bosses and other circumstances which disallow then to use wonderful linux. I thought my stuff might be interesting for them. Where did I go? Don't look askance - I came to my favorite announcement site which I always used, use, and will use - Freshmeat! And what wonderful, attentive Freshmeat staff told me - 'We don't announce Windows software'. I told 'Guys, here's a mistake - my stuff is Open Source software, released under LGPL and made to ease porting other Free and Open Source software to new platform'. 'We don't announce Windows software' - patiently explained Freshmeaters.

They announce utilities solely made to mimic some Windows syntax and behaviour on linux. They announce crossplatform stuff with support for Windows. They announce scripts most of which - o horror - can be run on Windows. Well, they are happy with WINE made to run Windows software on Linux. But with my stuff, which does vice versa (the war on enemy's territory!) they have their bogometers triggered, they don't announce Windows software.

And all this after that editorial on whether Free Software for Windows is good. Well, many said 'no, it's intrinsically evil'. But many also said 'Well, Free Software is Free Software, why not give a chance to that stupid platform also?'

Thanks, Freshmeat!

05 Mar 2000 19:27 glyph

Learning to program a waste of time?
I think that the author's frustration is misdirected. Many free software authors are not looking to revolutionize the world with another program with the impact of The Gimp -- they are learning to program, and looking for a way to distribute the results of their efforts. Either that or they've written a utility to automate some task that they have to perform frequently.

First of all, he is satirizing things that haven't happened. I have never seen k3wlt0k on freshmeat, except in jest. I have seen programs that don't have much code -- but six months later, they're always still around, starting to bang out something. People may submit a lot of stuff to freshmeat, but they don't take those submissions lightly.

The author of this article has done the open-source software community a great disservice by frightening off many new programmers, because hey -- open source isn't cool unless you can impress the execs at Lokigames with it, or at least be so original and earth-shattering that you'll have a million users. Why even bother to start?

My personal encouragement goes out to everybody here who is releasing yet-another-IRC-channel-bot-management-interface -- I wouldn't recommend sticking with such small projects forever, but they ARE useful (or otherwise you wouldn't get users, no?) and they provide crucial experience that will be useful to programmers who want to get involved with the next GIMP or the next Linux. The next time one of those earth-shattering projects crop up, thousands of qualified, skilled programmers will be around, because sites like Freshmeat and AppWatch brought them together, gave them a reason to hone their skills and get involved with programming... unless they listen to the author of this article.

Freshmeat's front-page submissions have been getting rather cluttered lately -- but last I checked, that 'find' button at the top of the page still works, and there's no reason not to use it. If you're looking to watch particular apps, there are many ways to do that (that I don't think I should have to cover here).

Finally, let's not forget the mantra that ESR gave us -- "release early, release often". It works. I know, because I've been running a project for a long time -- I used to release it once every six months, and I didn't release it the first time until it was nearly finished. I recently started the project over from scratch, to clean up the design and switch to a different language that is more appropriate -- now, I release every few days (admittedly, I haven't gotten around to putting it on Freshmeat yet, but I will soon) and it's gotten much more attention than it ever did before. I've even gotten patches already. It makes me more excited about the project, and it gives more developers a chance to find out about it and discover whether they're interested or not. If you think that releasing a piece of software before it's finished, or doing so publicly is a bad idea, I would highly recommend re-reading, and re-thinking, "the cathedral and the bazaar".

06 Mar 2000 02:02 junk408

recycle, reduce, reuse
hey, has anyone ported Hello World to every know interface? if not, i think i have a new project!
....now where's that HTML book....that's a language, right?

06 Mar 2000 02:22 yodaman

hmm
some people are unduly upset. The author was joking! (right? haha...no its all true!)

I also, as said earlier, believe that no project is wasted if something is learned by the coder. However, writing another irc client IS PLAIN STUPID. KVirc is an excellent irc prog. As the author stated, porting or sifting through code, apperently, isnt as 'creative' or 'clever' as rewriting a client! but writing lil apps that have unreasonable aspirations (multi-threaded, gnome/kde compliant, corba-based, has its own db, etc) can be quite fun. But anyhow...props to author, yep.

06 Mar 2000 06:51 fherlin

what to code?
you are all right, we have enough programs we don't have. This is where this new page I've found comes in:
WhatWeNeed - The Linux app wishing well at WhatWeNeed.de
is a central repository for ideas and requested new linux applications.

-- frank

06 Mar 2000 09:16 kop

Ratings on freshmeat?
What if there were say, a five scale rating-system so that you can get a quick oppinion what's it all about, and warn/recommend your possible fellow downloaders of the release..? I'd say it whould go as a good complement to "Comments". Anyone else thought about this? //kop

06 Mar 2000 10:44 azaroth

Announcing the new LANSS Service
The Linux Application Naming Scheme Service is now available!

Instead of having to figure out what you should name your application, simply fill out a simple form and the service will automagically generate the appropriate name for you!

www.o-r-g.org/~azaroth...

-- Azaroth (Comments welcome ;^) )

07 Mar 2000 11:38 acroyear

Learn to write Libraries
When i work in java (my primary language now, 'cause i get paid for it), i tend to automatically layer the problem, look for "reusable" stuff right away, code those first, and then assemble the reusable stuff along with stuff specific to the problem to create the final app.

this is the (well, a) difference between "programming" and "software engineering". I realize, that SE is not exactly a common self-taught thing, and in fact isn't even taught in basic C/S departments in universities. you're taught to get the job done, cause you've got 5 other teachers demanding your efforts all at the same time. so you code to get the job done, and everything is locked in to everything else. there's no distinction between gui and non-gui. this tends to stay with most programmers even 10 years into "real-world" programming.

thus, its damn impossible to do stuff like "port a kde app to gtk". every single "function" of the app is treated in the code as an effect of a gui action. since the widgets and callbacks are all different, there's no direct 1-to-1 connection one can do.

and using an Object-Oriented language doesn't help matters much. they teach basic OO, and the syntax, but only experience at this point can really teach decent design. OO programs have to be thought about and worked out on paper for days before you write 1 line (well, class) of code. in the database world, they teach "normal forms", of working through your data on paper until its optimal, THEN you make your SQL tables.

there isn't an equivilent for that in the programming world, and there needs to be.

most freshmeat programs work, and work well. they can be maintained and developed in and of themselves, but they (often) aren't designed or written in such a way as to facilitate trickier mods to either the gui or the backend.

thus, we have some 12 or so mail programs for gnome because the "mail" functionality as a common library, where your taste in gui can be added later, was an afterthought, not part of the base design.

07 Mar 2000 18:45 hanseno

Ok, but clearer
This is a pretty much ok critique, but I'd like to comment on the
versioning scheme you pointed out. The problem with this scheme
is that if you have a library, as an example... you are likely to
change the binary interface of it, during the development. If and
when you do this, you must increase the version number. As this
is the number the linker searches for, when linking libraries
against it. So, unless you are happy with breaking programs that
are linked with yours, you need to update the version number on
each release, that actually changes the binary format.

08 Mar 2000 02:07 chronos

A Case For Reinventing The Wheel
I am guilty of reinventing the wheel. I did this when I wrote fdupes. That's not necessarily something to be ashamed of. You see, I think it's often a matter of design philosophy. People aren't always comfortable with the way programs work. While certain programs can be easily modified to work the way you want them to (easier than starting from scratch, that is), sometimes this is just too difficult or undesirable a task. This is the case whenever significant structural changes are necessary to accomodate certain improvements or modifications. In this case starting from scratch might be exactly what the programmer needs to do.

Then again, contributing code is often the better option. So why don't people do it more often? To name one of many possible reasons, it seems to me people are often afraid of what will happen to their contributions. There is more safety in being a mantainer than a contributor. If your contributions are ignored you must either forget about making them public, release a patch that could easily become obsolete, or release a spin-off version. Personally I fear useful spin-offs more than I do useless start-ups. For instance, I'd like to modify phpAds to work with PostgreSQL, but I wouldn't want it to become a spin-off version (pgPhpAds). Not only would it lag behind the original program, but there's a chance that each would evolve in a different direction. While there may be circumstances where this is desirable, more often than not it is quite unfortunate, considering they were once the same.

So, to summarize, I think there are times when starting from scratch is desirable, and likewise there are times when contributing code is the better option. It depends very much on what the code provides versus what potential contributors want from it. It also depends on the programmer's attitudes. Whatever is "best" in terms of progress, in the end I'm open to all forms of good software, original or not.

11 Mar 2000 06:10 mdartt

Newbies
(Consider this a follow-up to glyph's comment.)

While I'd certainly like to see a greater variety of applications on FM, I wholeheartetly support people who post programs they wrote as exercises or learning activities (as ph43drus mentioned above). Yes, it's great if a person can contribute to an existing project, but doing so can often require a more patience and skill than one possesses. Not only do you have to deal with learning how to code what you want to code, which can be hard enough, but you have to sift through a great deal of other people's code, which may be poorly commented/documented, if at all. This is certainly a useful skill to acquire, but it's not the sort of thing to do until one's more comfortable with one's own skills

For people like the one's I've mentioned, I'd say: do your stuff and post it, even if you don't plan on continuing it--someone else might be able to learn something from it, or critique you and teach you something, or maybe he'll keep the project moving on his own. Just be clear about the status of it, at least on your homepage.

I'd bet that most people don't post stuff to be "seen", and if they do, who cares? Anyone who maintains a "37337 h4X0R" attitude won't get other coders on his project, and wouldn't be much use to another team, anyway.

Let's stop worrying about other people's apps and focus on writing our own.

TO THE FRESHMEAT PEOPLE: there was an excellent editorial a while back on how to submit something to FM. I would recommend posting it in a highly visible place on the front page and on the submission page.

11 Mar 2000 06:11 mdartt

Newbies and Duplication
(Consider this a follow-up to glyph's comment.)

While I'd certainly like to see a greater variety of applications on FM, I wholeheartetly support people who post programs they wrote as exercises or learning activities (as ph43drus mentioned above). Yes, it's great if a person can contribute to an existing project, but doing so can often require a more patience and skill than one possesses. Not only do you have to deal with learning how to code what you want to code, which can be hard enough, but you have to sift through a great deal of other people's code, which may be poorly commented/documented, if at all. This is certainly a useful skill to acquire, but it's not the sort of thing to do until one's more comfortable with one's own skills

For people like the one's I've mentioned, I'd say: do your stuff and post it, even if you don't plan on continuing it--someone else might be able to learn something from it, or critique you and teach you something, or maybe he'll keep the project moving on his own. Just be clear about the status of it, at least on your homepage.

I'd bet that most people don't post stuff to be "seen", and if they do, who cares? Anyone who maintains a "37337 h4X0R" attitude won't get other coders on his project, and wouldn't be much use to another team, anyway.

Let's stop worrying about other people's apps and focus on writing our own.

TO THE FRESHMEAT PEOPLE: there was an excellent editorial a while back on how to submit something to FM. I would recommend posting it in a highly visible place on the front page and on the submission page.

11 Mar 2000 06:13 mdartt

Whoops
Sorry for the duplicates--first time poster, getting used to the system. :-)

11 Mar 2000 07:14 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. :)

16 Mar 2000 16:33 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.

14 Mar 2001 09:04 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.

HE WAS ONLY JOKING!.

Very funny mate.

xx

14 Mar 2001 09:07 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.

xx

05 May 2004 17:40 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.

Screenshot

Project Spotlight

PHP OAuth API

A PHP class to authorize and access APIs using OAuth 1.0, 1.0a, and OAuth 2.0.

Screenshot

Project Spotlight

CODERU

A Java code quality tool to enforce good design with respect to package dependencies.