In today’s world, there are numerous open-source solutions for practically any programming problem. But, that wasn’t always the case. Let’s take a look back at some of the fundamental technologies that were used during the period 1995-2008 to build the web that we know today.
Linux
It all starts here. While it was possible to serve HTTP traffic using Windows, VMS, z/OS, and [insert your favorite OS here], most site builders chose a UNIX-type operating system. These had native TCP/IP support years before the web was even a thing. Open source web servers (such as NCSA httpd and later Apache) have been available since the onset. Practically every programming language is available, and they can be easily managed remotely using SSH (or telnet and FTP back in the day).
Linux brings three additional things to the table:
- It’s free (no per-server licensing costs)
- It runs on cheap commodity (x86) hardware
- It can be easily customized
This helped sites scale horizontally to serve workloads that were unimaginable before. Pioneers such as Google realized that thousands of cheap x86 motherboards running an OS with zero per-seat costs could build the equivalent of a supercomputer.
In 2000, NetCraft estimated that Linux had 35% of the server market with Solaris holding another 20%. In 2025, SQ Magazine estimates 78% of web servers are running on Linux. Measured by traffic, that number is likely much higher.
Honorable Mention – FreeBSD was also used in the early web. Most notable was HotMail. It was also used by ISPs and shared hosting providers to allow numerous users to securely share machines for small volume sites.
Apache
Introduced in December 1995, Apache quickly replaced the NCSA httpd as the standard web server for UNIX-type operating systems. It offered numerous performance and security improvements. Perhaps the most significant of these was the replacement of the old CGI interface (which launched an OS process for every request) with FastCGI or modules.
Pretty much every web property of the time used Apache – Amazon, Facebook, Netflix, and eBay and countless others. It ruled the roost until the introduction of nginx in 2004, which offered even better scalability due to its use of asynchronous IO. However, Apache still holds a respectable 15% of the market share. This number is likely higher, since sites are often “fronted” with something else or configured to not disclose this information to the end user.
Oracle
From the 1990s-the 2010s, SQL relational databases were the way that data was stored. ISAMs and CODASYL were for the mainframe programmers – developers of n-tier applications used SQL and Oracle was the king of SQL back then. So, it’s not a big surprised to me that companies who could afford it used Oracle. These included Netflix, Amazon, and eBay.
However, Oracle was quite expensive. In the early 2000s I worked for a startup whose production website was built around Oracle. A sizeable percentage of our VC funding was consumed by licensing costs. This is perhaps one reason our startup did not succeed.
MySQL
MySQL was one of the few open-source SQL RDMS systems around in the late 90s. It was pretty janky back then (no support for views or stored procedures, limited datatypes), but was good enough to get the job done for many historic web properties.
Facebook has long been known as a heavy user of MySQL (though it is heavily sharded). So does Slack, GitHub, Twitter and too many others to list.
MySQL (or its sibling MariaDB) is still my first-choice database for today. It has every feature that any normal workload would need, is well understood, well documented, and supported by pretty much every language and platform imaginable. Unless there are extreme scaling or geographic requirements, this is the tool I reach for.
PHP
Rounding out the LAMP stack is PHP. I don’t have much experience with this language and I don’t particularly like it. However, many world-changing pieces of software have been written with it. Again, the most notable is Facebook which still uses PHP to this day, albeit using a custom-built compiler to get over its performance deficiencies. But, so did Wikipedia, Slack, Tumblr, Mailchimp, and many, many others. The site you are reading uses WordPress, which is also written in PHP, along with Drupal – its closest competitor.
A good development tool is one that keeps the easy things easy. PHP certainly meets this goal. A PHP page is nothing more than an HTML page with expressions and code blocks inserted. It can be as simple as inserting a date. More complex applications can embed logic, or use objects defined in external files to build up a properly layered application.
PHP’s integration with Apache is likely another reason for its popularity. mod_php allows Apache to directly execute PHP pages in-process. Since the source code is just files in the web root directory, an administrator can set up Apache once and developers can use it with nothing more than a text editor. No need to set up build toolchains, CI/CD pipelines, or anything like that. PHP support is easily enabled by hosting providers, which is the likely reason that WordPress and Drupal are so popular.
Even though the language was limited – it was good enough for a lot of things. It integrates nicely with MySQL (though it makes it way too easy to create SQL injection vulnerabilities). Also, it’s often the case that the web server is the “facade” of an application and the “heavy lifting” is done by back-end processes that may be written in another (often more complex) language.
PHP is still alive today and has adopted many features of modern languages such as closures, objects, and JSON. However, it has a lot more competition from Python, Ruby, Node, Go, and many other languages. Some of the historically significant sites that were built with it have moved on to other languages.
Java
Let’s face it, no-one wins “cool points” for developing in Java these days. However, in 1995 it was a breath of fresh air. It was sufficiently easier than C++ and much more powerful than PHP, Perl, and Python. It was originally released by Sun in 1995 as a “write once, run anywhere” language. At that time, computer hardware was quite heterogenous with x86, Sparc, MIPS, Alpha, HP-RISC, and PowerPC processors all being used to power web workloads. In theory C/C++ code would work across all of these platforms, but in practice, word lengths, byte order, and operating system differences made that not the case.
A funny thing happened along the way – x86 became the dominant hardware platform, virtually extinguishing all of its competition. But Java remained popular due to its simplicity and broad ecosystem. It was especially popular in the corporate world where apps could be written and tested on Windows or MacOS PCs and then deployed to Linux servers for production.
However, “write once run anywhere” did eventually become important. In the mid-2000s when 32-bit x86 gave way to x86-64 the transition was nearly seamless for Java developers. In more recent years ARM processors have gained traction in servers and desktops and they have always been dominant in mobile devices.
Java backends were (or are) used to power Amazon Netflix, eBay, Google (Android), Spotify, Uber, and many others. It’s also a good bet that your bank website is using Java, given how much IBM has pushed it (along with Linux) to modernize and augment mainframe systems.
And lastly, countless corporate applications use Java. It has become the “nobody gets fired for using…” language.
Javascript
Unlike the other technologies on this list, Javascript became popular by decree. It is the only scripting language available in most web browsers. As such, it is clearly the lingua franca for web client development. Over the years, more and more logic has moved from server to client, so modern web applications have huge amounts of code written in Javascript.
Despite its significant warts, it has “crossed over” to become a popular language for server development as well. Later versions of the language (now called ECMAScript) have added powerful features, many of which are centered around asynchronous processing and functional programming. Microsoft even created a type-safe meta-language around it called TypeScript which has seen broad adoption.
Flash
Prior to HTML 5, client-side interactivity was difficult and limited. Macromedia Flash (later acquired by Adobe) was closed-source multimedia authoring language that offered much richer interactivity. Basically, Flash applications would run in a “box” inside of an HTML page. Within the box you could have all the sound and animation to your hearts’ desire.
The authoring software was paid software. However, the runtime was free and easily downloaded and installed into your browser. Many sites used this to get around the limitations of early HTML. It was especially popular with online games, many of which are now unplayable due to its demise.
Flash was eventually withdrawn by Adobe after being forcibly removed from the Apple platform. Javascript and HTML 5 have taken its place and are open standards accessible by all. Most browsers have had Flash support removed.
Closing Thoughts
So, why should we still be talking about these things in 2025? After all, there have been countless newer technologies introduced since then to solve specific problems. Well, that’s sort of the problem with today – there are SO MANY choices that no-one knows where to start. Option paralysis, cognitive overload, and incessant infighting are very real problems in the modern tech industry. Is it any wonder that no new Facebooks, Twitters, or eBays have been created in the last 10 years? It seems that most of the advances have come in AI (not going there) or deployment technologies. These things all have their place, but we have become so inwardly focused on our own needs as developers that I don’t think we are spending enough time thinking about solving our customers’ problems.
The LAMP stack still exists and may well be all you need to write the next great app. Certainly there are substitutions to consider, such as nginx instead of Apache, Postgres instead of MySQL, and Python or Node instead of PHP. Containers have proven their worth, LAMP apps can be containerized as well (please break A, M, and P into different layers). But maybe you shouldn’t build your world-changing app on some database, language, or web server that someone just released last week and posted on Reddit about. Pick a mature, supported, proven technology to stake your venture on.