views:

763

answers:

7

So today I was in a meeting to assist putting together a proposal to give one of our clients on how we can improve their web site. After two hours we had a pretty hefty list of new features and resource upgrades that coupled with their latest request for a site redesign, would put us in a good position to suggest a 'rewrite' in another language.

The existing site is all Classic ASP... done very poorly. Every single function, definition, business logic, etc. is all found in a single file containing several thousand lines of code which unfortunately crashes our IDE, forcing us to use Notepad, not exactly optimal. Some sections of the site are dynamic, while others generate static HTML pages, remembering which are which has caused a lot of trouble in the past where pages suddenly revert and we're scrambling to recover.

Another big problem for us is Classic ASP was not our language of choice, the shop I'm in is primarily ColdFusion, so our resources are limited when it comes to who can actually maintain the site; but in the early stages of development the client controlled the hosting and dictated the language, this has since changed and we now host the site internally and have full control. The database for some reason is also MySQL, which an equal number of the staff are familiar with, further limiting resources.

What we would like to do is utilize a CMS we've been developing over many years and have polished into a fine system, and transfer all of their existing content into it, developing and modifying whatever is necessary to not only get the site to where it is at now, but implement the new features we will be proposing to them.

Converting to ColdFusion for us will greatly open up human and hardware resources... more developers, and more machines configured to run a ColdFusion site should something happen to the primary server. For the client however, our turnaround has been very respectable and they could totally take a "If it is not broke, don't fix it" attitude.

While Classic ASP is still a part of Windows 2008, what really is the future of this language when it can fairly easily be converted to run under .NET?

We also need to be prepared to convince the client NOT to switch to .NET. Frankly most of us are not a big fan of it, and besides myself, we have maybe 1 other programmer capable of working in it. This particular site just isn't sophisticated enough to warrant .NET (blasphemy I know, but in my experience .NET can be overkill for simple web sites).

We are working on a cost analysis of performing the upgrades to the existing site, as opposed to making the transition to ColdFusion; and are willing to eat some of the cost if it means a better environment for both parties. But what are good arguments we can bring up to them that would help sweeten the deal?

Edit: I'm not talking about a total rewrite, we have a custom CF CMS that would take a lot less time to modify than to start from scratch. The estimate was about 40 hours to implement back-end, and I believe 30 hours for front-end. Meeting is tomorrow! fingers crossed!

+13  A: 

I have several problems with aspects of your post (and agree in other parts).

