Fog Creek Software
Discussion Board




Which language for web app if trying to sell?

Hello Everyone,

I am trying to decide which language to develop a web application with. The following is currently flowing through my mind...

A)
I know Coldfusion better than any other web development language. I love the syntax, and it's easy-as-hell nature. (Such as Datasources, the Application.cfm file, and the things that make the development easy ... cfoutput, cfsavecontent...) It has also been re-written in Java. CF is literally a J2EE application, with good Java integration. It has become a very cool platform. CFMX isn't perfect, but it is still very powerful. BUT, if an app is written in CF, it would be a very hard sell because you'd have to buy the CFMX server. The standard edition is $1300....

B)
I like Java, but I've never done any serious development in it (still learning J2SE, just book stuff so far). I've heard that JSP 2.0 has a more tag-like nature so that would be good coming from a Coldfusion background. But I've played with Tomcat and JRun and honestly their complexity is intimidating. And I'm not sure if installing Tomcat or JBOSS (Free JSP/J2EE containers) and then figuring out how to deploy a web app in those environments would put off potential customers.

C)
I started writing web sites in PHP, but I haven't touched the language in about 2 years. To be honest with everyone, I really was quite glad to move away from PHP. The syntax is ugly. The move away from the global vars in the middle of a version was very bad (they changed something significant on like version 4.1.2.3.2.3 or something ;) ). I also heard their OO support is terrible. ... I just don't view PHP as a serious, "enterprise-level" platform.

D) ASP.net ... It's not cross-platform, so it doesn't enter the picture.

Well, I'd appreciate any conversation that brews from this concerning CF/JSP/PHP as a language used to build a product that would be sold.

A) I like how quickly I can develop in CF (and it's cross platform), but the price barrier will probably kill the product.

B) I like the cross platform and free JSP or J2EE servers (Tomcat, JBoss) that are available, but I'd have to learn a new language and I'm scared the complexity will be a turn off.

C) I like the cross platform and free nature of PHP, but I just don't like PHP (don't flame me too hard over this, everyone has there personal likes/dislikes, and PHP just rubs me the wrong way). If you can convince me that I'm crazy on this point, I'd love to hear the argument.

Thanks for reading this,
-michael.

michael sica (michaelsica.com)
Wednesday, March 24, 2004

perl

perl programmer
Wednesday, March 24, 2004

It wouldn't hurt to take another look at PHP.  The last two years have seen a lot of improvements.  If you don't like it then you don't like it, but two years is a long time and some of the things that turned you off before may have been changed.

Emperor Norton
Wednesday, March 24, 2004

Perl?

Yes, definitely!

Ignore my ignorance
Wednesday, March 24, 2004

CF rules.

Which language/platform would be quickest in enabling you to get a quality product with features that would sell out into the market?  ... CF?

i like i
Wednesday, March 24, 2004

PHP has more mindshare than ASP and ASP .NET.

However, you have to think about what kind of mindshare.

People who paid money to run an ASP-capable server are more likely to pay for your product than people who run PHP for free.

Johnson
Wednesday, March 24, 2004

There is probably a reason why Joel first written his FogBugs app using ASP.

And that reason is probably a marketing reason.

Johnson
Wednesday, March 24, 2004

You might also consider the deployment availability of your chosen technology.  If you will host it yourself then it's no issue at all (except for licensing costs of course),  but if you are going to host your application using some web hosting service, then this will be a mayor issue.

For instance, most cheap web hosting services have PHP support, and ASP is also quite widely available.
Java on the other hand, is almost nonexistent, as Java web apps are mostly developed within companies, and hosted on their own servers.

