Reuven waxes nostalgic and reflects on the first two decades of Web development. A few months ago, I was walking can't get my fix of e-mail, or blogs, or with my seven-year-old son, and I newspapers or Hacker News, I feel cut mentioned that when I was young, we off from the rest of the world. had computers in the house. I pointed This is, according to my count, my out that while I was growing up, we 20Ist At the Forge column. It is also, didn't have an Internet connection, and somewhat coincidentally, a bit more that the Web hadn't even been invented than 20 years since I started writing yet. ”Really?" he asked, confused. “So Web applications. So, I'd like to take what did you do with the computer?” the opportunity to look at where Web The Web has permeated our lives technologies have come from and to such a large degree, it's easy to where they're going-and to wax a bit understand why my son is unable to nostalgic for the days when the Web comprehend what it would mean to be was still the great unknown, something in a world without it. The notion of a that we knew would one day be a part computer without Internet access today of everyone's lives, but that we couldn't is quite strange; I have given a number express beyond those basic thoughts. of lectures in military and otherwise- restricted areas where Internet access ln the Beginning is strictly forbidden, and let me tell In the beginning, of course, the Web you, there's something accurate about was static. It took a while for people to the way in which Internet access is realize that just because a Web browser described as an addictive drug. If I was requesting a document didn't mean that the server actually needed far from universal in those early days. to send the contents of a document. When we put MlT's student newspaper lnstead, the server could lie to the on the Web in 1993, almost no one, browser, creating a document on the even among our readership, knew fly, by executing a program. This sort of what a Web browser was. We had to thing, which Web developers do every take out advertisements in our own day, remains one of the funniest parts newspaper, telling people how to instal of the Web from my perspective-that the Mosaic browser, so they could read browsers ask for the contents of a URL, the newspaper on-line. And of course, as if they're asking for something static, the look and feel of the newspaper in without any way of knowing whether those days was extremely primitive. A the server is creating something new paper we submitted to the first-ever for them or sending the same data World Wide Web conference described everyone else received. how we had made it possible for peopl Back in those early days, it wasn't to search through our newspaper's entirely obvious just what technologies archives-an amazing breakthrough in people were going to use to implement those days! their Web applications. Those of you Although it quickly became clear tha* who have seen, or used, programs in the Web was becoming dynamic, no a "cgi-bin" directory might remember one really thought about it as serious CGI, the API that standardized the software development. I remember way Web servers could invoke external expressing surprise, in 1995, when I programs. You might not remember was given a business card that said that the cgi-bin directory was where the "Web application developer" on it. compiled C programs would go. Yes, While the Web was becoming dynamic, the demonstration CGI programs that no one thought of Web development came with the NCSA HTTP server were as serious software work. l snickered a written in C and shell. lt took a little bit to myself, because it seemed clear while before people discovered that to me that applications were serious higher-level languages-mostly Perl and desktop software-not the toys that wi Tcl in those days-could do the job just were creating. as easily, while allowing programmers But it was in that year, 1995, that I to be far more productive. began to understand where the Web And, although Tim Berners-Lee called was headed. lt was then that l learned it the World Wide Web, usage was about relational databases and began to understand just how powerful Web applications could be when connected to a powerful, flexible system for storing and retrieving data. lt also was in that year that the Java and JavaScript languages were unveiled, tantalizing Web developers with the idea that we could have things happen inside the browser beyond simple text and images lt was then that we began to imagine that the browser could be the beginning of a new platform for applications. Of course, when |\/larc Andreessen, then best known as author of l\/losaic and a cofounder of Netscape said things like that, we all laughed, wondering how the Web could turn into a platform for application development. But of course, that vision has turned into a reality. Desktop software hasn't disappeared entirely, but increasingly large categories of software are being pushed onto the Web, accessed through our browsers.
Libraries and Frameworks
lt didn't take long before Web development really began to take off. Suddenly, the big thing was to have “a Web page" or even an entire site. The growth of the Web happened at about the same time that the term "open source” was coined, giving publicity and ammunition to the techies who wanted to rely on software such as Linux and Perl to run their systems. (lt took a long time before some of my clients Were convinced that running a Web server on Linux was a safe choice, or that it could handle the dozens of users who Would visit their site in a given day.) I don't think that it's a coincidence that open source and the Web grew together. Open-source operating systems and languages-in those days, Perl, Python and PHP-grew in popularity, both because they Were free of charge and because they offered enormous numbers of standardized, debugged and highly useful libraries. CG|.pm became an enormously popular Perl module, because it made so much of Web development easy. On the database side, things also Were starting to improve: l\/lySQL, which had been free of charge (but commercially licensed), was released under the GPL, and it was soon ubiquitous on the Web servers that you could license by the month or year. PostgreSQL also emerged on the scene and overcame the 8 kilobyte-per-row limit that had hobbled it for so long. Suddenly, you could get a full-fledged relational database sitting behind your application, using libraries that were fast, efficient and full of features. Web technologies themselves were becoming more sophisticated as well. The standards for HTTP, CSS and HTI\/IL were formalized and then grew to handle such things as caching. The W3C, formed to create and encourage standards for Web- related technologies, produced XML, a document format that remains pervasive in the computer world. lt was, on the one hand, easier to create sophisticated Web applications than ever before. But on the other hand, it was no longer possible to learn everything you needed to know about Web development in a few days or weeks. lt was becoming a specialized set of skills, with people specializing in particular subsets. No longer did "Webmaster" refer to someone who knew everything about all parts of Web technologies. You didn't yet hear about "front-end" or even "full-stack" Web developers. But you did have people who were specializing in particular languages, servers, databases and even whereas a framework is something to which you add your code. Given the number of things a Web developer increasingly was having to worry about-user sessions, database connections, cookie persistence and caching-it shouldn't come as a surprise that the frameworks started to become increasingly serious, complex and sophisticated. l\/lany (but not all) of these frameworks were released as open-source software, allowing developers to create complete, stem-to-stern Web applications using software that was inexpensive, robust and scalable, as well as written by the same people who used it. Even Java got into the act. Although it took years for Java to be released under an open-source license, server-side Java has been around for some time and has gone through many incarnations. From the initial rollouts of servlets and JSP (to some degree) in Web design, helping pages, to Java beans and Enterprise ensure that sites were both aesthetically Java Beans, to the dozens of standards pleasing and user-friendly. All of this meant that Web development was becoming serious, and the individual libraries, such as and open-source projects that have grown up in the Java world, the language that was originally designed to run applets in our browsers suddenly CGl.pm, were no longer enough. Web was a powerhouse to contend with. developers started to use frameworks instead of libraries. l once heard someone distinguish libraries from frameworks by saying that a library is something you add to your code, And yet, Java, which was introduced as a simpler files, protocols and Java-centric words and libraries. Out of this frustration (to some degree, at least) came the first of a new generation of Web frameworks, Ruby on Rails (written in Ruby) and Django (written in Python). Both Rails and Django promised developers something that hadn't yet existed, namely the ability to write sophisticated Web applications, but without the enormous overhead and bloat that Java-based systems required. Not surprisingly, both were instant hits, and they managed to hook a new generation of Web developers, as well as pull many (myself included) away from other, older, less-sophisticated frameworks that we had been using until then. Now I do most of my work in Ruby on Rails, and I continue to enjoy working with this framework every day. But even the biggest enthusiasts among us need to remember that Rails is nearly ten years old at this point. lt hasn't reached the level of bloat and bureaucracy that we see in the Java world, but at the same time, we see that many other language communities have produced their own versions of Rails, using many of the ideas that were pioneered there. l\/loreover, as Rails has matured, it has needed to consider legacy software and offer developers ways to integrate Rails apps into an existing infrastructure. As a result, we've seen that the small, scrappy framework is now getting larger, a bit more bloated and certainly harder to learn than was the case When I first learned about it back in 2005.
Components, APIs and Browsers
Where does that leave us today? First, the news is all good, in that there never has been a better time to be a Web developer. The opportunities to learn, explore, extend, implement and use Web-based technologies already are overwhelming and seemingly limitless, and every day appears to bring new frameworks, libraries and techniques that make Web applications even more interactive and compelling than already was the case. And yet, for all of the opportunities, Web development never has been more difficult to get into, simply because of the many technologies you need to master in order to create a Web application. Web development, as Philip Greenspun said so many years ago, requires that you be a generalist, understanding a little about a large number of different technologies. A modern Web developer needs to understand HTTP, HTML and CSS, at least one server-side language, SQL and JavaScript. lt also helps a lot to know how to work with Linux or other server operating systems. The reality also is that even the most experienced Web developers upcoming installment of this column). are starting to specialize. True, I True, some languages are more popule think of myself as what's increasingly than others, but you can find work called a "full-stack Web developer", in just about any language you want understanding everything from server today, trying it out and learning how configuration to database optimization that language's paradigms fit into the to JavaScript programming, but the tapestry of languages and frameworks march toward specialization continues, Perhaps the most important languaç and |'ve seen that a growing number of today is JavaScript. JavaScript, which jobs are aimed at people with expertise never has been one of my favorite on the back end or the front end, languages, now is required knowledge without much overlap between the for anyone who works on the Web. two. Configuration and deployment lt sits inside every browser and also are becoming their own specialties, increasingly is used for server-side as we've seen with the rise of devops programs as well. JavaScript's ubiquity, during the last few years. and the fact that it is necessary for That said, if you're willing to high~powered Web applications that li learn new technologies and improve inside of the browser, means that sucr yourself constantly, there are limitless organizations as Google and l\/lozilla opportunities to do amazing things on are spending enormous amounts of the Web today. time, money and effort trying to get Let's start with languages. lt's JavaScript to execute as efficiently as clear that a huge proportion of Web possible. The sophistication of browsei development is being done with based programs never ceases to amazr dynamic languages. Ruby, Python and me, and that's all due to JavaScript. PHP continue to dominate (outside of There's also a growing trend of large corporations, at least). But we languages that compile into JavaScript also see a large number of open-source such as CoffeeScript and ClojureScript languages based on the JVM, such allowing us to write in one language as Clojure and Scala, each of which but execute something else (that is, have their own Web development JavaScript) in the browser. And then paradigms and frameworks. The rise of there are the JavaScript frameworks, Go, a compiled, open-source language including Backbonejs and Angular.js, from Google, also is intriguing (and which are making it possible to create is something I hope to cover in an browser-based applications that not only do amazing things, but which level of abstraction, use Heroku, which also are structured like the serious costs more but reduces your IT staff to applications that they are. I've often said nearly zero. The same is true for login that today, developing software isn't systems, e-commerce transactions that difficult, but maintaining software and even commenting systems, each is, and thus, server-side Web developers of which now can be outsourced, eventually realized they needed to rely via an API and a few minutes of on libraries and frameworks in order work, and then plugged in to your not to lose their minds. Web application. The use of APIs is As the browser part of applications particularly relevant today, when we become more sophisticated, we see have so many people accessing the Web that server-side Web applications not via traditional browsers, but rather increasingly are becoming API servers, via mobile devices and platform-specific offering outsiders a chance to retrieve apps. That app you installed might not and modify data stored in a database look like it's contacting a Web site, but of some sort. True, there always it's undoubtedly making a JSQN API call will be a need for server-side Web over HTTP in the background. development, but it seems to me that In other words, we're finally seeing as people learn to create better and the start of Tim Berners-Lee's original better experiences within the browser, vision, in which people all over we're going to see the server as a the world are both retrieving and remote storage mechanism, offering contributing information, no matter one of the many APIs that our browser where they happen to be. I'm writing contacts in order to bring up a fancy- this from Chicago, where I'm spending looking application for our users. the summer, but thanks to modern Web Indeed, we see a trend of breaking technologies, I'm able to see my family Web applications into many little parts, in Israel (including play Chess with my each of which specializes in a different aforementioned son), order books and thing. You want to have real-time other merchandise to my apartment, updates? Use Pusher or PubNub. You read the news, check the weather, pay want to have nice-looking fonts? Use for airline and movie tickets and listen Google. You need more servers? Fire up to music. And no, none of this should some additional machines from Amazon come as a surprise to anyone reading or Rackspace. Or, if you want to think this magazine, or even anyone who has about your servers from an even higher been using the Web at any time in the last decade. But that's just the point. If we can step back a bit from the technologies we're using, we can see how much easier our lives have been as a result of the Web. Web development was exciting when I started to do it 20 years ago, and the amazing thing is that it remains just as exciting today. If you've always wanted to be a Web developer, choose a language, learn how to use it to write Web applications and then see what you can do. I never cease to be amazed by the magic of programming, and the Web makes it possible to spread that magic to the entire world. Here's to the next 20 years of advances in Web.
Aucun commentaire:
Enregistrer un commentaire