<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: frameworks</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/frameworks.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2015-05-24T09:33:00+00:00</updated><author><name>Simon Willison</name></author><entry><title>Are traditional web frameworks and languages like RubyOnRail, Spring Boot and PHP dying now when new fast reactive pure JavaScript frameworks and services like Meteor, Node, Angular 2.0 and Firebase are breaking ground?</title><link href="https://simonwillison.net/2015/May/24/are-traditional-web-frameworks/#atom-tag" rel="alternate"/><published>2015-05-24T09:33:00+00:00</published><updated>2015-05-24T09:33:00+00:00</updated><id>https://simonwillison.net/2015/May/24/are-traditional-web-frameworks/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Are-traditional-web-frameworks-and-languages-like-RubyOnRail-Spring-Boot-and-PHP-dying-now-when-new-fast-reactive-pure-JavaScript-frameworks-and-services-like-Meteor-Node-Angular-2-0-and-Firebase-are-breaking-ground/answer/Simon-Willison"&gt;Are traditional web frameworks and languages like RubyOnRail, Spring Boot and PHP dying now when new fast reactive pure JavaScript frameworks and services like Meteor, Node, Angular 2.0 and Firebase are breaking ground?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="frameworks"/><category term="java"/><category term="javascript"/><category term="programming"/><category term="programming-languages"/><category term="web-development"/><category term="quora"/></entry><entry><title>How does one decide which Javascript framework (e.g. Node, Backbone, Angular) to use on any given project?</title><link href="https://simonwillison.net/2014/Mar/11/how-does-one-decide/#atom-tag" rel="alternate"/><published>2014-03-11T17:08:00+00:00</published><updated>2014-03-11T17:08:00+00:00</updated><id>https://simonwillison.net/2014/Mar/11/how-does-one-decide/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/How-does-one-decide-which-Javascript-framework-e-g-Node-Backbone-Angular-to-use-on-any-given-project/answer/Simon-Willison"&gt;How does one decide which Javascript framework (e.g. Node, Backbone, Angular) to use on any given project?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you are just learning JavaScript, I suggest trying to work without any frameworks or libraries at all. Starting with something like Angular will make it much harder for you to learn the core language and browser APIs.&lt;/p&gt;

&lt;p&gt;Once you've worked with raw JavaScript for a while, it's worth starting to learn jQuery - it's the basis of most of the popular JavaScript frameworks out there and understanding how it works will help reinforce a bunch of core JavaScript concepts.&lt;/p&gt;

&lt;p&gt;If your priority is learning though, it's a good idea to start without jQuery. There are a surprising number of JavaScript developers out there who only really know how to program JavaScript using jQuery.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nodejs"&gt;nodejs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/angular"&gt;angular&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="javascript"/><category term="nodejs"/><category term="programming"/><category term="webapps"/><category term="web-development"/><category term="quora"/><category term="angular"/></entry><entry><title>Would you test your web app against simulated infrastructure failure?</title><link href="https://simonwillison.net/2013/Oct/26/would-you-test-your/#atom-tag" rel="alternate"/><published>2013-10-26T17:43:00+00:00</published><updated>2013-10-26T17:43:00+00:00</updated><id>https://simonwillison.net/2013/Oct/26/would-you-test-your/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Would-you-test-your-web-app-against-simulated-infrastructure-failure/answer/Simon-Willison"&gt;Would you test your web app against simulated infrastructure failure?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I think this is a pretty interesting idea - simulating these kind of conditions isn't easy so I imagine many teams don't bother. If it was good (really easy to get started with, great control and reporting tools, maybe helped set up the actual tests to replay) and I trusted the service I would definitely consider paying for it.&lt;/p&gt;

