Is it difficult to change to LAMP/Java from ASP/.NET? Is the open source thing really sticking?
January 9, 2004 7:40 AM   Subscribe

I have been looking at changing my web development focus from Windows/ASP/.NET to LAMP(Linux, Apache, MySQL, PHP/Python/Perl) because my gut is telling me that this is where things are going. Oh, Java should be in there as well.

What's the skinny on LAMP in the real world (Netcraft surveys aside)? Is it difficult to change to LAMP/Java? Is the open source thing really sticking?
posted by grefo to Computers & Internet (14 answers total) 1 user marked this as a favorite
Switching is actually pretty straightforward. The nice thing about the open source world is that there are a ton of free helpful resources out there to assist you.

'Course, there's something to be said for windows/.net and whatnot -- it's always good to know a wide variety of platforms and languages if you want to work. In addition to the standard assortment of websites out there, there's probably a local linux users group in your area. While the folks who go to these meetings aren't necessarily the hippest group of individuals (myself included, I guess), you might be able to connect up with some likeminded individuals who would like nothing more than to get you hooked on linux.
posted by ph00dz at 8:11 AM on January 9, 2004

I developed under the Windows / ASP / Commerce Server (SiteServer) / MSSQL2k umbrella for several years. About a year ago I switched over almost exclusively to a LAMP environment.

I find that PHP is far superior to ASP for most websites, the performance is better, the software is much much much cheaper, and ramping up from a shared hosting environment to dual production boxes with failover was pretty straightforward (except for some quirks with an internal tool).

I've also had exactly zero sites go down because of things like viruses, hack attempts, excess load, etc. Under windows/asp I had several sites that had to be rebuilt from old backups because of serious virus infections.

Also, it's nice not to be beholden to Redmond. Read this for more on sharecropping.

Open source tools aren't for everyone, but they were certainly perfect for me.

I guess the big question I have for you is: why are you thinking about making the switch? Are you interested in a different Dev environment? Is you client interested in making a switch? Did you get your ass handed to you by the BSA?

Out of curiosity: what do you envision your dev environment looking like? Apache / mysql under windows?
posted by bshort at 8:39 AM on January 9, 2004

