DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
The Latest "Software Integration: The Intersection of APIs, Microservices, and Cloud-Based Systems" Trend Report
Get the report
  1. DZone
  2. Coding
  3. Frameworks
  4. LAMP Is Dead! Long Live (Perl) Web Frameworks

LAMP Is Dead! Long Live (Perl) Web Frameworks

The LAMP web development stack doesn’t mean anything anymore. It's at once too specific, too broad, and leaves out other non-JavaScript back-end languages/frameworks.

Mark Gardner user avatar by
Mark Gardner
CORE ·
Oct. 05, 21 · Opinion
Like (7)
Save
Tweet
Share
9.83K Views

Join the DZone community and get the full member experience.

Join For Free

LAMP - web development stack

Twitter recently recommended a tweet to me (all hail the algorithm) touting what the author viewed as the "top 5 web development stacks."

Top 5 Web Development Stacks

  1. MERN (MongoDB, Express, React, Node.js)
  2. MEVN (MongoDB, Express, Vue.js, Node.js)
  3. MEAN (MongoDB, Express, Angular, Node.js)
  4. PERN (PostgreSQL, Express, React, Node.js)
  5. LAMP (Linux, Apache, MySQL, PHP/Python/Perl)

What is your pick?

JavaScript/Node.js options dominated the four-letter acronyms as expected, but the fifth one surprised me: LAMP, the combination of the Linux operating system, Apache web server, MySQL relational database, and Perl, PHP, or Python programming languages. A quick web search for similar lists yielded similar results. Clearly, this meme (in the Dawkins sense) has outlasted its popularization by tech publisher O'Reilly in the 2000s.

Originally coined in 1998 during the "dot-com" bubble, I had thought that the term "LAMP" had faded with developers in the intervening decades with the rise of language-specific web frameworks for:

  • Perl (e.g., Catalyst, Dancer, Mojolicious)
  • PHP (e.g., Laravel, Symfony, Zend/Laminas)
  • Python (e.g., Django, Flask, web2py)

Certainly on the Perl side (with which I'm most familiar), the community has long since recommended the use of a framework built on the PSGI specification, deprecating 1990s-era CGI scripts and the mod_perl Apache extension. Although general-purpose web servers like Apache or Nginx may be part of an overall system, they're typically used as proxies or load balancers for Perl-specific servers either provided by the framework or a third-party module.

Granted, PHP still relies on web server-specific modules, APIs, or variations of the FastCGI protocol for interfacing with a web server. And Python web applications typically make use of its WSGI protocol either as a web server extension or, like the Perl examples above, as a proxied standalone server. But all of these are deployment details and do little to describe how developers implement and extend a web application's structure.

Note how the various four-letter JavaScript stacks (e.g., MERN, MEVN, MEAN, PERN) differentiate themselves mostly by frontend framework (e.g., Angular, React, Vue.js) and maybe by the (relational or NoSQL) database (e.g., MongoDB, MySQL, PostgreSQL). All however seem standardized on the Node.js runtime and Express backend web framework, which could, in theory, be replaced with non-JavaScript options like the more mature LAMP-associated languages and frameworks. (Or if you prefer languages that don't start with "P", there's C#, Go, Java, Ruby, etc.)

My point is that "LAMP" as the name of a web development stack has outlived its usefulness. It's at once too specific (about operating system and web server details that are often abstracted away for developers) and too broad (covering three separate programming languages and not the frameworks they favor). It also leaves out other non-JavaScript back-end languages and their associated frameworks.

The question is: what can replace it? I'd propose "NoJS" as reminiscent of "NoSQL," but that inaccurately excludes JavaScript from its necessary role in the front-end. "NJSB" doesn't exactly roll off the tongue, either, and still has the same ambiguity problem as "LAMP."

How about pithy sort-of-acronyms patterned like database-frontend-backend? Here are some Perl examples:

  • MRDancer: MySQL, React, and Dancer (I use this at work. Yes, the M could also stand for MongoDB. Naming things is hard.)
  • MRMojo: MongoDB, React, and Mojolicious
  • PACat: PostgreSQL, Angular, and Catalyst

Ultimately it comes down to community and industry adoption. If you're involved with back-end web development, please let me know in the comments if you agree or disagree that "LAMP" is still a useful term, and if not, what should replace it.

Web application Framework Perl (programming language) operating system Express Web development

Published at DZone with permission of Mark Gardner, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Benefits and Challenges of Multi-Cloud Integration
  • Detecting Network Anomalies Using Apache Spark
  • Integrate AWS Secrets Manager in Spring Boot Application
  • Configure Kubernetes Health Checks

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: