Fog Creek Software
Discussion Board




Platform for Commercial Webapps?

I want to develop a cross-platform commercial web application and it must run on Linux and Windows servers. This unfortunately eliminates ASP.NET. What are the other good choices?

- PHP
- Python
- JSP
- or something else?

I'm also talking about ease of deployment, licensing, pricing, etc. The webapp and its parent platform should be easy to deploy within an intranet environment by less technically inclined people.

I would probably want to sell source code separately at a higher support prices, so the source code should be compiled or at least encrypted.

What about FogBUGZ? What is it written in?

Anon
Wednesday, August 04, 2004

IIRC, FogBugz is written in ASP and then PHP code is somehow generated from that for other platforms.

Personally I'd go with Perl or mod_perl if you're very patient and want to learn all the nuances, and PHP if you aren't/don't.

muppet
Wednesday, August 04, 2004

Since I don't think I've mentioned it for a while, look at Zope. http://www.zope.org

Simon Lucy
Wednesday, August 04, 2004

PHP can be compiled if you get the Zend tools, and your customer has the Zend decoder installed on their server. There's experimental support in the bcode extension available at http://pecl.php.net

If you don't want to deal with the Zend tools, and you're really serious about distributing source separately from executable, I recommend C, using cgic from http://www.boutell.com/cgic/ I've had very good luck using that. The only downside is that installing executables as a web app under IIS is a royal pain. You could probably automate the pesky parts using a decent installer program, or creating your app as an ISAPI extension for your IIS customers.

Clay Dowling
Wednesday, August 04, 2004

Oh Hell, I missed the tail end of your post.  Sorry.

Personally I think selling the source code at a premium is silly and archaic, but to each their own.

muppet
Wednesday, August 04, 2004

ASP.Net isn't totally out of the question, if you can write a mono-compliant app: http://www.go-mono.com/asp-net.html

HaHa
Wednesday, August 04, 2004

If you want to write a bigger application, or you need/like to write object oriented software, go with Java/JSP. It's also the only of the platforms that has decent IDE/tool support - excellent actually.

