Stop Writing Loner Applications
- 23
- Add a Comment
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.
23 Comments
Henri Bergius
June 14th, 2006
at 8:11am
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/
Paul M. Jones » Blog Archive » No More Loners!
June 14th, 2006
at 8:16am
[...] Read and heed the latest from Clay Loveless: Stop Writing Loner Applications. 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. [...]
fa
June 14th, 2006
at 9:33am
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)
Brice Burgess
June 14th, 2006
at 9:42am
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.
Clay
June 14th, 2006
at 9:46am
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.
Andrew Johnstone
June 14th, 2006
at 11:18am
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:).
PHP Vikinger » Web Application Integration and Interopability
June 14th, 2006
at 1:38pm
[...] After reading today’s blogposts from Clay Loveless and Paul M. Jones I think this is a good subject for discussion as well. [...]
Alan Knowles
June 14th, 2006
at 3:44pm
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…..;)
Anonymous
June 14th, 2006
at 4:28pm
Here’s a wake-up call: Patch or perish. Code a fucking auth library that everything can use, or shut the hell up.
Harry Fuecks
June 14th, 2006
at 11:16pm
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)
Jonas
June 15th, 2006
at 12:06am
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…
a programmer's best friend
June 15th, 2006
at 7:04am
Reprogramming wheels…
Clay Loveless recently posted a small rant [1] about loner applications, and that inspired me to write up a comment of sorts.
I think that the interoperability Clay wants requires out-of-the-box thinking, but sadly most of the programming world live…
Mike Willbanks
June 15th, 2006
at 8:45am
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.
Christine K
June 15th, 2006
at 9:11am
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.
Mir Nazim » LONER Apps! Why and why not
June 15th, 2006
at 11:15am
[...] This blog post “stop writing loner applications“ that is asking web developers to stop making stand alone apps and create small plugable, replacable and interchangeable moudules instead. [...]
Ivo Jansch
June 15th, 2006
at 1:50pm
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?
ATK rules...
June 15th, 2006
at 1:54pm
Go loners go!…
I just read Clay’s rather opinionated post about Loner applications.
I posted my reply in his blog, but since the submitbutton didn’t seem to work and my reply was rather lengthy anyway (which might very well be the reason it didn’t work), I deci…
Lewis LaCook
June 16th, 2006
at 5:25am
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…
Me, Myself and I » Blog Archive »
June 17th, 2006
at 12:09am
[...] Today I’ve read a really good article about ‘loner’ applications on Random Strings. [...]
Equilibrium
June 18th, 2006
at 8:12am
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!)
Arne Kuilman
June 19th, 2006
at 10:01am
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…
Ingredients » Nick’s Notepad » Blog Archive » Zend Frameworking underwater.com.au
July 4th, 2006
at 4:12am
[...] Considering the amount of freely-available, open-source, PHP code it seems idiotic to be doing it all yourself. Sadly, the number of applications available is no indication of their quality, nor whether they will play nicely together, a point taken up by Clay Loveless in his Stop Writing Loner Applications post. [...]
Sergei
June 1st, 2007
at 10:15am
What about OpenID?