Stop Writing Loner Applications

It’s not all about you and your killer app. I’m talking to you, Mr. Super-Duper Web Application Developer Guy.

After nearly a decade in web application development, I continue to be dumbfounded by how many applications are built and released by the open-source community that apparently believe that they’ll be the only complex, user-database application I’ll will want to run.

These are the loner applications.

Forum applications. Blog platforms. CMS systems. Ecommerce engines. Wikis. Which website that hopes to draw any kind of crowd needs only ONE of these? Even “Web 0.5″ sites needed two or three of these kinds of tools. These days, many sites need them all, plus custom layers on top of them that provide some uniqueness to justify the existence of the site in the first place.

So why are loner applications still being built, as if they’re the only horse in the stable? Alleged “Best of Breed” apps, such as WordPress, Movable Type, ZenCart, FUDforum, Vanilla, Trac, MediaWiki … the list goes on and on. Insert your favorite application that relies on user registration here ________________.

In nearly every case, these loners have been built with no apparent concern for the fact that the person or company involved may already have a database of users, or that one of the other applications may be installed alongside it. Hard to believe, but true.

The result is that the guys in the trenches trying to put together a cohesive whole have to spend a great deal of their cycles writing and maintaining “bridge code” to allow site visitors to register and authenticate against all of the chosen applications at once. Mr. Super-Duper Web Application Developer Guy knows little of this dilemma, because he’s spending his time coding the kitchen sink into his Super-Duper Web Application instead of worrying about interoperability.

Here’s a wake-up call, guys: your awesome ________________ application probably isn’t the only thing I’m going to install. The killer feature that will make me choose your app over the other guy’s is not “widget support,” but some built-in comprehension that things like authentication, registration, and even user profiles/preferences may be housed in another application.

It’s not that I don’t love you and your masterpiece. It’s just that I may already be using something else that I’m stuck with or committed to, and would rather authenticate against that instead.

Some of the applications I’ve mentioned are starting to think this way … Trac, for example, has pluggable modules on the way that may allow alternative authentication. It’s a start.

This is especially important to consider in today’s Web Services/Remote Application world. The “other application” that houses the user data for authentication and preferences may not be hosted on the same server, or on the same platform, or written in the same language.

So please: drop the loner schtick and start tuning your applications to be part of a collection of tools.

Technorati , , , , , , ,


23 Responses to “Stop Writing Loner Applications”  

Exactly why we’ve made sure all Midgard-based PHP applications can authenticate using external sources that are centrally configured:

http://www.midgard-project.org/documentation/installation-authentication/

I absolutely agree, but a simple standard that works without too much fuss has yet to be created, so that everybody can adopt it. Haha, bet they will not, sadly. On the other hand if it had been there some years ago, maybe it wouldn’t have developed like this.
And yes, this has been demanded for many years by many people and many times, good luck somebody will hear you and add support to their product. Well, if a suitable standard solution can be found (PEAR Auth/LiveUser may be, LDAP is surely not) :)

It pains me to see that you’ve listed ZenCart as a best of breed application. The OSS world is lacking a well designed shopping cart & I personally see a niche here that needs to be filled. Of course this is my opinion, and what I consider “right” vs. “wrong” is exactly what leads to the proliferation of duplicate functionality programs.

I agree on your points of not reinventing the wheel. As stated above, it’s more subject to the opinions of developers, their level of expertise, and the shear number of them. This is certainly NOT LIMITIED to web apps, but extends throughout the proprietary & F/OSS software realms. And it won’t ever truly go away… at least I hope it doesn’t.

Brice, I agree — there isn’t a great OSS shopping cart, at least not one written in PHP. Wasn’t sure what else to list there … OSCommerce certainly isn’t it, and I don’t know of any other open PHP shopping carts worth mentioning.

This is the predicament one of our developers is currently facing. As we are looking to bridge x-cart into our registration and CRM systems with specific functionality with regard to promotions & coupons, this will no-doubt require a nasty hack (Would be easier with Stored Procs’). Although nothing is ever simple.:(

Making applications abstract enough to deal with “the bridge” problem is quite a challenge as their will always be points that overlap, implemented differently, or simply over looked. One application from very breif observation that seems quite good is Gallery2. Anyway thanks for highlighting this problem Clay:).