Installation may take slightly more effort, but not much (just install Tomcat and that's it).

jz
Wednesday, August 04, 2004

If you are proficient with Python, take a look at Twisted and Nevow.

http://www.twistedmatrix.com

http://www.divmod.org/Home/Projects/Nevow/

Of course these are relatively obscure technologies compared to PHP, so if that's a concern and you need Linux and Windows compatibility, PHP is probably your "safest" choice.

AMS
Wednesday, August 04, 2004

Writing a web app in C... ouch! just a little masochistic eh?

I'd say the source code thing isn't so much of a big issue with web apps, anyone who's cheap enough to pirate your code isn't gonna pay for it anyway, and presumably you'd be mostly selling to businesses who'll want 'proper' commercial software with support.

Also if anyone tries to use your source code in their own competing web app - well it'll be obvious as they'll have to distribute it too. So just sue their arse.

Matt
Wednesday, August 04, 2004

I worked for an ISV that wrote everything in Java and distrubuted with Java.  All of you choices would be good but like other have said, use Java/JSP if what you are doing is big and complex.

Bill Rushmore
Wednesday, August 04, 2004

Also, if you're concerned about source code getting out- simple JSPs are fine... I usually precompile JSPs into Java servlet classes before deploying on to the client's server.

Obviously, there's java decompilers and such, but if you do the obfuscation thing, its a relatively safe bet that you are safe...

Beats doing a simple webapp in C

PopCulture
Wednesday, August 04, 2004

PHP seems to have more stability issues on Windows.  I agree with Muppet [a first] about Perl.

sysadmin
Wednesday, August 04, 2004

I'm also working on a web app, and I was asking the same question a couple of months ago.

For me it all comes back to Java. It's cross platform, tons of people already have the web containers or J2EE containers, and if your company grows you won't have a hard time finding people who can program in Java/JSP/J2EE.

It's by no means a perfect language or environment, but the pros outweigh the cons.

As for your source. Write all your business logic in Java objects (.class files) so they are compiled (i think you can even buy software that obfuscates them), and the only thing you'll write in JSP is presentation. If you don't correctly, there won't be anything of any value in your JSP's.

Here are some places to help you get started with JSP/Java:

http://www.onjava.com
http://www.theserverside.com
http://www.springframework.org

michael (michaelsica.com)
Wednesday, August 04, 2004

Edit:

"If you don't correctly, there won't be anything of any value in your JSP's."

Should have been:

"If you do it correctly, there won't be anything of any value in your JSP's."

michael (michaelsica.com)
Wednesday, August 04, 2004

Source code is not much of a concern. But what if people modify it on their own and still expect their modified code to be supported equally well? Is there any other workaround for this? How to know that a customer is not requesting support for the damage caused by his or her own modifications? And how to catch competitors copying the code?

I have experience in PHP. I'm personally inclined towards doing it in Python. I've looked into Zope and I don't seem to get it. Nevow seems good and similar to ASP.NET (on the very first glance) - let me take a further look at it.

I don't prefer JSP because its harder to deploy. At least for non-highly technically inclined people. C is a definite no, it would be just too hard doing in C.

Just wondering if FogBUGZ was ported using the same convertor written by an intern?

Isn't Python more cross-platform-ic than PHP? I mean PHP is more thought of as a Linux-specific platform. Probably the notion of LAMP might hurt Windows sales?

Anon
Wednesday, August 04, 2004

"I don't prefer JSP because its harder to deploy."

Am I wrong or not on that one? What about all the JSP vs. ASP.NET benchmarks which showed JSP even slower than classic ASP? Or was that in early 2000s?

Anon
Wednesday, August 04, 2004

A Java application is not harder to deploy for sure. Everything is packaged into one file to drop in the application server's directory of choice.

It may, however, be a steeper learning curve to get started with a Java application. Of course you'll have to pick up Java language basics and also learn the ins and outs of your IDE of choice.

jz
Wednesday, August 04, 2004

PHP is no more Linux-slanted than Perl, and Perl does all right in the win32 world.  Granted Perl has more win32 libraries than PHP does.. but Perl is also used for much more than web development, while PHP not-so-much.

PHP is cross platform enough.  I haven't encountered anything (yet) that I can't do on win32 that has turned out to be a dealbreaker.

muppet
Wednesday, August 04, 2004

All those languages will run fast enough, what you need to worry about is ease of development and platform independence.

As for installing a JSP container. Tomcat is pretty easy to install, and it's free. JBoss and Jonas are also free, but I don't know how the installation is. Any time you are selling an app that runs on the server, chances are a "computer guy" will be the one doing the install. Installation should be as easy as possible, but you can at least assume the person installing the software knows the basics of a computer.

By the way, if you know PHP. Your best bet might be to write in PHP. Learning another language takes time, and while I'm not a fan of PHP, that language isn't going away anytime soon.

michael (michaelsica.com)
Wednesday, August 04, 2004

"Source code is not much of a concern. But what if people modify it on their own and still expect their modified code to be supported equally well? Is there any other workaround for this?  How to know that a customer is not requesting support for the damage caused by his or her own modifications?"

Our company does a simple md5 checksum of every file in our asp app.  If any of the them are different from the version they bought.  If there are *any* differences, we do a simple diff to see what they are and then declare them outside their agreement.  Of course, all of this can be alleviated as long as they pass a copy of all updates back to us...


"And how to catch competitors copying the code?"

There are tools that will go through and compare the logic.  Realistically though, it's normally not a viable option.

KC
Wednesday, August 04, 2004

As far as I know FogBugz is written with Ada and some Modula II scripts and is hosted on VAX.

Jason
Wednesday, August 04, 2004

I have a similar goal as the O/P....so this thread is interesting to me personally. 

I am looking at PHP, but I want to be able to separate my middle-tier business logic from the web page HTML.  Platforms that use ASP alone against a database mean you have spaghetti code in your client.  Is PHP the same?   

Can I use PHP with say, a Java middle-tier? 

Rambling further: my current "expertise", haha is in .NET/C# and Java/JSP.  I feel my resume is missing Perl/PHP since my specialty is web applications and a lot of companies seem to want this experience. 

Thanks.

survivor
Wednesday, August 04, 2004

PHP can lead to the embedded spaghetti code problem of ASP, but it doesn't have to. My PHP apps usually put all of the logic into a series of classes, the user interface in another, and the actual HTML in outside template files.  There are a number to choose from in the PEAR repository, although a previous inquiry about them on this board game a rather unanimous vote in favor of smarty.

As for the C being hard, it's no harder than anything else if you know the language. Compared side by side with ASP.NET and server side controls, I find C to be easier, and I am familiar with both.  It also has -great- IDE and tool support, owing to the fact that the language is nearly thirty years old.  Just because a lot of us crusty old farts choose to use vi and a command line doesn't mean that they're the only option.  Still, it wouldn't be my first recommendation except that it's the only solution that separates source and executable. I use it for my work because of its reliability and flexibility, but it's definitely not for everybody.

Clay Dowling
Wednesday, August 04, 2004

Nobody else has mentioned it, so consider this the obligatory "What about Delphi?" post.

Delphi includes several frameworks for building web applications, and you can use Kylix to compile your Delphi applications on Linux.  Delphi is more expensive than some of the options previously presented, but most people Delphi users say it's worth every penny.

Also, it should be noted that getting Kylix applications to run has gotten difficult on some more recent Linux distributions, but is still possible.

Anyway, it's worth checking out if you want a cross platform, natively compiled application.


Wednesday, August 04, 2004

The reason people have a negative view of J2EE, is way back in the day, everyone did their projects using EJB.  Now, if you know anything about EJB, your cringing right now.  Before containers advanced, if you accessed an EJB in the same JVM, it would still do an RMI call.  Ouch.  One of my all time most memorable "JOS" posts went something like this:

user: "I switched my app over to use EJBs and its two times as slow".

response: "You could get rich writing a book on EJB performance.  Twice as slow is a lot better than most get."

Most modern J2EE apps avoid EJBs unless completely neccessary.  Performance won't be an issue at all.

vince
Wednesday, August 04, 2004

Clay, man, if you're a 1-man shop thats cool and all, but maintenance costs, man:

"As for the C being hard, it's no harder than anything else if you know the language."

I'll give you 100 competent JSP/Java folks for every 1 (nearly competant) C guy who writes web apps. And any one of them will go for half the hourly rate of the C guy.

"Compared side by side with ASP.NET and server side controls, I find C to be easier, and I am familiar with both.  It also has -great- IDE and tool support, owing to the fact that the language is nearly thirty years old.  Just because a lot of us crusty old farts choose to use vi and a command line doesn't mean that they're the only option."

theres a lot of competant JSP/Java Servlet kids that can be had for a LOT cheaper than you old gurus on C!

"Still, it wouldn't be my first recommendation except that it's the only solution that separates source and executable."

.NET compiles to a .dll, and JSP compiles to a .class

"I use it for my work because of its reliability and flexibility, but it's definitely not for everybody."

Don't get me wrong, I have mad respect for anyone who can do C- much less anyone who does web stuff in C- but it really shouldn't be for anyone!

If you've got your own C-webapp framework written over the course of many years, thats one thing... but to advise a noob to use C in a webapp ... thats whack, yo :) 

PopCulture
Wednesday, August 04, 2004

www.rubyrails.com

Peter
Wednesday, August 04, 2004

To add to the post a couple messages up that mentioned Delphi, the two most likely Delphi solutions would be using third party libraries of Intraweb or ExpressWebFramework.

Intraweb is a web development framework that is more visual and RAD than ASP.NET, essentially tries to make developing a web app as much as possible like developing a Win32 app using forms.  Intraweb is available for Delphi and Kylix, so it's cross platform.  Also available are versions for ASP.NET (not cross platform) and for Java (cross-platform).  Intraweb is highly regarded framework within the Delphi community, have no idea how it's selling in ASP.NET and Java worlds.
http://www.atozed.com/intraWeb/

Second option is to use Developer Express' ExpressWebFramework.  Sort of runs second in popularity to Intraweb within the Delphi world.  Again, it's available for both Delphi and Kylix.  ExpressWebFramework is essentially a clone of the ASP.NET framework for Delphi.  Similar idea of having code separated from the web form by having it in a separate unit.  http://www.devexpress.com/?section=/products/VCL/EWF

One cool thing about both Intraweb and ExpressWebFramework is that they can be compiled into standalone webservers.  Makes deployment super-easy, can be as simple as a single executable. 

Herbert Sitz
Thursday, August 05, 2004

*  Recent Topics

*  Fog Creek Home