&lt;p&gt;On the flip side, this isn't addressing a pain point that I actually have and feel - not simulating these kinds of failures doesn't keep me up at night, and my alternative would be not doing this at all. So take my "sounds interesting" with a big pinch of salt!&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sysadmin"&gt;sysadmin&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="programming"/><category term="sysadmin"/><category term="webapps"/><category term="web-development"/><category term="quora"/></entry><entry><title>Should you start with planning the view, the model or the controller?</title><link href="https://simonwillison.net/2013/Sep/22/should-you-start-with/#atom-tag" rel="alternate"/><published>2013-09-22T09:56:00+00:00</published><updated>2013-09-22T09:56:00+00:00</updated><id>https://simonwillison.net/2013/Sep/22/should-you-start-with/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Should-you-start-with-planning-the-view-the-model-or-the-controller/answer/Simon-Willison"&gt;Should you start with planning the view, the model or the controller?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My preference is to start by designing the URLs, then roughing out the first version of the database models. Everything else tends to evolve from there.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="web-development"/><category term="quora"/></entry><entry><title>Should a beginner to web development start out with Node.Js?</title><link href="https://simonwillison.net/2013/Sep/9/should-a-beginner-to/#atom-tag" rel="alternate"/><published>2013-09-09T18:00:00+00:00</published><updated>2013-09-09T18:00:00+00:00</updated><id>https://simonwillison.net/2013/Sep/9/should-a-beginner-to/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Should-a-beginner-to-web-development-start-out-with-Node-Js/answer/Simon-Willison"&gt;Should a beginner to web development start out with Node.Js?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Maybe. One of the things I like about Node.js is that the raw abstraction it provides over HTTP is much closer to how the actual protocol works than the abstractions  provided many of the more widely used frameworks such as PHP, Django or Rails. That might actually make it an effective learning tool - I'd be interested in hearing from some web developers who learnt Node.js as their first server-side technology.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nodejs"&gt;nodejs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="javascript"/><category term="nodejs"/><category term="programming"/><category term="webapps"/><category term="web-development"/><category term="quora"/></entry><entry><title>Why aren't there any popular web frameworks in C/C++ even though they are more performance intensive languages?</title><link href="https://simonwillison.net/2013/Aug/5/why-arent-there-any/#atom-tag" rel="alternate"/><published>2013-08-05T14:17:00+00:00</published><updated>2013-08-05T14:17:00+00:00</updated><id>https://simonwillison.net/2013/Aug/5/why-arent-there-any/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Why-arent-there-any-popular-web-frameworks-in-C-C++-even-though-they-are-more-performance-intensive-languages?no_redirect=1"&gt;Why aren&amp;#39;t there any popular web frameworks in C/C++ even though they are more performance intensive languages?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Because it's very hard writing secure code in them due to the way they handle memory management, and web applications have an enormous number of potential paths for malicious input. It's much easier to write secure web application code in a higher level language (which isn't to say it's easy at all even then).&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="webapps"/><category term="web-development"/><category term="quora"/></entry><entry><title>How do I choose between asynchronous web frameworks? My tech group is fairly language agnostic and we're trying to standardize on some technologies.</title><link href="https://simonwillison.net/2013/Jul/31/how-do-i-choose/#atom-tag" rel="alternate"/><published>2013-07-31T10:15:00+00:00</published><updated>2013-07-31T10:15:00+00:00</updated><id>https://simonwillison.net/2013/Jul/31/how-do-i-choose/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/How-do-I-choose-between-asynchronous-web-frameworks-My-tech-group-is-fairly-language-agnostic-and-were-trying-to-standardize-on-some-technologies/answer/Simon-Willison"&gt;How do I choose between asynchronous web frameworks? My tech group is fairly language agnostic and we&amp;#39;re trying to standardize on some technologies.&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Since they are all pretty close to each other and it sounds like your tech group's skills would support any of them, I would suggest having your tram build a simple prototype in all three so you can compare them for your own particular team and situation.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nodejs"&gt;nodejs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/play"&gt;play&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scala"&gt;scala&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tornado"&gt;tornado&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="javascript"/><category term="nodejs"/><category term="play"/><category term="python"/><category term="scala"/><category term="tornado"/><category term="webapps"/><category term="quora"/></entry><entry><title>Is it probable that one of the major forum software packages will support Ajax soon?</title><link href="https://simonwillison.net/2013/Jul/19/is-it-probable-that/#atom-tag" rel="alternate"/><published>2013-07-19T17:49:00+00:00</published><updated>2013-07-19T17:49:00+00:00</updated><id>https://simonwillison.net/2013/Jul/19/is-it-probable-that/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Is-it-probable-that-one-of-the-major-forum-software-packages-will-support-Ajax-soon/answer/Simon-Willison"&gt;Is it probable that one of the major forum software packages will support Ajax soon?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Those codebases are all terrifyingly ancient. I suggest taking a look at &lt;span&gt;&lt;a href="http://www.discourse.org/"&gt;http://www.discourse.org/&lt;/a&gt;&lt;/span&gt; instead which is a much more modern take on forum software.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ajax"&gt;ajax&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="ajax"/><category term="frameworks"/><category term="quora"/></entry><entry><title>Which language and framework would you use today?</title><link href="https://simonwillison.net/2012/Dec/25/which-language-and-framework/#atom-tag" rel="alternate"/><published>2012-12-25T16:34:00+00:00</published><updated>2012-12-25T16:34:00+00:00</updated><id>https://simonwillison.net/2012/Dec/25/which-language-and-framework/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Which-language-and-framework-would-you-use-today/answer/Simon-Willison"&gt;Which language and framework would you use today?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Unless I had a very good reason to use something else (a pure websocket/real-time collaboration app perhaps) I'd go with stock Django on PostgreSQL and maybe a bit of Redis. Simple, powerful, stable and works reliably.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="programming"/><category term="programming-languages"/><category term="web-development"/><category term="quora"/></entry><entry><title>What is the easiest server-side platform for Android Java developers to learn?</title><link href="https://simonwillison.net/2012/Dec/4/what-is-the-easiest/#atom-tag" rel="alternate"/><published>2012-12-04T17:10:00+00:00</published><updated>2012-12-04T17:10:00+00:00</updated><id>https://simonwillison.net/2012/Dec/4/what-is-the-easiest/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-is-the-easiest-server-side-platform-for-Android-Java-developers-to-learn/answer/Simon-Willison"&gt;What is the easiest server-side platform for Android Java developers to learn?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Take a look at the Play framework - last time I looked (a couple of years ago) it seemed to be the most instant productive  and sane way of doing server-side Java.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/android"&gt;android&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="android"/><category term="frameworks"/><category term="java"/><category term="quora"/></entry><entry><title>How do I learn how to write a javascript framework?</title><link href="https://simonwillison.net/2012/Nov/8/how-do-i-learn/#atom-tag" rel="alternate"/><published>2012-11-08T12:58:00+00:00</published><updated>2012-11-08T12:58:00+00:00</updated><id>https://simonwillison.net/2012/Nov/8/how-do-i-learn/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/How-do-I-learn-how-to-write-a-javascript-framework/answer/Simon-Willison"&gt;How do I learn how to write a javascript framework?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;First, spend a few years writing JavaScript without using a framework. That should ensure you have a deep understanding of both what problems you want to solve and how you can solve them!&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="quora"/></entry><entry><title>What are the differences between node.js and websockets?</title><link href="https://simonwillison.net/2012/Oct/1/what-are-the-differences/#atom-tag" rel="alternate"/><published>2012-10-01T13:30:00+00:00</published><updated>2012-10-01T13:30:00+00:00</updated><id>https://simonwillison.net/2012/Oct/1/what-are-the-differences/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-are-the-differences-between-node-js-and-websockets/answer/Simon-Willison"&gt;What are the differences between node.js and websockets?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is like asking "what's the difference between PHP and HTTP". Node.js is a technology framework you write code in. WebSockets is a protocol which can be implemented using a technology framework. You can use Node.js to implement the server-side aspect of WebSockets.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nodejs"&gt;nodejs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/websockets"&gt;websockets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="nodejs"/><category term="websockets"/><category term="quora"/></entry><entry><title>What is the difference between a web server and a web framework?</title><link href="https://simonwillison.net/2012/Jan/20/what-is-the-difference/#atom-tag" rel="alternate"/><published>2012-01-20T13:17:00+00:00</published><updated>2012-01-20T13:17:00+00:00</updated><id>https://simonwillison.net/2012/Jan/20/what-is-the-difference/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-is-the-difference-between-a-web-server-and-a-web-framework/answer/Simon-Willison"&gt;What is the difference between a web server and a web framework?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A "web framework" offers a set of APIs for writing your own custom code in such a way that it can be called via the Web. Usually a framework will deal with common details such as HTTP header parsing, URL routing and so forth.&lt;/p&gt;