hahahaha…. I’m just happy when you download them and find out that the code is not a pile of turd.. - badly designed, poorly coded, insecure and a total mess…. which could be said about some of the ones you mention…..;)

Here’s a wake-up call: Patch or perish. Code a fucking auth library that everything can use, or shut the hell up.

Re shopping carts, might be worth examining modern merchant: http://www.modernmerchant.org/ by Moxley Stratton (http://www.moxleystratton.com/) - authentication seems to be encapsulated within a single class (UserDao)

The problem are not the existing/missing technologys or the existing/missing concepts. The problem is about the developers, everyone thinks he can do it better.

Most developers programme the wheel over and over again just because their to lacy to read the “How the existing wheel turns” manual and to lacy to design their wheel suspension the way it fits to the existing wheels which are designed and built by expirianced wheelmakers…

The problem normally exists for me between non-object oriented programming. Most of the time if an application is coded properly I can extend the object or replace the object with the things I need and it will actually talk correctly.

When the logic is taken out of that type of context it gets extremely frustrating. The same can be sometimes stated about loose vs tight coupling.

FUDForum has an API so that you can do all of that. I was able to integrate it into my existing registration without (m)any problems.

At first, I thouht ‘hear hear!’ and completely agreed.

But then I changed my mind.

The fact that Da Vinci painted the Mona Lisa never stopped others from painting similar paintings. Neither should Coldplay and Keane not exist because U2 already makes the best music in the world anyway.

There are many reasons why people program. The most common reason of all is ‘fun’. I’ve heard tens of times ‘I know there already exist standard apps for this, but I just wanted to learn how it works, and it was fun’.

And this is every free programmers right.

None of these programmers force you to install their apps. They just show the world what they have created. And people either like it and install it, or they don’t.

One example: had Larry Page and Sergey Brin thought ‘why built a search engine, we already have altavista, lycos and metacrawler’, they would never have turned the search engine market upside down.

Just not developing anything new because ‘it already exists’ is simply killing innovation. Every now and then a new app WILL succeed in being better. 9 out of 10 won’t, but it’s that 1 in 10 that makes all the other efforts worth our while.

So please, develop all you want. Be creative. But use common sense. Reuse what you can reuse. Think about extending existing apps instead of beginning from scratch. And I do agree with Clay that interoperability is important if you want others to use your software. But we do n’t pay you to develop this, so it’s really nothing more than an advice. And if you code just for fun, do whatever you like. It’s your own spare time. Who are we to judge what you should and should not create?

I would TEND to agree with you, but would also add that a lot of my living is made writing bridge code, and that it’s a helluva good way to learn application design…

I agree with Harry Fuecks and Jonas:

“the problem is about the developers, everyone thinks he can do it better”

“The problem normally exists for me between non-object oriented programming. Most of the time if an application is coded properly I can extend the object or replace the object with the things I need and it will actually talk correctly.”

If an application is well designed and coded properly, is possibile to do quick modifications to gain new features or to let the application cooperate with other softwares type. For example exists the PEAR::Auth library that can be used to have a centralized Authentication System able to authenticate against pre-existing customers DB, users repository, intranet, LDAP and a lot of other beckends (if do not exists a driver for PEAR:Auth can be easily create by the developers). The problem is around ‘developers’, not the lacking of ‘Standards’ (there are a lot!)

So true! It never seizes to amaze me how many people are re-inventing the wheel or are writing loner apps. I am still looking for SIMPLE tools for SIMPLE tasks…

  1. 1 Paul M. Jones » Blog Archive » No More Loners!
  2. 2 PHP Vikinger » Web Application Integration and Interopability
  3. 3 a programmer's best friend
  4. 4 Mir Nazim » LONER Apps! Why and why not
  5. 5 ATK rules...
  6. 6 Me, Myself and I » Blog Archive »
  7. 7 Ingredients » Nick’s Notepad » Blog Archive » Zend Frameworking underwater.com.au




What is Killersoft?

Killersoft is a small web development firm located in Fremont, California, founded by web developer and author Clay Loveless.