I had toyed around with Python for a home web app, but found no hosting services, so I began looking at PHP, but found it really crute and primitive and gave up the whole thing (I am an OOP nut, so PHP won't cut it for me).

But a while ago I found two quite unexpensive web hosting services with Python support, so I will probably use one of them later on, when my web app is complete.

Ruby is also getting more popular by the day it seems. It was really easy to find web hosting services with Ruby support. But in my case, I'll settle with Python (and MySQL).

Gabriel Lima
Wednesday, March 24, 2004

Coldfusion is really hard to maintain and scale from my opinion.  And, if your going to use coldfusion MX, you might as well just use standard j2ee/jsp 2.0, so you can use JBOSS instead of the CFMX App server.  Jboss can be very intimidating.  While the java language is very simple and straightforward, setting up a j2EE app can be a pain.  My best advice would be to find someone whose done it before, and see if they can tutor/train you.  I think once you get the basics, it should be easy from there. 

vince
Wednesday, March 24, 2004

I would suggest that you give PHP another look - it has changed significantly in the past couple of years, with quite an improvement in the feature-set and implmentation. It has become enterprise-ready, so to speak.

Although perhaps a little biased, you might want to have a look at this write-up over at Zend that discusses the merits of PHP over Java:

http://www.zend.com/zend/art/php-over-java.php

And besides, like other readers have pointed out, your choice of technology would also be dependent on your customer base.

If someone is willing to shell out enough for a CFMX server, you might as well write it up in ASP.Net - your development time would be reduce significantly - ofcourse, that is assuming your potential customers will be Wintel users.

Having written significant amount of stuff in Perl, I would strongly discourage you from using Perl for a large commercial grade application simply because maintainability over extended periods of time becomes a pain.

And if you are particular about OO, then give Ruby or Python a look.

Karthik Narayanaswami (metlin.org)
Wednesday, March 24, 2004

When you say you're trying to sell a web app, I immediately think intranet.  I know that *nix/Apache dominates the internet, but doesn't Windows/IIS dominate the in-house/intranet market?

Also, the companies that I've seen running their intranets on *nix servers are either large or tech oriented.  The majority of small to mid-sized companies I've seen are running Windows.  (This is just my experience - I'm not a market researcher)

So, I would find out more about your target market and write it in something that's native to the environment.

Nick
Wednesday, March 24, 2004

I'd find a developer that you felt comfortable collaborating with or directing.

Simon Lucy
Wednesday, March 24, 2004

"If someone is willing to shell out enough for a CFMX server, you might as well write it up in ASP.Net - your development time would be reduce significantly - ofcourse, that is assuming your potential customers will be Wintel users."

how would ASP.Net be quicker for him to develop, than CF?

I thought he already knew CF..

i like i
Wednesday, March 24, 2004

"PHP has more mindshare than ASP and ASP .NET."

Cite?  :)

Philo

Philo
Wednesday, March 24, 2004

It depends..

Scale of the application (how many clients, how much tweaking and tuning will you need/be able to afford)
What sort of things you want to do
What sort of install support you have/need

PHP is good, it's come along wonderfully in the last few years (I've been using it since the early 3.0x days) and it's quite simple to pick up. You mix HTML with logic in the simplest case (which I personally don't like for large projects), but if you install a templating system like Smarty, you can work around that. Module support is good, SAPI and Apache mod_php are excellent and you have products like the Zend optimizer and encoder.. You're not locked into a pure Windows environment, which can be seen as a plus (if you colo, I personally know more outfits offering Linux/Unix webservers than IIS, YMMV)

Object oriented stuff isn't that marvellous in PHP yet, although it's certainly usable :) 5.0, which is in beta, is more java-like in how it does classes and objects.

Coldfusion, I've just dabbled with, so I am not qualified to comment.

Java, yes, you're right, there is complexity. Most of the time, you don't need that level of complexity, but if you need something that scales right upto hundreds or thousands of connections, I'd probably pick a JSP/servlet combo (again, a personal choice).  There is a steep learning curve, a lot more buzzwords than anyone should care about, to be honest. But when you come right down to it, Java does have the capability to produce well organized maintainable code. It's easier to write neat Java than neat PHP for me, although this may simply be a matter of discipline :)

Perl is another option. If you think PHP syntax is ugly, though, then maybe Perl isn't what you want :) Although Slashdot and a few other large scale sites run on mod_perl without too many creaks and groans :)

ASP.net = well, I haven't used this much myself. I haven't worked much on Windows based servers, to be honest, and that might be ASP.net's biggest drawback. If you need to scale or move onto a Unix platform, you're toasted :) You need to kludge around writing a translator (like Joel did for Fogbugz) or you need to live with IIS and a Windows server. I know there is some complexity in ASP.net too (I have some nightmares over custom composite controls), so you can't say it's a snap to use, but at least the development environment rocks.

My 2p

deja vu
Wednesday, March 24, 2004

I know of no hosting provider that doesn't support cgi/perl. So that would give you the largest market. However you probably know one language pretty well, and the others just a little, so I would recommend the language you know the best.

Matthew Lock
Wednesday, March 24, 2004