&lt;p&gt;A web server is a piece of software which listens on a network port for incoming HTTP requests and responds to them. Most web servers have a default mode where they will interpret the incoming request as a path on the filesystem and return the file at that path, but they can usually be configured to do something else with the request instead (pass it to a CGI script, proxy it to another server, run some custom module code etc).&lt;/p&gt;

&lt;p&gt;If you squint at Apache or nginx (commonly referred to as web servers) you might be able to describe them as web frameworks as well, since both offer extensive configuration options and a C module API for writing custom code. Most people won't call them that though.&lt;/p&gt;

&lt;p&gt;Likewise, if you consider node.js to be a framework (which I think is a reasonable interpretation, but others may disagree with me) you could also consider it a web server, since it comes with a reasonably robust HTTP server implementation that can be started using a single function call.&lt;/p&gt;

&lt;p&gt;The problem here is really that the concept of a "web framework" doesn't lend itself to a rock-tight definition.&lt;/p&gt;

&lt;p&gt;I imagine this answer is more confusing than it is helpful, for which I apologise.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webservers"&gt;webservers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="webservers"/><category term="quora"/></entry><entry><title>Which web frameworks should I focus on to make myself the most well rounded and to be able to solve the most problems as a web application developer/architect?</title><link href="https://simonwillison.net/2012/Jan/18/which-web-frameworks-should/#atom-tag" rel="alternate"/><published>2012-01-18T17:17:00+00:00</published><updated>2012-01-18T17:17:00+00:00</updated><id>https://simonwillison.net/2012/Jan/18/which-web-frameworks-should/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Which-web-frameworks-should-I-focus-on-to-make-myself-the-most-well-rounded-and-to-be-able-to-solve-the-most-problems-as-a-web-application-developer-architect/answer/Simon-Willison"&gt;Which web frameworks should I focus on to make myself the most well rounded and to be able to solve the most problems as a web application developer/architect?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Being an expert web developer isn't about which framework you know, it's about the fundamentals. It's important that you know how the tools you are using work, so you can fix things when they break - Joel Spolsky's law of leaky abstractions is a great essay about this: &lt;span&gt;&lt;a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html"&gt;http://www.joelonsoftware.com/ar...&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;So pick a modern framework, but make sure you're learning how web technology works. You need to understand all aspects of HTTP, including cookies, caching, content negotiation etc. You need to understand web application security: XSS, CSRF, the OWASP top ten. You need a very solid appreciation of front end development technologies - CSS, HTML, JavaScript - even if you don't specialise in front end engineering most backed decisions you make need to take these in to account.&lt;/p&gt;

