13
RUBYISTS.EU Stairway to the European Ruby Community Integration Julio Javier Cicchelli Wednesday, November 4, 2009 The interactive presentation of the Rubyists.EU initiative comprises of two main parts: an ideational fragment and a technical section. The ideational element elaborates on the concept behind the Rubyists.EU project. It outlines the vision harbored by his initiative and it will describe its mission in the context of Ruby community development throughout Europe. The second part of this dynamic endeavor discusses the technical means used to infuse digital life into this initiative. It pinpoints how a the following heterogenous mixture can be pieced together with a tiny drop of Ruby glue: * Cucumber [http://cukes.info /] * DataMapper [http://datamapper.org /] * Git [http://git-scm.com /] * Google Maps API [http://code.google.com/apis/maps/ ] * HAML [http://haml-lang.com /] * Heroku [http://heroku.com /] * JQuery [http://jquery.com /] * JSON [http://json.org /] * PostgreSQL [http://www.postgresql.org /] * Rack [http://rack.rubyforge.org/ ] * RSpec [http://rspec.info /] * SASS [http://sass-lang.com /] * Selenium [http://selenium.rubyforge.org /] * Sinatra [http://www.sinatrarb.com/ ] * Webrat [http://wiki.github.com/brynary/webrat ] It also explains how various social media platforms can be integrated into this living and breathing entity.

Rubyists.EU: Stairway to the European Ruby Community Integration

Embed Size (px)

DESCRIPTION

Slides and Notes of the Official Presentation of the Rubyists.EU Initiative at the RubyEnRails 2009 conference - Amsterdam, The Netherlands.

Citation preview

Page 1: Rubyists.EU: Stairway to the European Ruby Community Integration

RUBYISTS.EUStairway to the European Ruby Community Integration

Julio Javier Cicchelli

Wednesday, November 4, 2009

The interactive presentation of the Rubyists.EU initiative comprises of two main parts: an ideational fragment and a technical section.

The ideational element elaborates on the concept behind the Rubyists.EU project. It outlines the vision harbored by his initiative and it will describe its mission in the context of Ruby community development throughout Europe.

The second part of this dynamic endeavor discusses the technical means used to infuse digital life into this initiative. It pinpoints how a the following heterogenous mixture can be pieced together with a tiny drop of Ruby glue:

* Cucumber [http://cukes.info/] * DataMapper [http://datamapper.org/] * Git [http://git-scm.com/] * Google Maps API [http://code.google.com/apis/maps/] * HAML [http://haml-lang.com/] * Heroku [http://heroku.com/] * JQuery [http://jquery.com/] * JSON [http://json.org/] * PostgreSQL [http://www.postgresql.org/] * Rack [http://rack.rubyforge.org/] * RSpec [http://rspec.info/] * SASS [http://sass-lang.com/] * Selenium [http://selenium.rubyforge.org/] * Sinatra [http://www.sinatrarb.com/] * Webrat [http://wiki.github.com/brynary/webrat]

It also explains how various social media platforms can be integrated into this living and breathing entity.

Page 2: Rubyists.EU: Stairway to the European Ruby Community Integration

Hi! I am Javier. Wednesday, November 4, 2009

I am Javier Cicchelli (@monsieur_rock).I am an experienced Software Engineer and a genuine technology artisan.I am a double national. I was born and raised in an Italian family in Buenos Aires, Argentina. I have spent the last 6 years of my life in Europe. I used to live in Paris, France. Then, I decided that I needed a little change of the scenery and I moved to Amsterdam, the Netherlands.

Page 3: Rubyists.EU: Stairway to the European Ruby Community Integration

This is what we do. Wednesday, November 4, 2009

I am one of the jukebox heroes of Rock & Code.Rock & Code is a brand new Software Company located in Amsterdam, The Netherlands.In its gist, it is an artisan Software shop aimed at providing durable Software and Web Solutions.Specialists with different academic backgrounds try to incorporate the elements of competitive edge, simplicity, and star power into all the products and services we provide.

Page 4: Rubyists.EU: Stairway to the European Ruby Community Integration

Today... you are here!

Wednesday, November 4, 2009

I would really like to thank you all for your interest in the Rubyists.EU initiativeThis exciting endeavor stemmed from a true paradoxNowadays the P.I. World appears to be a much smaller place in comparison to the world a decade ago (P.I. = Post-Internet)Nonetheless, lots of people cannot escape the confines of their environment and they tend to think local. Consequently they often do not see the forest of opportunities for the separate trees. This is more than unfortunate.That is the reason why I am going to talk about Ruby and Europe...

Page 5: Rubyists.EU: Stairway to the European Ruby Community Integration

???Wednesday, November 4, 2009

No! Not this Europe!!! I was referring to the continent Europe! Yet, this slide looks kind of cool ;)Now, let’s get to the very heart of the matter and somehow try to comprehend the real significance of Europe. Once we cover that, we can discuss the correlation between Europe and the Ruby programming language, and then draw the relevant conclusions about the possible fusion of those two concepts into a single dynamic core.

Page 6: Rubyists.EU: Stairway to the European Ruby Community Integration

That Europe.

Wednesday, November 4, 2009

Now here it is. Europe, our continent. Do not worry, this presentation is not going to devolve into a geography lesson. Nonetheless, let us just get a couple of facts straight. Do you know that Europe’s territory is bigger than 10.000.000 km2 and it is populated by more than 730.000.000 people?One of the unique features of the European continent is its multifaceted mosaic of cultures and languages. You can literally trace the vestiges of time, you can see monuments of both antiquity and modernity.Another advantage is the fabulous infrastructure that facilitates the spread of both transportation and telecommunications. Little by little, the European borders have become extremely fluid. As consequence, people have started traveling through Europe more intensively.As a result of various events and phenomena, today we have the Europe we have. Yet, the big question is how all those geographical advantages can benefit the individual Rubyist developer in Amsterdam, in Berlin, in Paris, in Sofia, or in Moscow?

Page 7: Rubyists.EU: Stairway to the European Ruby Community Integration

?Wednesday, November 4, 2009

After enumerating all the pros that the Old Continent offers, and after briefly analyzing the the social changes brought by the quick advancements in telecommunications, we can draw a slightly dark conclusion: despite all the resources we have at our disposal, we (the Rubyists) do not really know what really is going on with Ruby in Europe (for example, we do not know what the Hungarian Ruby group is up to)This is, evidently, a paradox.Although there are numerous Ruby/Rails User Groups scattered across Europe (incubating great ideas, possessing extensive knowledge and working on fabulous projects) very few of them are aware of one another’s presence.As a consequence, this lack of awareness may limits communications, cooperation and collaboration.Ultimately, the development and the adoption of the Ruby Language may be obstructed due to these obstacles.

Page 8: Rubyists.EU: Stairway to the European Ruby Community Integration

RUBYISTS.EU!

Wednesday, November 4, 2009

In order to fill in the Ruby void in Europe, we embarked on the sweeping Rubyists.EU endeavor.

In its gist, this initiative is a free of charge communications platform, which aims at encouraging better communications among Rubyists in Europe.

Its mission is to promote awareness, enhance assistance, and further boost cooperation and collaboration among Ruby/Rails individual hackers and User Groups in Europe.

It essentially offers a joint adventure, which will bring substantial benefits to the ones who wish to share it.

Who could possibly benefit? The answer is both Ruby/Rails User Groups and individual developers. If a group joins the Rubyists.EU initiative, its members can attach an extra layer of visibility to their Ruby/Rails community (and themselves). Enthusiastic hackers will have the opportunity to join new communities or even start their own.

What are the advantages that the Rubyists.EU platform offers? Members can share details about their regular group meetups, bring interesting events and conferences to the attention of others, announce special presentations, make their groundbreaking Ruby advancements public, or simply publish the pioneering Ruby projects they are working on.

Page 9: Rubyists.EU: Stairway to the European Ruby Community Integration

Wednesday, November 4, 2009

Why are we doing this?We believe that every country in Europe has something to offer and to share with the rest.We would like to see if every country has a particular vision of Ruby and explore how that can contribute to and essentially facilitate the adoption and the development of the Ruby language in Europe.

Page 10: Rubyists.EU: Stairway to the European Ruby Community Integration

Chosen Platform.

DataMapper

RSpec

Webrat

REST API

Wednesday, November 4, 2009

The technical specification of the Rubyists.eu platform is essentially a result of the perfect mix of several Open Source technologies.

Before explaining the whole constitution of this platform, I would like to point out that our Testings are carried out by the combination of Cucumber [http://cukes.info/] + RSpec [http://rspec.info/]. Due to the Web nature of the project, I am also employing Webrat [http://wiki.github.com/brynary/webrat]. Because of the significant amount of the Javascript code that I am utilizing, I incorporated the Selenium framework [http://selenium.rubyforge.org/]. The core of this platform is composed of Sinatra + Rack. Sinatra [http://www.sinatrarb.com] is a light-weight DSL utilizes for quickly creating web applications in Ruby. It keeps a minimal feature set for developers and is an excellent tool for creating small to mid-sized web applications. It is based on Rack [http://rack.rubyforge.org/], which as everyone probably knows, is a Ruby library that provides an interface between web servers supporting Ruby and Ruby web frameworks. Much of the underlying infrastructure is handled by Rack. 

The selected database is PostgreSQL [http://www.postgresql.org/] . This Open Source ORDBMS (Object-Relational Database Management System) was chosen because of its robustness, its features, and (mainly) because it is the default database system supported by Heroku.

The connection and the operations between the Sinatra-powered core and the database are established by DataMapper [http://datamapper.org/]. This is an object-relational mapping library for Ruby. DataMapper has a number of good features. It is independent and it does not tie in with any particular framework.  It is designed to be fast and efficient. One of its pros is that it often delays interaction with the data store and it initiates it only when it is required.

Our platform utilizes a User Interface based on the Google Maps platform. Google provides HTML and Javascript API [http://code.google.com/apis/maps/], which allow developers to easily transform a simple map into a completely interactive application. In addition, we’re using JQuery [http://jquery.com/] library to simplify and simultaneously AJAXify our Javascript code on the client. The AJAX functionality uses JSON (JavaScript Object Notation) [http://json.org/] to marshall objects for both synchronous and asynchronous transport. The Google Maps standard UI is embedded in the generated HTML structure, defined and generated by HAML [http://haml-lang.com/]. HAML is both a simple markup language for templating HTML on a web page and a compiler of HAML-to-HTML and vice versa. Following the same principle, the SASS [http://sass-lang.com/] defines and generates the CSS representation of the website. The main purpose of developing the front-end this way, is to separate the HTML structure, the CSS representation, and the Javascript functionality unobstructedly.

As a direct consequence of the Sinatra core, this platform already provides a RESTful API that allows our platform to interact with any existent client. This would allow developers and Ruby/Rails User Groups to integrate its functionality to their own websites, projects, applications, etc.

Last, but not least, this framework is deployed by Heroku [http://heroku.com/]. For those who still have no clue about Heroku, it is a Ruby-specific cloud-computing platform that provides specialized Ruby hosting services for developers. It allows Ruby developers to almost instantly deploy web applications on the Internet. Heroku supports Rack-based web applications so deploying our Sinatra applications on Heroku is a piece of cake. While Heroku charges for hosting, it also provides a free basic tier account. It should be remarked that this platform requires the intensive use of Git [http://git-scm.com/], a powerful decentralized SCM (Source Control Management) system, in order to deploy applications.

Currently this platform is isolated from the rest of the available systems out there but we envision integrating it with the existing communication platforms such as Twitter, Facebook, Google, LinkedIn, and even Freenode in order to facilitate and ensure the transparent communications among Rubyists in Europe.

Page 11: Rubyists.EU: Stairway to the European Ruby Community Integration

Development Cycle.

http://eggsonbread.com/2009/07/22/behavior-driven-development-in-a-nutshell/

Wednesday, November 4, 2009

In order to develop our features, we’re using the BDD (Behavior Driven Development) approach.For those of you who are still unfamiliar with the BBD, the latter is an approach, which emphasizes on the domain language and the interactions occurring in the Software Development process. It implies outside-in development: it starts with User Interface definition and it ends with a functional piece of code. Therefore, you have to design scenarios for the features you want to develop and then, you simply have to follow the BDD process:1. For each scenario describing a feature2. Run the scenario – it fails (go red)3. Define the first step – go red4. Write down the application code getting the step to pass – go green5. Refactor the code and repeat steps 4 & 5 for each step until…6. The scenario passes – go green7. Refactor the application code

Once you are done, you can move on to the next feature. :)These scenarios guide developers throughout the entire development process. They force people to focus on writing down the test and the application code required, and only they are developers allowed to move on to the next step. Developers are satisfied every time they pass a step successfully because they know for sure, which of the features they have been developing function properly.

Page 12: Rubyists.EU: Stairway to the European Ruby Community Integration

Get Involved.

Get in Touch.

Wednesday, November 4, 2009

The Rock & Code team has worked intensively to make this initiative happen but we weren’t alone.Some of the members of the Amsterdam.rb [http://amsterdam-rb.org/] were among the first to know about this project and they decided to assist us with it.I would like to thank Fernando Vezzosi, Wes Oldenbeuving and Wijnand Wiersma from Amsterdam.rb for their initial feedback and contribution. Since this is an initiative for the whole European Ruby community, everybody is welcome to join in and even collaborate with ideas, suggestions, comments, constructive criticism and/or code. You can get involved in this initiative by following and/or forking the source code from our repository on Github [http://github.com/rock-n-code/rubyists.eu].

You can get in touch and/or make comments, suggestions for new features or propositions to improve the existing ones by joining our Google Group and subscribing to our mailing list [http://groups.google.com/group/rubyists-eu]. You can follow us on Twitter [http://twitter.com/rubyists_eu], join our Facebook page [http://www.facebook.com/pages/Europe/RubyistsEU/188196555796], and join the Rubyists.EU group on LinkedIn [http://www.linkedin.com/groups?gid=2400973]. Furthermore, you can also chat with other Rubyists on our IRC channel on Freenode: #rubyists.eu [irc://irc.freenode.net/rubyists.eu].We would love to hear from you and we would really appreciate it if you to tell us what do you think about this initiative. We’re looking forward to discussing all the aspect of the Rubyists.EU initiative with you!

Page 13: Rubyists.EU: Stairway to the European Ruby Community Integration

http://rubyists.eu

Wednesday, November 4, 2009

We believe that this interactive environment could greatly impact and even change the lives of all Ruby enthusiasts in Europe.

This initiative harbors the main goal that in time, by forging long lasting bonds, European Rubyists could foster a sense of belonging to something bigger than their local Ruby communities.

Hopefully, in the long run, Rubyists.EU could help eliminate the obstacles that prevent the smooth adoption of the Ruby language and it would contribute to the development of a robust Ruby community in Europe.