The first week of the Facebook Open Academy project has now gone by, and it feels like we’ve had a good start. The first couple of days went into setting up the work environment. There were no major problems, although we had to do the setting up twice, since on the second day we discovered that we had used the wrong set up instructions and had to do it all over again. After the set up was done we dived right into the source code, so the rest of the week went by as we tried to figure out how everything works by watching code walkthrough videos, reading blogs, making a mindmap and looking at code. During this week we also had some email exchange with the other members of the team. Everyone introduced themselves by telling a bit about where they are from, what kind of experience they have and why they chose Ruby on Rails as their project.
Ruby on Rails
The project I’m working on is an open-source web framework called Ruby on Rails. It was created by David Heinemeier Hansson and its initial release was in 2005. As the name suggests, it is written in the Ruby programming language. Rails emphasizes software development patterns such as Convention over Configuration and Don’t Repeat Yourself, and it’s organized using the MVC pattern. By using conventions, time that usually goes into configuration and figuring out naming and placement of files can be used more productively. DRY makes code easier to maintain and reduces the chance of bugs. Together CoC and DRY make Ruby on Rails a framework that makes web development fast and collaboration between developers easy.
Ruby on Rails has great documentation when it comes to using the framework. Their website has a guide that teaches you everything you need to know to start developing Rails apps. Documentation about the inner workings of the framework is not as good, but it’s there in the form of brief explanations on the github pages and comments within the code. It would be nice to have some more in-depth explanations on the Ruby on Rails website about how the framework is built.
The Rails core team consists of people like David Heinemeier Hansson, the creator of Rails and founder of Basecamp; Jeremy Kemper, a developer at Basecamp; José Valim, lead-developer and co-founder of Plataformatec; and Aaron Patterson, a programmer for Red Hat. A full list of the Rails core team can be found at http://rubyonrails.org/core/.
Our team
Our team consists of 21 students and five mentors. Our mentors for the project are Matthew Draper, Aaron Patterson, Jeremy Kemper, Andrew White and Eileen Uchitelle. Aaron, Jeremy and Andrew are members of the Rails core team, so we should be in good hands. Eileen is a ruby programmer working at Basecamp, and Matthew is working on ManageIQ at Redhat and has been using Rails off-and-on since 2006.
The students in the project come from many different backgrounds and their experience with Ruby on Rails varies. There are four students on the team from our university. Henrik Nygren, Juho Leinon, Qian Zhou and me. Henrik, Juho and I have very similar experience with rails, having done a Ruby on Rails course and a couple of projects together. Qian has participated in Rails Girls. In addition to us there are 15 students from the US, one from China and one from Finland. Most people on the team have a little bit of experience with Rails, but some have almost no experience at all while some have already worked on large Rails projects or contributed to Rails. The most common reason people chose Rails as their project was to get a better understanding of web frameworks. Our team will communicate using the mailing list that we used to introduce ourselves and a group chat tool called Campfire, once it has been set up.
At this point I feel like there is still a lot to learn before I can really start contributing to Ruby on Rails. The first thing I need to improve is my knowledge of Ruby. I still know quite little about the language and what it can do as I haven’t used it a lot and I’m still a bit unfamiliar with the syntax. Fortunately, this is something that I feel is quite easy to improve on and should not take too much time.