&lt;p&gt;Then there are the systems architecture concerns: persistence, sharing, replication, when and where to apply both SQL and NoSQL technologies, load balancing and so forth.&lt;/p&gt;

&lt;p&gt;The web framework you use ends up being a relatively small part of the overall problem - it's just the bit that passes an incoming HTTP request through to your custom code, then hands the resulting response back again.&lt;/p&gt;

&lt;p&gt;So as long as you pick something that doesn't prevent you from getting stuck in to the underlying details (a closed source framework would be a bad idea here) you should be fine.&lt;br /&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/software-engineering"&gt;software-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ecommerce"&gt;ecommerce&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hibernate"&gt;hibernate&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="java"/><category term="programming-languages"/><category term="software-engineering"/><category term="web-development"/><category term="quora"/><category term="ecommerce"/><category term="hibernate"/></entry><entry><title>Play Framework, Django or Rails? Which one do you recommend for  Social Networking Web applications.</title><link href="https://simonwillison.net/2012/Jan/14/play-framework-django-or/#atom-tag" rel="alternate"/><published>2012-01-14T09:22:00+00:00</published><updated>2012-01-14T09:22:00+00:00</updated><id>https://simonwillison.net/2012/Jan/14/play-framework-django-or/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Play-Framework-Django-or-Rails-Which-one-do-you-recommend-for-Social-Networking-Web-applications/answer/Simon-Willison"&gt;Play Framework, Django or Rails? Which one do you recommend for  Social Networking Web applications.&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Both Rails and Django have been used for a large number of high profile social networking web applications. Off the top of my head, Django is used by Instagram and Pinterest, Rails is used by Posterous and Ravelry. I don't know what the largest sites built using Play are at the moment.&lt;/p&gt;

&lt;p&gt;The hard problems involved in building a social network are essentially framework-agnostic: things like scaling an activity feed and running queries against large social graphs are solved by smart application architecture, not built-in framework functionality. Whether you use Rails, Django or Play will have almost no effect on how you solve those larger architectural challenges.&lt;/p&gt;