Firstly, although classic ASP works fine I think the time has come for it to be considered legacy technology, replaced by ASP.NET (and yes I realize that ASP and ASP.NET aren't all that similar). If you were simply maintaining classic ASP code then I could understand keeping it. Significant new development in classic ASP would have to be thought about long and hard.

The problem is I put ColdFusion into the same bucket as classic ASP. To give you an example, consider this trend of ASP.NET vs ColdFusion. You'll see significnatly less for CF and what's even worse, it's declining. I find Google Trends to be a pretty reasonable barometer of mindshare when it comes to these things as well as the overall market trend.

Still not convinced? Try:

The second problem I have is that you're proposing to tie them into a proprietary solution based on that same "legacy" technology. What happens when you move on from your bespoke CMS? What happens if they want to discharge you as their consultants (and this can happen for many reasons that have nothing to do with your competency)?

The third problem I have is that you want to talk them out of .Net and this seems purely motivated by selfish reasons, namely that none of you really know it and, quite simply, you don't like it. Fact is though that Microsoft is pushing that much more than anything else, it has a huge developer and user base and seems to have a lot of momentum.

When you deal with a client you have a duty of care to put that client's needs ahead of your own, ethically if not legally. In particularly egregious cases that can be professional misconduct.

You should be giving the client at least three options:

  1. Upgrading the current system;
  2. Doing it in ColdFusion; and
  3. Doing it in ASP.NET.

It's reasonable to advocate a particular choice that you're strong in or that you simply prefer but in doing so you can cross a line by misrepresenting the other choices.

After 12+ years in the software development industry, what you're saying just raises all kinds of red flags to me.

That all being said, it's really hard to comment on what the best choice is because we really don't know what the system is, what their constraints are (time, money, staged deployment, business, etc) and all those other things that do (and must) go into the decision-making pot (arguably it's more of a cauldron).

There might be soem compelling reasons to choose one over the others but, on the face of it, I'd either being doing further development in classic ASP or looking towards ASP.NET since they're clearly already a Microsoft shop. I wouldn't even be considering ColdFusion.

I should also point out that a complete rewrite is nearly always a mistake, especially if you can't do it in stages or some other piecemeal approach. While you're doing your rewrite the business is either stalled (waiting for the new code) or you're doubling your efforts (doing new development and maintaining the old). Deploying a whole new system is also has significant risk.

cletus
I got maybe three paragraphs into pretty much the same diatribe before I noticed your post. +1
Randolpho
Same deal, should be a limit on question length me thinks - good answer.
MrTelly
ColdFusion is neither legacy (CF8 is less than two years old, CF9 well under way, CF10 and CF11 already planned), nor proprietary - see OpenBlueDragon (GPL), Railo (free, soon LGPL), and the CFML Advisory committee for Opening and Standardising the language.
Peter Boughton
WTF?! .NET is COMPLETELY PROPRIETARY! If you want flexibility, look at this: http://www.adobe.com/products/coldfusion/systemreqs/And with MS losing market share to both Apple and Linux it's easy to see that .NET is a dieing language -just kidding, sorta ;)
anopres
The "proprietary" remark referred to the CMS system.
cletus
IMO .NET is a bad choice because it forces the Microsoft platform, but I agree with everything else you mentioned. Classic ASP is something to definitely stay away from though, since it has no future and was pretty crummy to begin with.
Wayne M
ColdFusion is not dead. http://stackoverflow.com/questions/234296/coldfusion-vs-php/235366#235366
Patrick McElhaney
If I could, I'd convert this whole office to LAMP/ROR and be done with M$ AND Adobe. The people above me feel there's too much invested in our proprietary software, and not enough experience among the staff to do so. At least I have outside consulting to get away from CF. :-)
Adam
A: 

Maybe not a direct answer to your question, but I hope you find it helpful anyhow. It seems to me that this not an opportunity that you would want to pursue. Perhaps it is more benificial to your company to find a partner who does have the right skills for the job and see if you can earn some money on a lead fee.

Florian
+1  A: 

I have done lots of classic asp development, and to be honest, PHP is a acceptable transition path. It allows you to run on Windows AND Linux. Since the database is MySQL, that won't be an issue.

On the site in particular, putting everything in one file is a perfectly fine method. (was there a PERL guy in the house before?) Breaks your IDE? Boo Hoo. Use a real text editor.

I've done asp classic with jEdit, and opened dozens of 15K loc files at the same time without any problems. Ah, but intellisense does not work. Granted, but I know classic asp well enough not to need intellisense.

So what it seems is that the system is poorly documented and too convoluted for your taste. You should just tell your client that they would be better served getting someone with more specific skills. It looks like they are going to get burned financially going with you.

Do the right thing: tell your client you don't know how to do it. They will thank you for it.

(PS: note that I speak from much experience and while I come off a little dry and cutting, it is only because I've been there and I've seen what happens when hard advice is not said.)

Christopher Mahan
I love PHP, it is not an option here. Tell the client I don't know how to do what exactly? We CAN continue maintaining the site, it would just be easier to standardize and not have to recode existing resources just for them.
Adam
+1  A: 

I'm not a fan of .NET either, but if your client specifically wants to use it, that doesn't stop you from using CFML.

You could consider trying BlueDragon.NET, which allows you to run CFML on the .NET platform, and is more or less compatible with CF7 - depending on how you've written your CMS, it may run with only a few tweaks.

And if your CMS is any good, having it run on multiple CFML engines is probably a good idea regardless of what you might end up doing for this client.

Peter Boughton
Doesn't BlueDragon .NET require an enterprise license to be able to compile the CFML into a java app?
Adam
Huh? BlueDragon.NET doesn't compile to a Java app, it runs on .NET (hence the name)BD.NET is a paid-for product (by New Atlanta), not to be confused with the GPLv3 openBD with runs on a JEE Servlet Engine (Tomcat/Resin/etc)
Peter Boughton
I haven't followed BlueDragon in a long time. Years ago they only had an alternative to the CF Server by running compiled CF apps. BD.Net sounds very cool and could be a great segway from some of our .NET clients into CFML
Adam
Yeah, BD used to perhaps be just "ok" but not necessarily considered a real alternative. However, in the past few years, both BlueDragon and Railo have become serious "heavyweight" CFML engines, and are definitely worth investigating.
Peter Boughton
+3  A: 

The first place I would look is in your current hosting contract. You should point out to hte client the advantages of sticking with you (happy with customer service, cheap/ongoing contract, whatever applies).

Now, make the case for redeveloping the site as opposed to updating the old code. A big selling point might be future upgradability -- if they want custom work done in the future, the same feature will be cheaper to develop on cleaner code in your preferred language. Also, point out that with an established codebase, you can deliver the initail phases/parts of the project faster, and show them that you will be starting with a good bit of the project done.

I would not really make a big deal about what language you work in, as most clients only care how that affects their hosting. They care about how fast, how cheap, and what features you can/will deliver.

Ben Doom
This is basically the approach we are going. I was hoping for something more concrete, thank you though!
Adam
+1  A: 

Numerous times in my career I've had to maintain a classic ASP application (I'm actually assigned to upgrade one right now). If you want to use ColdFusion to rewrite the application, go ahead.

However I will tell you that MANY times, when dealing with classic ASP applications, we have chosen to take a different route then a complete rewrite. Remember that you can use webservices to rewrite or upgrade portions of the app in ColdFusion and call those webservices from within the classic ASP application. This allows you to add functionality that might otherwise not be available in classic ASP or give a performance boost.

rip747
If our CMS was built more around CFC's I would totally agree with you, but to turn our existing software into a web service would require even more work. :-(
Adam
A: 

Ultimately you're passing the maintenance costs to the client correct? So play out all the viable scenarios from a financial point of view and let them choose. If it's difficult to find a Classic ASP developer that means those hourly costs increase. Rewriting it all in CF will be expensive relative to the maintenance mode and there are real risks in rewriting a project from scratch (especially if the client has a list of things they'd like to see improved/changed). If it's painful to you to support the app, it needs to be painful to the client, otherwise nothing will change.

hofo
Yup, meeting is tomorrow and we're giving them the #'s for the conversion and for the maintenance. We've outlined the fact that Classic ASP job pool is dwindling and now is the best time for them to convert considering the amount of changes they already want; plus looking to the future.
Adam