字幕列表 影片播放 列印英文字幕 [Music] Back in 1999 or 2000 I had this web design company called 37signals and I had two partners in the business, and we were doing some web design for people, but I had this side project that I was also doing called Single File which was this book, online book database thing that I was trying to build. And I was building it out of PHP, I didn't know how to program but I picked up a book on PHP and I started making this thing. And I got pretty far, but then I got stumped. So I wrote this post online asking for help, it was a general call for help, "there's my problem -- anyone know how to do this?" you know, this is way back before StackOverflow and all the places you could get answers, there were no answers, so help! Someone! And it turned out this guy wrote me from Denmark. Back then I was here in Copenhagen, Denmark working in the web industry, and I was just a big fan of the company. Right from the inception there was a web blog, Signal vs. Noise, that I followed religiously right from the get-go. It was just such a weird company, this was a design company that was focused more on writing than it was on pretty pictures or graphics or anything else that I associated with design at the time. So I was following this company for a couple of years and then in 2001, Jason Fried, one of the original co-founders and still my business partner to this day, posted on the blog a question about programming. I saw this question and I went like "Hey, I know the answer to this!". This is a way for me to give something back to someone I've enjoyed reading and learning from in the past two years. So I did just that, I wrote up an answer explaining how to do this thing he wanted to do in PHP with great detail, the best as I knew it, I wasn't an expert programmer really but I knew the answer to this question. His answer and his help was so thorough and there was this quality and this character to his answer that made me feel like he really wanted to help and not just respond, but he really wanted to help. And so we started talking back and forth about this help, and then we got deeper into it, and he's like "Can I see the whole thing?" and I said "Sure!", and I showed him the code and he's like "This sucks, we should really start over, let me do this for you" and so that's how my relationship with David actually began: he telling me my work sucked, and me going "Okay, let's do something better then". And it was a perfect partnership from the beginning there. I got my first computer when I was 6 years old, this was in 1985. It was an Amstrad 464 and that was my first exposure to programming, typing video games in from the back of a magazine. I wasn't very good at them, I only made a couple of them work, but this was how I got started. Next up was trying to learn programming once more when I was around 10, 11 or 12, a programming environment called Easy AMOS. It was not easy for me, it may have been Amos but it wasn't easy. So I failed once more to learn programming, I had a hard time with even the basics of variables and loops and conditionals and all the basic constructs you need to learn how to program. So I gave it up once more, and it wasn't until I discovered the internet in 1995 getting involved with making HTML that I thought "Hey, here's another opportunity for me to be able to create something!". And in 1999 I started working on a gaming website with another programmer in PHP. and that was really the first time things clicked. At that time I'm 20 years old, this is my third attempt at learning to program but now I understood it. And that was really the prep I had before a year later I would write Jason that email. So the first time I met Dave was in Chicago, we were working together, we had been working together for quite a while actually but we never met in person, just on Skype you know. So I'm at the John Hancock building in Chicago, which is a famous building in this big plaza waiting for him to arrive. We agree that we're going to meet in the morning and so I'm waiting there and I'm looking around like is that him?, is that him?, is that him?! and then no, it wasn't him, but then this guy shows up and it comes around the corner and he's wearing all white rail thin like white T-shirt, really short sleeves, white capri pants, white shoes. I'm like "there's Denmark right there, that's David". And I think, actually you know, I'm thinking he had white shoes but I think he may have had rollerblades on now that I think about it, I'm not exactly sure. But it was so obvious that it was him. After we'd worked on this book thing for a while, we worked on another client project, then actually a few because we were a web design firm so we were just doing web design, we did a few more things together and then we started getting really busy and needed a way to manage our projects. And so we had this idea to build this project management tool for ourselves. Now, David was still a student at this time, he was still in Copenhagen at business school there so he didn't have a lot of time, he wasn't a full-time employee or anything yet. And I hired him to do this right the back end of Basecamp, and at the time he's like "I don't want money, I want laptops, I want computer equipment" because it was very hard for him to get modern Apple stuff in Denmark. So every time he came to the US - this is probably illegal, but anyway - every time he came to the US I gave him a laptop or I gave him a, you know, whatever he needed at the time right. And that was payment for Basecamp, and he would only give us like 10 hours a week cause that's all the time he had. 2003 is when we decided to start on Basecamp. We had worked together in these consulting projects and most of the organization around that had been over email, an experience everyone feels I think if they try to organize projects over email. So we thought, do you know what? we know how to make web applications, can't we just make an application that'll make this easier for us to do so we don't have to deal with all these email threads and which version of the file is the latest and what's left to do before we can launch?. And that's what we did, and I had just earlier that year discovered Ruby through the writings of Martin Fowler and Dave Thomas who were using Ruby to illustrate programming concepts that they were writing about in programming magazines. I just thought, this is a really interesting programming language. First of all I hadn't heard about it before, and I'd been working with the web for quite some years at that point, that was intriguing. It was out of Japan, that was intriguing. I saw the code and it looked just like pseudo code, you know how if you're trying to explain a programming concept sometimes you won't write the exact right syntax, you'll just write something that more looks like English. And that's exactly what Ruby looked like. And I thought, this is just really interesting. And here are these two titans of the industry, Dave Thomas and Martin Fowler, who were clearly very enamored with the language, expressing that they would wish to write systems in this language if they could only get permission to do so. And I thought, you know what? Here's a project where we can choose to do whatever we want, so I got to make the choice and the choice was let's try Ruby. I remember in the early days of building Basecamp, you know, I didn't have any input on the backend, but David's like "you know, I'm going to use this thing called Ruby to build Basecamp", cause we've been been working in PHP previously and I'm like, "What the f()c% is Ruby?!?" I've never heard of this. He's like, "It's this thing out of Japan". I'm like, all right, I mean really I truly I didn't care because it's his part of the project, it's not my job to tell him what to use, and I trusted him. When we started working on Basecamp in 2003, I was getting proficient enough in programming to start to develop a taste for what I liked in programming, but I hadn't found yet somewhere to express that taste. It really wasn't until I discovered Ruby that I found the programming language that simply clicked for me. And what I loved about Ruby was this sense of combining the immediacy of PHP being able to get Hello World onto the web with a minimal amount of fuzz together with a really sophisticated well thought out coherent object-oriented program language. That was the appeal I found in Java that there was all this intellectual rigor the software pattern and all the other stuff that serious system development engineers were all about. And Ruby to me brought both of those things together, or at least could bring both of those two things together. And that's where I saw an opportunity. It started out really simple, I had a two week window that I gave myself of could I build just the basics of a web application, could I get HTML up in the screen that was rendered from Ruby, and I was talking to a database and could I simply make those things happen. So there wasn't a lot of libraries, there were not a lot of frameworks, there were certainly not a lot of things to help you with database access or with the web development in general. And that's how Rails came about, that I simply had to build the tools myself in order to be able to use Ruby as my programming language for this new system we were creating. It wasn't because I had already looked at a bunch of other things in Ruby, I had looked at other things in PHP, I looked at things in Java, so I had a good idea of what I wanted. But Ruby was the language that gave those ideas wings, where I thought I could write code that wasn't just functional, but it was beautiful. Over the next six-seven months, we created Basecamp, and during that process I extracted Rails. Not as a big upfront design that I want to create this grand web framework and release it to the masses. There was not even a thought of releasing it originally. I simply needed these things, so I did that. In the period between the summer of 2003 and the release of Basecamp in February of 2004, that was the main gestation period for the framework itself. But I didn't really release Rails until later in 2004 because I had this vision right from the get-go that here's something that could be special, the first version of Rails needed to be good and good not just in terms of the code, but also good in terms of the documentation. So I spent a good six months I think it almost was after the release of Basecamp, polishing things up, polishing the documentation before putting it out. Right here behind me is where I lived when I started working on Rails. So when Rails started to take off, it was pretty wild. And was a bit of a two minds about it. On the one hand, it was great to see that something I had created was creating this much excitement. And at the same time I was also highly protective of the integrity of the vision I had put into Rails. More and more people were interested in Rails, and some of those people were interested in pulling Rails in one direction or another. I think it's very easy to lose control when something like that happened, be so enamored and just pleased with other people's contributions that you put it all in and you have a hard time saying no. If you say no to someone, you are risking a conflict. And I said no to a lot of things, I said no to certain things I did not want Rails to be. There was this infamous slide at a early Rails conference in Canada where I simply just put up the words "F()c% You", and I put up those words as a way of expressing my at times frustration when someone would show up with what I considered an unreasonable demand for me to put something into Rails, then followed up with a threat: "Unless you put this thing into Rails, you will fail" F()c% you! That's just not, you don't get to tell me what to do. I'm working on Rails because I want to work on Rails, and I will solve my problems, and I will protect the integrity of the framework. I'm not here to be your servant, I am not allowing you to buy anything from me. This is one of the main reasons I love open source so much, it is not a commercial relationship, you don't get to tell me what to do, you don't get to tell me the direction the Rails has to take. I'll make those decisions on my own, thank you very much. I'll take input, absolutely, I'll take feedback. And Rails is what it is today because thousands of people contributed really great work that I had no hesitation saying yes to. [Music] I arrived in the Ruby Community cause I thought Ruby was cool. I liked programming languages, I would dabble in them and just try things out in them. And when I tried Ruby I really liked it. It just it stuck with me in a special way that I kept coming back to, just felt close to my heart and I didn't try to analyze it too much at the time. As the years went by and I did web development in Java and PHP and Pearl and other languages, I kept thinking about feeling that little tug of why isn't Ruby here?, Why isn't Ruby showed up?. Here comes this guy announcing on the Ruby talk mailing list, "I've got a plan". It's like, are you coming down from Mount Sinai with your tablets of... who gave you these commandments?! The way to develop for Ruby and the way it developed for the web, we haven't seen you before! So it was it was a provocation and there was some spice to it, I was like: "Is this guy an $%/&!* or does is there something to it?!" And it was a little bit of both: hear this guy with like a kind of well-carried arrogance about having the right ideas and willing to set those ideas out for everybody to see and they were great, they were good ideas. Sure, some of them were like old ideas reconfigured but they weren't pitched as anything but that. The active record pattern says it right on the tin, now it took it from a pattern to being a framework and that added a it was a jolt of energy and kind of electricity and a Ruby community that was very generous, very kind, and now had this kind of aliveness like, what's going on here? How do we channel this energy, what are we going to do with this person?!, and it varied from tolerate this person, to embrace and see what he brought. [Music] I first heard about Ruby on Rails at the 2004 International Ruby Conference, I was working for Brigham Young University at the time and not using Ruby, but I received permission to go to this conference because I had I was very excited about the Ruby programming language and was doing a lot with Ruby on the side and even sneaking it into the system, so to speak. And I went, I was actually presenting about something that I had been working on, on the side. It was not a big conference, there was maybe just 30 or 40 people in total. But I remember sitting there and one of the presenters was David Heinemeier Hansson, who I' had never heard of before, I had never heard of Ruby on Rails, it was brand new just barely released. And he got up and was talking about why he wrote Rails. He really was pushing a better experience for programmers, and I remember him standing up there holding an imaginary piccolo to his lips and talking about how like the Pied Piper of Hamelin he was going to lead programmers to a better a better experience, a better way of living. For about the first year, there was no one else but me making commits directly to the code. I took patches from people, we took patches over email, I think we even used a Wiki at the time. This was well before GitHub was created and made everything so easy. But I didn't expand the access to the code itself until I think almost a year in. At that time we instituted the Rails core team, which were basically just a group of people who had sent me the most patches, who had sent me the best work. Those people got access to the code base, and amongst those people was Jamis Buck. I remember being struck by just how excited he was about this project, he was very passionate about it. He never showed a line of Ruby or Rails code that whole presentation, it was all about why he wrote it, what he was hoping to accomplish with it, which I think disappointed some people, especially those who had heard about Rails, maybe played with the very early releases of it. I think there were some there who were hoping for a little bit more of a technical presentation, but his was all about the charisma. His excitement and passion about the project was contagious, it was easy to see that this was something he was really excited about. And even then, I mean this was 20 years ago almost, you could see his idea that this was going to change the world. Jamis ended up then being the first programmer I ever hired at 37signals as Basecamp was taking off. And I remember reading Jamis's Ruby code and just thinking "Wow, this guy is really good!". He just had such a methodical approach to it that I was an off, and I was eager to be able to work with him at Basecamp on Basecamp, and that's how we got started, that we hired the good number of the early people at 37signals were all hired out of the Rails core team or other folks who had been contributing to Rails. Something that was exciting about the Rail's pre-release announcement is that it was coming from 37signals. I knew about 37signals, and just the fact that they were dipping their toes into Ruby, it was interesting. Like, I was really curious. Why are they showing up here? This wasn't just somebody coming up with their favorite way to build web apps, it was somebody doing something in a 37signals way and that the mark 37signals had made on the design world was showing up to the Ruby world of all places, it felt different and kind of odd, a neat interesting curious kind of odd. So it gave it kind of an instant reputation. If you didn't know what it was yet, but the fact that it could power something like that spoke for itself. That reception was of course very warm and loving, this was a bunch of Ruby enthusiasts seeing something interesting happening in Ruby. The reception from the rest of the world was a bit more mixed. Of course it was, in part because when I went into full marketing mode for Rails, I was a little brash about it. I knew that the odds of creating awareness from something like Ruby, such an unknown programming language, couldn't just be a whisper, it had to be a shout. And I went out shouting! I did a bunch of controversial comparisons between Java implementations of certain problems and Rails implementations of the same problems, that at the time were characterized as poking Java developers in the eyes. So of course part of that reaction completely expected was push back and this was why it was so helpful to have this one-two punch: a real application, with real success and growth and paying customers in Basecamp, and just the code speaking for itself. Things like the 15 minute Blog Video and other writeups contrasting what does it take to solve this problem in Ruby on Rails, what does it take to solve the same problem in something else. Here we go, I hope you can read the text. The first thing we do is called the Rails command... 2002 I moved from Germany to Canada, I tried to work for local companies in Canada right after and found out I couldn't because I didn't have a work permit, and I had to work through these kind of things. So I found myself with time. My now wonderful wife suggested like, "You know, you've been talking about starting a company and like this seems like awfully good time to do it". I didn't feel that spark anymore during those times, and what I decided I needed to do was reclaim programming as that passion hobby again. So what I was looking for is like some opportunity of "I'm going to build something that would allow me to make money while I go snowboarding and while I go program for fun". That was my plan. I've been extraordinarily unsuccessful on that particular plan, because here's the way things happened. I decided, because of all the snowboarding I was doing, I knew a lot about snowboarding, I just like you know online stores! This seemed like the right thing to do, whereas I couldn't find a good online store. It turned out that there wasn't good software to use, I tried to use different packages they all horrible so I just sat down and said okay, well, if I can use anything, like I don't have a boss anymore, what I can use? Any technology, no matter what it is, it just needs to respond to web requests. I remember thinking "Man, I would just love to use Ruby!". Like, it's just this moment. I think the way I best explain it is like, I just realized my brain was running on Ruby since I started first programming. Shortly thereafter I got just very lucky, that I was paying attention when David must have for the first time started talking about him doing the thing I wasn't brave enough to do, right? Like building from scratch everything that's needed. This may well have been me sending a private message and him sending a zip file back, the details are little bit hazy at this point, but like he he gave me access very early, I tried it and I just fell in love with it. I was building Snowdevol, it took two/three months. I was certainly the only engineering team on planet Earth during this time who was doing this alone. Everyone else who was building online stores had a team of 100 people, and yet I was more productive. Simply because it's hard to for people to understand this these days, but that is the difference of effectiveness, of what Rails did and it made it possible to build systems alone. Again, it just became a very natural thing based on just what I was seeing to take Snowdevol and turn into Shopify afterwards. It just seemed like the right thing to do, and you can clearly see the influences in it, right? I loved working on Rails, I love working on the tool, I love working on the technology. Being inspired by the tools that you use to reach higher than you thought you could, or you were allowed to, or what would be possible, is rare and possible and underexplored, and in fact literally what Shopify is attempting to do right at the end of the day. I don't remember us calling it a core team right away, but it kind of became that, from those beginnings of Jeremy and me and David committing to the repository. It wasn't long before there were more committers: Marcel Molina, Scott Barron, Sam Stephenson, some of these others, Michael Koziarski, these early Rails committers. And it really was a wonderful thing. I had never really been part of a team like that, but there was something about all of us having this the same vision and working at such an early stage on something that felt like it was going to change the world, it was exciting. Being part of her core team meant that you had David's trust to build something on the quality bar that he owned. We had an IRC channel specifically for that, that's where the real conversations were about, like what was Rails, what would Rails become, what would be the next features. And this is like, been going on for the last 20 years, and it's still active. We have much, much better tools these days with GitHub, thanks to another thing that grew out of Rails. But like, when we started Rails, there was no GitHub. The concept of having multiple people work on a code base was a much higher trust affair back in those days. That was a 10x environment, and I think David made it, created it for us. Like we, a lot of us, came out of those early years as completely changed programmers afterwards. Rails compelled me to realise what my potential was there, and it also gave me the ambition to reach high, because a lot of people's potential limitation is learned rather than inherent. And it gave me the configuration of my life, by allowing me to be an entrepeneur. When I first released Rails it wasn't even a consideration not to make it open source. We had been building our business, everything that I had worked on for the web had been with open source tools. These were cornerstones of what enabled me to be able to work with the web, so when I finally had something, my own toolbox to share, I didn't even think twice about it. Of course this had to be open source. I remember one of the most fascinating conversations that I've had a pleasure to be part of in my life, was a conversation definitely David, I think Jeremy, I was part of it and definitely a few others, and it was one where we said like "Hey, we are building companies, we're building important companies, they are working. We are clearly more effective with small teams than larger teams with lesser tools. Is open source the right model here? like, A) Shouldn't we charge money for Rails? B) Should we even share it at all, or just like use it as a comparative advantage?". These were ideas that people were sharing, and David said "No. Open source is important, in fact MIT license open source is important, and we're going to make Rails extraordinarily successful". And I'm like, I remember pushing saying "Hey David, that's not something you can just sort of decide. Like, you can't just decide something is going to be successful, that is like an outcome that happen that requires luck and all these components". And he said "No, we can decide this". When this discussion happened David must have been like 24, right? I'm just like, I'm trying to figure out where you get that from at that age, it seems, still seems remarkable. Because you know, and now we are in our 40s and I still don't run in a lot of people who have kind of that kind of conviction and out-of-the-box meta understanding of market dynamics, attention, drama, and frankly, business development. I think I've got a business degree during those years accidentally, playing out right in front of me while I was just trying to get work done that I wanted to get done. And it's just remarkable, honestly. Remarkable. When I was first hired by 37signals, they asked me one of my first tasks was to create a way to deploy Basecamp. At the time, Basecamp was deployed to a single server database and web server all on one machine, which is laughable now, but shortly afterwards they grew and now we needed two machines, and we had to figure out how to deploy Basecamp to more than one server. And this became my baby, Jason and David actually told me you can have ownership of this product even though you wrote it for us, this is your baby, you can do what you need with it. And that was extreme fulfilling, to be able to work on this product, called it Capistrano, and that stuck. There were some really key moments in early Rails development. And Rails 1.0 was a big one, but it was the starting point of what makes a 1.0. There were some key moments after that that really kept the sense of momentum. Rails 1.2 was a watershed for me. I still love that release. It was a very stable early release where we started having those glimmers of this is what it's like to be a kind of mature web framework. And I still feel excited thinking about like the audaciousness of we're just going to switch the way we do development and everybody's along for the ride, and everybody wanted to be along for the ride. And it was that same year, December 2007, when we released Rails 2.0. Rails 2.0 brought cookie based sessions, brought things like named scopes. So it started to change the way that, well, it was a look at what it looks like to see our products and applications mature. One of the big criticisms of the detractors of Rails back in the day was that "Rails can't scale". That was their mantra. They would chant that at us all the time, and we could point at Basecamp and say, "This is non-trivial". I mean, it's not we're not doing a million requests a day, but we're serving people's needs. We're providing value. Isn't that at the end of the day, isn't that the important thing? And so, even though at the time people pooh-poohed our accomplishments, they were accomplishments nonetheless, and we never reached a point where we're like, "Oh, well, I guess Rails can't scale. We've reached a number where we can't go beyond it. We're done." We continue to be able to scale. It actually became a bit of a meme joke, "But will it scale?!". This was a serious thing that people said in the early days of Rails. But that question wasn't so much about technology as it was about FUD: fear, uncertainty, and doubt. People who saw an interest in putting Rails down would often bring up scalability, because it was something you could throw out there before Rails had major applications like Shopify, like GitHub, or even like Basecamp at the scale it's at now, it never really had a foundation. In reality, Rails was essentially scalable from day one. Various people took this pretty seriously, some people so seriously that they would rewrite their system at some point as well documented in some cases. I, you know, making things fast is pretty fun. It's like, if you used to write algorithms, data structures. Like, computers are really fast. From personal experience, Shopify is a significant percentage of internet traffic. It's about 10% of e-commerce global. It's a large code base, a very large code base, by the way, if you would look at it, same folder structure as any Rails application that you would just generate on your laptop right now. It's on the latest version of rails. So most of the lines of code of Shopify are in Ruby. We are not like religious about using Ruby. We use the best tool, and Ruby is the best tool for a lot of types of problems that are being solved by the thousands of engineers in around Shopify. Shopify is pretty fast. It's totally doable to build. Like, I don't know who is supposed to see the kind of scale that you couldn't handle with Shopify? Like, we have uniquely complex, unique complexities that most people don't face. You know what's harder to scale than performance of web service? Finding foundational ideas that scale for 20 years and still feel good. That requires a level of foresight. You don't get it--like, that do-over is very, very hard to, like, to get. On the security side, it was a bit more tricky because there were things we needed to do explicitly to prevent common attack vectors, and we made a bunch of concerted efforts to ensure that security was a thing you could just rely on Rails being good at. The next big release for me was rails 2.3 in March 2009. A little bit longer and a lot more depth as the release that felt like Rails was kind of had arrived. This framework had everything a modern web developer needed to develop small scale, large scale apps and everything in between. At that time, jQuery was coming on the scene and we were bound and determined to make room for it. There were energy happening in the JavaScript world, and Rails wanted to meet it where it was arriving. After Rails 2.3, we had everything we needed. The toolbox was full. We were happy with the way all the tools behaved. There weren't gaps among them. We didn't have too many tools. It felt like we were at the sweet spot for web development. Where do we go from here? There was a new Ruby web framework on the scene called Merb. Rails 3.0 was that, that was like that was a merge with Merb, right? Holy hell, that was a, that took some doing. Oh my god! By the way, has this ever happened?! Like, have frameworks merged ever and became just better? That's a singular story too. We had a competitor. Merb came on the scene as a young upstart Ruby framework that challenged Rails by being faster, lighter, slimmer, doing less. Kind of the Rails to Rails itself. And it lit a fire under us as Rails developers, we wanted those things too. And we felt like we had those things to offer, and it was a competitor that really showed us another path forward. And Yehuda and Carl from the Merb core team showed us the way. We put a a significant effort into re-engineering the internals of Rails to be configurable, recomposable, modular, so that you could build a framework like Merb from it. The Rails and Merb teams talked and decided to merge together. This Ruby approach, this Rails approach, for some people not all, not most, it's not better. But for some people it is a hundred times better. It's not a bit better. And this is why you see the bifurcation of this thing, this is why you see the love and the hate, and very little indifference. Most technologies that exist in the world is like a small group of people who really like it, because they have a type of problems that are being solved. And most of the spectrum is indifference because not relevant to you that this exists or is good or bad, doesn't matter. Rails? people have very strong opinions about it, because it just it comes from a different place. I think that's precious, and exciting. It's been, you know... honestly like an honor to be part of. It's just like, again, it's been important. I know these terms are so weird. It's so weird to talk about an honor to hang out in a IRC channel that you got invited to, but, man, it was! Like, this is the most special. I would be a completely different human being, at a completely - my life would not have gone the way it did if I wouldn't have, if some of those dots I'm now looking at and can connect in a rearview mirror would have gone any which other into another way. So, deeply thankful for that. Just the the community that we were building, the friendships that we shared. And it's like, we had always been this team. It just felt so natural and so exciting. And I had never had anything like that before, to that degree. And it was really fulfilling in a way that nothing had fulfilled me before. Seeing the Rails community grow and seeing everybody, seeing others have that kind of experience of it's all it's theirs. It's individual. Each person has the opportunity to be in a place where I was, and I can help create an environment that's there for them and supports them and respects them. But that's all I can do. And, I have just I have a deep appreciation for others being able to share in that with me, and whatever small part I've had, it's been the experience of a lifetime. Things like Rails, things like Basecamp, things like 37signals. You can't plan these things. These things don't happen because you set up a business plan or something in advance. These things unfold and like anything that unfolds, it needs time to unfold. And I think that time proves these things out to some degree. As it says on the website at the moment, Rails really does allow you to go from Hello World to IPO with a tiny team. As you get started, we have a one person framework where a single developer is able to make a huge amount of progress in a minuscule amount of time. The community, the framework, the code base has never been in better quality than it is today. I have so much respect for what David has built, and what David's approach to leadership. Love it, hate it and do not deny its effectiveness and, do not -and this is important- ever, ever think that Rails is what it is despite of anything David does. It is what it is, it's as successful as it is, as good as it is because of everything David does. These things are not separable. There is no Rails without David. Ruby on Rails is full of people who were not trained to be computer scientists, who are not trained to be programmers, who came from all walks of life, who simply developed an interest in creating web applications, were able to learn how to do it with Ruby on Rails because it was easy, because it did not require this extensive background training to get something going. Ruby on Rails has, from the outset, focused on making it simple to get started, because if you can't get started, you can't keep going. That initial wall for so many people is so tall. I faced that wall myself when I was trying and failed to learn programming several times in my life. Ruby on Rails has to have this kind of slope. You start down really low, really simple, having to learn very little, and then you can go all the way to become the top person programmer in your company, in your industry, even if you don't have the credentials. I love that part of Ruby on Rails. I love the diversity of the people who have been able to create a career in programming because of this framework that we've created.