&lt;p&gt;Pick the one you are most comfortable working with and start worrying about your site's functionality rather than its application framework.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/play"&gt;play&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/social-networks"&gt;social-networks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="frameworks"/><category term="play"/><category term="rails"/><category term="social-networks"/><category term="webapps"/><category term="quora"/></entry><entry><title>What platform was YouTube using before they were acquired by Google?</title><link href="https://simonwillison.net/2012/Jan/5/what-platform-was-youtube/#atom-tag" rel="alternate"/><published>2012-01-05T12:53:00+00:00</published><updated>2012-01-05T12:53:00+00:00</updated><id>https://simonwillison.net/2012/Jan/5/what-platform-was-youtube/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-platform-was-YouTube-using-before-they-were-acquired-by-Google/answer/Simon-Willison"&gt;What platform was YouTube using before they were acquired by Google?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It was written in Python - I don't think they used any particular framework (they started the site in 2005).&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/youtube"&gt;youtube&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="google"/><category term="web-development"/><category term="youtube"/><category term="quora"/></entry><entry><title>Is there a framework that allows me to collect input from individual users, and then charge for the aggregate and analysis of that data?</title><link href="https://simonwillison.net/2012/Jan/2/is-there-a-framework/#atom-tag" rel="alternate"/><published>2012-01-02T14:04:00+00:00</published><updated>2012-01-02T14:04:00+00:00</updated><id>https://simonwillison.net/2012/Jan/2/is-there-a-framework/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Is-there-a-framework-that-allows-me-to-collect-input-from-individual-users-and-then-charge-for-the-aggregate-and-analysis-of-that-data/answer/Simon-Willison"&gt;Is there a framework that allows me to collect input from individual users, and then charge for the aggregate and analysis of that data?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No - your needs are extremely specific. You're going to have to build this yourself.&lt;/p&gt;

&lt;p&gt;(Even if there was an open source framework that covered the kind if thing you are talking about, my hunch is that by the time you had finished customising it to your exact needs you would have invested a similar amount of effort as you would building it from scratch)&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/php"&gt;php&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="php"/><category term="python"/><category term="rails"/><category term="quora"/></entry><entry><title>What is the best license for a web framework (ex: Cake, Rails, Django): GPL, BSD, MIT, other? Why?</title><link href="https://simonwillison.net/2010/Dec/18/what-is-the-best/#atom-tag" rel="alternate"/><published>2010-12-18T18:29:00+00:00</published><updated>2010-12-18T18:29:00+00:00</updated><id>https://simonwillison.net/2010/Dec/18/what-is-the-best/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-is-the-best-license-for-a-web-framework-ex-Cake-Rails-Django-GPL-BSD-MIT-other-Why/answer/Simon-Willison"&gt;What is the best license for a web framework (ex: Cake, Rails, Django): GPL, BSD, MIT, other? Why?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Not the GPL. The share-alike viral clause will prevent anyone from creating closed source proprietary projects on top of the framework.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="quora"/></entry><entry><title>What are the tradeoffs (e.g. development speed, performance, scalability) between using various php frameworks, ruby/rails, or python/django?  Is there any reason to choose one overwhelmingly over another?</title><link href="https://simonwillison.net/2010/Nov/27/what-are-the-tradeoffs/#atom-tag" rel="alternate"/><published>2010-11-27T18:18:00+00:00</published><updated>2010-11-27T18:18:00+00:00</updated><id>https://simonwillison.net/2010/Nov/27/what-are-the-tradeoffs/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-are-the-tradeoffs-e-g-development-speed-performance-scalability-between-using-various-php-frameworks-ruby-rails-or-python-django-Is-there-any-reason-to-choose-one-overwhelmingly-over-another/answer/Simon-Willison"&gt;What are the tradeoffs (e.g. development speed, performance, scalability) between using various php frameworks, ruby/rails, or python/django?  Is there any reason to choose one overwhelmingly over another?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At this point, I'd argue that the decision between them comes down to programming language rather than framework - the frameworks have mostly converged on a very similar set of features.&lt;/p&gt;

&lt;p&gt;All three solutions scale in exactly the same way (shared nothing architecture).&lt;/p&gt;

&lt;p&gt;If you're writing something for people to deploy on their own hosting plans, PHP is far more widely supported. For a service that you host yourself, you need to decide which language ecosystem is the best fit for how you like to develop.&lt;/p&gt;