Response by poster: I think the biggest reason for making a switch has to do with affordability, either for myself or a client. LAMP is more or less free for me, and quite inexpensive for small businesses (less than 100 people). The second biggest reason has to do with a point you touched on: beholden to Redmond (I'm not anti-MS, just frustrated).

As for myself, the environment I use currently is XP/Apache/MySQL/PHP (XAMP?) and I want to add a dual boot to Linux (still figuring out which distro).
posted by grefo at 9:12 AM on January 9, 2004

You might want to consider OSX for your dev environment. It'll play nicer with your *nix production servers than Windows will, and you'll be able to match up your dev and production configurations pretty closely.

I recently did the Switch, and I couldn't be happier. Having a real bash shell, along with Aqua is really spiffy.

So are you looking to focus on web apps? Or do you have a hankering for desktop development as well? Do you know PHP already?
posted by bshort at 9:25 AM on January 9, 2004

What are people's experience with LAMP versus .NET in terms of database scaling? We have just implemented a PHP-based application with an ever-growing database, and a vendor is telling us that in the long term we should look at .NET because it will scale better. I am skeptical but was wondering what others' experience was.
posted by tranquileye at 9:38 AM on January 9, 2004

Response by poster: I've thought about OSX, but for now I am committed to the PC.

My focus is web apps, and I am learning PHP.

And what tranquileye said; how does LAMP scale?

For what it's worth, I was initially impressed with .NET when I saw a presentation a couple of years ago, but when the company I was working for couldn't afford the licensing (it's a large company owned by a larger company that had been hit by MS licensing complaints) they couldn't use it. But I look at available jobs for .NET/et al., it's mostly for contract firms hiring for MS.

BTW, I live near Redmond, if that matters.
posted by grefo at 9:48 AM on January 9, 2004

Learn PostgreSQL too, not just MySQL -- two different databases with different strengths. Most of the critical business apps I've seen run on Postgres. But then, we run a Postgres shop...

There are also tons of Oracle customers who are tired of the pricey licenses and are investigating Postgres. It can't always be done because Oracle has features that Postgres doesn't, but at least 50% of the time, the client doesn't use those features anyway.

And anyone who can afford Oracle licenses can afford to pay you to move them to an open solution.

Re: scaling. PHP scales really well; not as well as Perl but then, how many Amazons are you building? PHP is fine. Yahoo uses PHP extensively.

Scaling of databases: MySQL is fast with simple searches but breaks down with complex searches. Under heavy server load, MySQL slows down and then dies. Really, it falls over. Under heavy load Postgres slows down but it doesn't die. I remember reading a performance test about this a few months ago but don't have the link handy. If anyone wants it, I'll dig it up later.

We've 3 clients running PostgreSQL and they handle in excess of 240,000 transactions per hour. And do a search on the Two Micron Sky Survey. They're taking pictures of the sky and storing the catalog in Postgres. We're talking terabytes of data. Pretty scalable.
posted by Tacodog at 10:01 AM on January 9, 2004

The only disadvantage to PHP (in my experience) is the difficulty of separating concerns. If you want three different interfaces for the same data, you have to build three separate interfaces. At my workplace we're using Apache Cocoon instead. It's a framework for building Web apps with Java, XML, and XSLT. Cocoon makes it easier to separate logic and presentation from your content by allowing you to flexibly add transformation steps to the pipeline that generates a page.

Cocoon's still under heavy development, so there are often two or three competing implementations of any one feature, none of which are thoroughly documented. Still, if you want to try something on the cutting edge, it's a neat technology. I've built several large applications using it and they perform well.
posted by hyperizer at 10:23 AM on January 9, 2004

This is how well LAMP scales. Also states some of the strategies used to overcome scaling problems.
posted by SpecialK at 11:12 AM on January 9, 2004

Is the open source thing really sticking?

If you go just by market share in the real world for deployed apps, the question might be whether Microsoft's platform is really sticking on the web. I say that as someone who's developed on MS platforms for over 10 years. Almost every project or every platform has a use for a LAMP-based component, while very few projects *require* any of the elements that the (admittedly excellent) .NET platform offers.
posted by anildash at 11:47 AM on January 9, 2004

here's the link I referred to above.
posted by Tacodog at 1:20 PM on January 9, 2004

The only disadvantage to PHP (in my experience) is the difficulty of separating concerns. If you want three different interfaces for the same data, you have to build three separate interfaces. At my workplace we're using Apache Cocoon instead. It's a framework for building Web apps with Java, XML, and XSLT. Cocoon makes it easier to separate logic and presentation from your content by allowing you to flexibly add transformation steps to the pipeline that generates a page.

This is only the case because:

1) A lot of PHP applications that are published online are small, simple systems that work well under a procedural approach; oop would add unwanted overhead.

2) A lot of the PHP programmers around, especially the ones who publish free software, are beginner-to-intermediate programmers who completely disregard (or are unaware of) the concept of layered application development.

so PHP is viewed the way you just described it.

PHP has Object Oriented support (which is going to skyrocket when version 5 comes out shortly; think Java functionality), and it is fully possible to write the kind of code you're talking about. It's a matter of the programmer, not the language in this case.
posted by tomorama at 2:47 PM on January 9, 2004

What tomorama said. As I PHP beginner, I just threw code into the HTML and made tag soup. Later, I took a few shots at building templating engines myself, which were reasonably succesful, and then there's smarty ....

Scaling: by and large, your language choice has nothing to do with how well something scales. The real contraint is what level of support language libraries have for proper architectures. Again, the default and uneducated way is probably the most prevalent way for PHP -- use persistent connections. This is efficient for a website with a small number of connections. It scales horribly. You want to look into connection pooling options for PHP or for any language you want to scale well. Including Java. : )

The PHP Scalability Myth is a good article to digest if you're interested. It covers the points I did and a few more. Because of PHP's widespread amateur usage and because it is in fact interpreted more slowly than Java's bytecode is, it's gotten a bad rap. But architecture matters more than language, and that's up to the system designer, and PHP's tools are up to the job.
posted by namespan at 5:53 PM on January 9, 2004

tomorama is totally right. A lot of projects that I've been brought in on were built by people with no real idea of how to leverage the OO features of PHP, although it should also be pointed out that PHP does not have the full range of object oriented features. It looks like PHP5 will flesh out some of these holes.

To address a question way up the page: yeah, PHP scales pretty well. Usually DB access turns out to be the biggest bottleneck, although depending on what you're doing, a shared environment can be brought to its knees if your memory requirements are high.
posted by bshort at 7:27 PM on January 10, 2004

« Older IE Favorites   |   MSIE for Mac 5.2.3 Not Saving Preferences/Cookies... Newer »
This thread is closed to new comments.