You could try Intraweb, from AToZedSoftware.com.  Compiles to self running standalone server exe on any http port, with Win32, Java, .Net and Linux as options.  I've used it for years and love it. On IIS and Apache win servers this means you only have to distribute one. royalty-free executable, so your source code is safe and your customers can deploy it themselves quite easily.

Joe Hendricks
Wednesday, March 24, 2004

The instability in PHP development drove me away from it a couple of years ago, and moved me to C/C++ development for web applications. That route is only advisable if you're already comfortable with C and C++. Without doubt the CGI environment is a real pain to debug at times.  I was already comfortable with the languages when I made the jump, and I had a good team behind me that already knew how to do it.

I'm working in ASP.NET currently, and I'd like to caution you against it.  You can definitely do some really great stuff with the platform, but configuration and deployment complexity is a lot of fun. I'm finding C/C++ CGI more fun to debug.

Unless you're willing to move to C/C++, I'd recommend using PHP out of the options that you've listed. It might be ugly, but it's the most deployable of the options that you listed. The Zend tools also allow you to compile and deploy your product without revealing your source code. 

Clay Dowling
Wednesday, March 24, 2004

I'm using Java.  If its just a web app then its not hard to reduce the complexity to where a regular system admin can configure the app server and deploy your application.  Or you can go even further and integrate you app with one of the free app servers and distribute them together.

MT
Wednesday, March 24, 2004

I'd have to go with "it depends" as well.  A lot of it depends on your product's goals and market placement.  How many customers do you expect to sell to?  How quickly will this need to scale?  How many simultaneous users will each of these customers have online at once?

I was the lead developer for a few years on a commercial application built with ColdFusion.  Our annual license fee started at $15,000 (and went up from there), so the extra cost for the ColdFusion Server was no big deal to our customers.

The biggest benefit to ColdFusion was also the biggest headache.  We sold our product using a "community source" model -- licensees would get a copy of the source code, and could do whatever they pleased with it.  About 50% of our customers paid us consulting fees to customize the software.  Another 20% used their own staff to customization it.  Because it was in ColdFusion, it was very easy for them to get the hang of it, and they took advantage of this at every opportunity.  Some of these customizations were incredibly extensive.  End users would often have no idea it was based on our platform.

The downside to this was that it made technical support and software upgrades literally *impossible*.  Our support reps had to be extremely familiar with every little change we made to a customer's installation.  When we released new versions of the software, we had to manually diff and merge the source code for each customer.  And for $15-100k per year, our customers demanded a lot of hand-holding in these areas.

Anyway, this doesn't really answer your question.  There are a number of factors you should consider:

1.) What technologies are your development team most confident and proficient in?  This is a more-important factor than you might realize.  If you choose Python as your platform but don't know it very well, you're not in a good position.  Your product will be buggy, or featureless, or both.

2.) Application server licensing fees -- how will this impact your sales?  (If you're selling a $99 app, the ColdFusion MX licensing fee might turn a lot of customers off.)

3.) Ease of installation and maintenance -- do you want this to be a turnkey product with a simple installer, or do you expect customers to know how to install and maintain their application servers themselves?  Tomcat and JBoss have the perception of being difficult to install.  You could support ASP or ASP.NET a lot easier, because IIS literally installs itself on a Windows server.

4.) How much customization do you want to support, or do you NOT want to support?  If you want to release your product as open-source, and make it easy to customize, Java may be too difficult for your customers to make little GUI changes.  If you want it completely closed-source, ColdFusion templates can be "encrypted" but the encryption is very weak, so that might not be a good idea.

5.) What operating system platforms do you want/need to support?  I'm all in favor of cross-platform work, to support the largest number of possible customers.  For FogBugz that makes perfect sense -- very few people install a dedicated server just for that.  But if I was selling an enterprise application again, I'd recognize that it would be on a dedicated server -- or three -- and they'll probably install whatever we tell them to.  And supporting fewer platforms will make your product substantially easier to test and support.

Ryan
Wednesday, March 24, 2004

I like PHP just fine, but I'm not a software programmer, so I don't really know anything about programming anyway ;-)  I have been raised on procedural programming in ASP and PHP, and as I have recently started a very serious commercial project, which is also a launching pad to starting my own development company (eventually moving into software, hopefully)... we made a choice to use PHP mainly for one reason:

Cheap.  *Unlimited* (we'll see about that) bandwidth and disk space, plus MySQL support, for only $10 a month.  You can get ASP hosting pretty cheap too, but usually ASP/Win hosts charge you extra for database support like MSSQL.  MySQL is free, and it can handle pretty decent sized chunks of data and multiple connections.  A lot of ASP hosts will give you Access for free, but that's worthless as its limited to 10 connections.

I'll say that I am glad we chose this for our purpose, because we are writing it with as much convention and structure as we can.  Moreso as a learning process to prepare to be good programmers in general.  We are doing it in as much of an OOP approach as PHP will allow us (PHP5 will be much better for this).  But we aren't technology bigots.  We have no hatred for MS, nor any irrational love for open-source (although we appreciate the movement and try to support it when it makes sense.)  Its just a matter of using the right tool for the right job.  I will definitely choose PHP over classic ASP/VBscript any day.  So our choices in the future will be mostly PHP for small to medium-sized apps, and probably .NET/C# for large enterprise apps (if we get big enough to get those jobs).

In my experience in the corporate sector, they build Java stuff in house, and they almost exclusively buy ASP.  They are scared of buying open source or PHP apps because they usually don't come with guarantees or support.  That is the biggest factor to being able to really sell a web app.  Can you guarantee it/offer comprehensive support?

Slicky
Wednesday, March 24, 2004

Lately I've come to the conclusion that the best bet for a web app is to break our the web UI and the application itself using web services.

In this way you can handle the heavy lifitng with Java or .NET or C++ and let one of the many of the lighter-weight scripting languages handle the UI.

If this is done well, I see no reason not to have multiple front-end versions of your web app available - anything that supports a web services client. 

Of course, the big drawback to this is the knowledge and maintenance overhead.  In shared hosting situations this is probably less than ideal.

Sassy
Wednesday, March 24, 2004

I should also say that PHP works well for us because we are not selling a shrinkwrap web app, we are creating a service on the web, so no one has to buy the technology, they just have to have a need for the service.

If I was trying to sell a shrinkwrap, I don't know that I would use PHP.  It would depend on the product.

Slicky
Wednesday, March 24, 2004

Slicky, don't discount yourself as "not a software" developer because your background is in web-development.  It ain't where ya from, it's where ya at.

:)

<monetaryinput value="$0.02">
Anyhoo, for the cross-platform issue, if you had any other reasons to lean toward ASP.NET (it's a dream to develp in), you could risk banking on the Mono project becoming more useable by the time you're approaching 1.0.  I met with a Novell (new owner of Ximian) Sales Engineer a few months ago who claimed they're making that a priority (they *need* it to work for the application server they're promising to have available with NW7).  Even in a windows environment ASP.NET's still got some deployment annoyances, but if you're target market is an intranet scenario, some of them would be mitigated.
</monetaryinput>

MacSqueeb
Wednesday, March 24, 2004

Thank you all for the responses!

This is one of the more intelligent, "which language should I use" threads I've read!

-michael.

michael sica (michaelsica.com)
Wednesday, March 24, 2004

Wow, some weird responses imho. Someone moved from PHP because of instability and then moaned the complexity of debugging cgi apps. Odd. Why did Joel use ASP because he is a M$ grunt which is the same reason Philo asked proof of PHP over ASP (in mindshare I think). I'd start here http://news.netcraft.com/archives/web_server_survey.html and places like that to get numbers rather than rely on heresay.

I started doing Perl for web apps. I then went to PHP. I don't do my stuff in the inline method where every page is an app and hundreds of pages are included and sling globals all over. I do it in a modular way (always used strict and warnings in Perl) for ease of evolution. Don't blame the language for the way some people (most in the case of PHP) use it.  Funny that the supposed instability that someone mentioned did not stop Yahoo.

Deploying Perl apps is no easy task. PHP is easy, the easiest I've seen and requires nothing proprietary. Perl is harder than PHP.

My vote is with PHP for market share (good point though about intended audience, M$ might rule intranet), for ease of deployment, for base of those who know it (and it's easy to learn).

Me
Wednesday, March 24, 2004

For a good appserver, look at Apple's WebObjects.  It's J2EE based, and can run in your favorite appserver.  It's got built in load balancing, MVC, etc.  $700 isn't free, but isn't bad.

I guess it'll all depend on the sale price of your app :-)

H. Lally Singh
Wednesday, March 24, 2004

  Take a look at e-Gen ( http://www.egen.com.br ). It's a FREE code generator for web applications based on the Struts framework.

  I never used it, but it looks pretty nice.

Ricardo Antunes da Costa
Thursday, March 25, 2004

*  Recent Topics

*  Fog Creek Home