&lt;p&gt;Update 14 months later: I'd argue today that thanks to hosting platforms such as &lt;span&gt;&lt;a href="http://ep.io"&gt;ep.io&lt;/a&gt;&lt;/span&gt;, Heroku and dotCloud PHP's hosting advantage isn't nearly as pronounced.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/php"&gt;php&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="frameworks"/><category term="php"/><category term="python"/><category term="rails"/><category term="web-development"/><category term="quora"/></entry><entry><title>Why don't more people use Google Web Toolkit for web development as opposed to scripting alternatives like JavaScript?</title><link href="https://simonwillison.net/2010/Oct/12/why-dont-more-people/#atom-tag" rel="alternate"/><published>2010-10-12T18:28:00+00:00</published><updated>2010-10-12T18:28:00+00:00</updated><id>https://simonwillison.net/2010/Oct/12/why-dont-more-people/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Why-dont-more-people-use-Google-Web-Toolkit-for-web-development-as-opposed-to-scripting-alternatives-like-JavaScript/answer/Simon-Willison"&gt;Why don&amp;#39;t more people use Google Web Toolkit for web development as opposed to scripting alternatives like JavaScript?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm morally opposed to GWT, because I don't believe in building sites or applications that are entirely dependent on JavaScript to function. As someone who took the time to learn JavaScript, I'm also not at all convinced that Java is a more productive language.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gwt"&gt;gwt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="gwt"/><category term="java"/><category term="javascript"/><category term="quora"/></entry><entry><title>What is the highest traffic website built on top of Django?</title><link href="https://simonwillison.net/2010/Aug/24/what-is-the-highest/#atom-tag" rel="alternate"/><published>2010-08-24T18:52:00+00:00</published><updated>2010-08-24T18:52:00+00:00</updated><id>https://simonwillison.net/2010/Aug/24/what-is-the-highest/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-is-the-highest-traffic-website-built-on-top-of-Django/answer/Simon-Willison"&gt;What is the highest traffic website built on top of Django?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My best guess would be Disqus. Instagram are pretty enormous these days as well.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scaling"&gt;scaling&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="frameworks"/><category term="python"/><category term="scaling"/><category term="quora"/></entry><entry><title>What is the history of the Django web framework? Why has it been described as "developed in a newsroom"?</title><link href="https://simonwillison.net/2010/Aug/24/what-is-the-history/#atom-tag" rel="alternate"/><published>2010-08-24T18:15:00+00:00</published><updated>2010-08-24T18:15:00+00:00</updated><id>https://simonwillison.net/2010/Aug/24/what-is-the-history/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-is-the-history-of-the-Django-web-framework-Why-has-it-been-described-as-developed-in-a-newsroom/answer/Simon-Willison"&gt;What is the history of the Django web framework? Why has it been described as &amp;quot;developed in a newsroom&amp;quot;?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I was there!&lt;/p&gt;

&lt;p&gt;Django started when Adrian Holovaty and I were working together for a year at the Lawrence Journal-World newspaper back in 2003-2004.&lt;/p&gt;

&lt;p&gt;I was there on a year long internship (my UK university offered the chance to work abroad). Adrian had already created &lt;span&gt;&lt;a href="http://Lawrence.com"&gt;Lawrence.com&lt;/a&gt;&lt;/span&gt; using PHP, and I had about 5 years of PHP experience. Both of us were fed up with trying to maintain large sites in PHP (this was before namespaces, PHP5 etc so it might be better now, but at the time it started to drag once you got above a certain size of codebase). We had both fallen in love with Python, probably thanks to Mark Pilgrim's Dive Into Python book.&lt;/p&gt;

&lt;p&gt;We wanted to switch to doing web development in Python, but we both had very strong opinions about how web development should work - &lt;span&gt;thinks &lt;/span&gt;&lt;span&gt;things &lt;/span&gt;like the importance of well designed URLs, and making good use of CSS (back in 2004 the Web Standards movement was still a relatively new thing).&lt;/p&gt;

&lt;p&gt;We looked at the existing set of Python tools for web development, but none of them fitted the way we wanted to work. We also looked in to Python deployment options and found that the best bet appeared to be mod_python.&lt;/p&gt;

&lt;p&gt;The original reason for creating Django was that we weren't convinced that mod_python would scale, so we wanted to have our own thin abstraction layer between it and our code just in case we needed to ditch mod_python for something else. That's where the Django HttpRequest / HttpResponse objects came from. (WSGI didn't exist yet - in fact, we got involved on the initial Python Web-SIG mailing list to talk about what became WSGI based on what we were learning while building Django, but that process took several years and the eventual spec didn't look much like our request/response objects).&lt;/p&gt;

&lt;p&gt;We never really intended to build a web framework - for the longest time, the code that became Django was referred to as "the CMS". We pair programmed some of the core aspects of Django - the Request/Response objects, the URL resolving and the template language in particular.&lt;/p&gt;

&lt;p&gt;The ORM started life as some very unpleasant repetitive classes that we kept on having to copy-and-paste for each of our persistent models. We were sure there was a better way of doing it, but we didn't know quite what it was.&lt;/p&gt;

&lt;p&gt;Then I went away to SxSW 2004 for a week, and when I came back Adrian had written a code generator that spat out all of our model classes for us - I think he might even have had it spitting out simple versions of the admin pages as well!&lt;/p&gt;

&lt;p&gt;The aim with Django was always to port &lt;span&gt;&lt;a href="http://lawrence.com"&gt;lawrence.com&lt;/a&gt;&lt;/span&gt; to it - so you could say that while Rails was extracted out of BaseCamp, Django was built up to fit the functionality of &lt;span&gt;&lt;a href="http://lawrence.com"&gt;lawrence.com&lt;/a&gt;&lt;/span&gt;. We also built several new sites on Django - the first ever Django site to go live was &lt;code&gt;6newslawrence.com&lt;/code&gt; (now &lt;a href="https://en.wikipedia.org/wiki/6News_Lawrence"&gt;no longer available&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;My internship only lasted a year, and a month before we left we hired Jacob Kaplan-Moss as my replacement. Jacob and Adrian continued to develop Django, and about a year later convinced the World Company (the owners of the newspaper) to open source it - the successful story of Ruby on Rails was a useful argument there, but I understand the World Company were also convinced by the amount of free software the company had benefited from previously, and the desire to give something back to that community.&lt;/p&gt;

&lt;p&gt;Adrian named it after his favourite guitarist, Django Reinhardt. At some point before then the code generator had been replaced with a much smarter system based on metaclasses - I think Adrian's conversations with Ian Bicking may have influenced that.&lt;/p&gt;

&lt;p&gt;After that, everything is pretty much on the public record.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/adrian-holovaty"&gt;adrian-holovaty&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/me"&gt;me&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="adrian-holovaty"/><category term="django"/><category term="frameworks"/><category term="me"/><category term="quora"/></entry><entry><title>Drupal or Django? A Guide for Decision Makers</title><link href="https://simonwillison.net/2009/Nov/15/drupal/#atom-tag" rel="alternate"/><published>2009-11-15T22:14:48+00:00</published><updated>2009-11-15T22:14:48+00:00</updated><id>https://simonwillison.net/2009/Nov/15/drupal/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://birdhouse.org/blog/2009/11/11/drupal-or-django/"&gt;Drupal or Django? A Guide for Decision Makers&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A surprisingly interesting comparison—the author describes Django as “a framework with CMS-like tendencies” and Drupal as “a CMS with framework-like tendencies”, then explores the benefits of those two different approaches.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/drupal"&gt;drupal&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/php"&gt;php&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="drupal"/><category term="frameworks"/><category term="php"/><category term="python"/></entry><entry><title>Play framework for Java</title><link href="https://simonwillison.net/2009/Oct/25/play/#atom-tag" rel="alternate"/><published>2009-10-25T23:21:36+00:00</published><updated>2009-10-25T23:21:36+00:00</updated><id>https://simonwillison.net/2009/Oct/25/play/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.playframework.org/"&gt;Play framework for Java&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I’m genuinely impressed by this—it’s a full stack web framework for Java that actually does feel a lot like Django or Rails. Best feature: code changes are automatically detected and reloaded by the development web server, giving you the same save-and-refresh workflow you get in Django (no need to compile and redeploy to try out your latest changes).


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/play"&gt;play&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web"&gt;web&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="frameworks"/><category term="java"/><category term="play"/><category term="rails"/><category term="web"/></entry><entry><title>Infrastructure for Modern Web Sites</title><link href="https://simonwillison.net/2009/Jan/29/infrastructure/#atom-tag" rel="alternate"/><published>2009-01-29T13:36:06+00:00</published><updated>2009-01-29T13:36:06+00:00</updated><id>https://simonwillison.net/2009/Jan/29/infrastructure/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://randomfoo.net/2009/01/28/infrastructure-for-modern-web-sites"&gt;Infrastructure for Modern Web Sites&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Leonard’s thoughts on what the next generation of web frameworks should aim to provide.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/infrastructure"&gt;infrastructure&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/leonard-lin"&gt;leonard-lin&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sysadmin"&gt;sysadmin&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="frameworks"/><category term="infrastructure"/><category term="leonard-lin"/><category term="rails"/><category term="sysadmin"/></entry><entry><title>Merb gets merged into Rails 3!</title><link href="https://simonwillison.net/2008/Dec/23/opinions/#atom-tag" rel="alternate"/><published>2008-12-23T20:32:43+00:00</published><updated>2008-12-23T20:32:43+00:00</updated><id>https://simonwillison.net/2008/Dec/23/opinions/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://weblog.rubyonrails.com/2008/12/23/merb-gets-merged-into-rails-3"&gt;Merb gets merged into Rails 3!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Huge news. Of particular interest is the new focus on “framework agnosticism”, whereby Rails will aim to play well with people wishing to use alternative ORMs, template mechanisms and so forth. Rails has previously suffered from a reputation for getting in your way if you deviate from its opinions.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/merb"&gt;merb&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails3"&gt;rails3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ruby"&gt;ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="frameworks"/><category term="merb"/><category term="rails"/><category term="rails3"/><category term="ruby"/></entry><entry><title>WebOb</title><link href="https://simonwillison.net/2007/Dec/23/webob/#atom-tag" rel="alternate"/><published>2007-12-23T10:22:45+00:00</published><updated>2007-12-23T10:22:45+00:00</updated><id>https://simonwillison.net/2007/Dec/23/webob/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://pythonpaste.org/webob/"&gt;WebOb&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
WebOb is “an extraction and refinement of pieces from Paste”—provides a very nice request and response object, clearly inspired partly by Django. The documentation includes the differences between the WebOb API and that of other frameworks.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ian-bicking"&gt;ian-bicking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/paste"&gt;paste&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webob"&gt;webob&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="frameworks"/><category term="ian-bicking"/><category term="paste"/><category term="python"/><category term="webob"/></entry><entry><title>Frameworks Exist for Conceptual Integrity</title><link href="https://simonwillison.net/2007/Dec/17/no/#atom-tag" rel="alternate"/><published>2007-12-17T13:58:17+00:00</published><updated>2007-12-17T13:58:17+00:00</updated><id>https://simonwillison.net/2007/Dec/17/no/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://adam.gomaa.us/blog/frameworks-exist-for-conceptual-integrity/"&gt;Frameworks Exist for Conceptual Integrity&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
(&lt;a href="https://web.archive.org/web/20080416150429/http://adam.gomaa.us/blog/frameworks-exist-for-conceptual-integrity/"&gt;Internet Archive&lt;/a&gt;) Adam Gomaa just taught me a bunch of interesting things about Django's underlying philosophy. Looks like I need to re-read the Mythical Man-Month.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/adam-gomaa"&gt;adam-gomaa&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/conceptual-integrity"&gt;conceptual-integrity&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mythicalmanmonth"&gt;mythicalmanmonth&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="adam-gomaa"/><category term="conceptual-integrity"/><category term="django"/><category term="frameworks"/><category term="mythicalmanmonth"/><category term="python"/></entry><entry><title>Quoting Ryan Tomayko</title><link href="https://simonwillison.net/2007/Apr/14/j2ee/#atom-tag" rel="alternate"/><published>2007-04-14T02:35:10+00:00</published><updated>2007-04-14T02:35:10+00:00</updated><id>https://simonwillison.net/2007/Apr/14/j2ee/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://tomayko.com/weblog/2007/04/13/rails-multiple-connections"&gt;&lt;p&gt;The promise [of J2EE] was that of infinite scalability based on tooling, which assumes that designing scalable systems is a general case problem. I now firmly believe that this is flawed reasoning. Frameworks don't solve scalability problems, design solves scalability problems.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://tomayko.com/weblog/2007/04/13/rails-multiple-connections"&gt;Ryan Tomayko&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/j2ee"&gt;j2ee&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ryan-tomayko"&gt;ryan-tomayko&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scaling"&gt;scaling&lt;/a&gt;&lt;/p&gt;



</summary><category term="frameworks"/><category term="j2ee"/><category term="java"/><category term="ryan-tomayko"/><category term="scaling"/></entry></feed>