September 17, 2014 Javier Eguiluz

An interview with Manuel Raynaud, lead developer of Thelia, a Symfony-based e-commerce solution. Introducing the new Thelia 2 and how it's in perfect harmony with Symfony.

Could you please first introduce yourself?

My name is Manuel Raynaud and I am responsible for Thelia development. Officially, I've been working on Thelia for 2 years, but I have been following it since its first version!

Generally, I work only with Open Source, both in France and abroad, including time spent in Argentina. Not only do I participate in free software communities, but I am also one of the founders of Clermont'ech, a development group based in Auvergne, France.

Could you tell us what Thelia is all about?

Created in 2005, Thelia is an e-commerce solution published under the LGPL license (Lesser General Public License). Upon my arrival in 2012, we decided to re-design the solution in an effort to provide a more robust and modular tool. One of the objectives was also to promote Thelia abroad, which is why we decided to code, comment, document and communicate only in English.

The stable version of Thelia 2 was released in April 2014 and now we're working on version 2.1, which is expected to be released by the end of the year. You can follow the development activity of the project at github.com/thelia/thelia

Who should be using it? And who is using it today?

At the beginning, Thelia was primarily used by integrators and web designers. It appealed to their taste for flexibility and easy customization and the "loop language" is simple to learn. In general, Thelia proved to be both developer and integrator friendly.

Today, we note that Thelia version 2 is used for the most part by developers (and more specifically by Symfony developers). Many French agencies also use Thelia to create their websites and we are working with many of them to develop new functionalities.

What's the story behind Thelia?

The first version of Thelia was built from scratch in 2005 and developed in pure PHP code and MySQL. At that time, there wasn't a fast, simple tool to handle these needs in an easily customizable way. Weary of the difficulties encountered to create e-commerce websites, we decided to develop Thelia, our primary goal being to render it easy to use and to customize. In order to help users get their e-shops up and running rapidly, Thelia was developed entirely in French.

What Symfony components does Thelia use?

Thelia version 2 uses the Symfony components such as Config, DependencyInjection, HttpKernel, Form and EventDispatcher.

Why Symfony components and, why in general?

Firstly, we wanted to stop using Thelia's legacy code and to replace it with modern and standardized PHP code. Then, we wanted to keep Thelia's philosophy, meaning one core with many additional modules. Considering all this, we decided to use standalone Symfony Components.

This choice is not uncommon: Drupal, phpBB or eZ publish had also decided to use Symfony2 Components earlier in the game. And last, but not least, using Symfony2 components also helps to bootstrap developments. Thelia version 2 was created, from scratch, in only 18 months!

What are the main advantages of using Symfony for a project like Thelia?

First of all, using Symfony guarantees high quality. Symfony is well-tested and has popularized many best practices such as dependency injection and various other design patterns in the PHP world.

On top of that, the de-coupled Symfony components allow us to maintain our own structure and therefore, to stay true to our philosophy. I think the most powerful components used in Thelia are DependencyInjection and HttpKernel: HttpKernel because it provides a new way of converting a request into a response, and DependencyInjection because it centralizes all the objects used in Thelia and facilitates sharing services between all the parts of the application.

What were your biggest challenges when developing the project with Symfony?

Integrating the routing component was not easy. First, we needed a collection of routers, with a priority system, so we started developing this component on top of Symfony's routers. But after some research, we found the Symfony-CMF router component, which manages routers in the precise way we wanted.

Another tricky component is the Form component. We spent a lot of time learning it and finally found a way to integrate it in Thelia.

How is Thelia involved in the Symfony community?

We participate in Symfony events. Last year we went to the SymfonyCon in Warsaw to meet the community and also to participate in the hacking day. It was a wonderful opportunity to share information with other Symfony-based project developers like Vespolina or Leaphly.

This year we will attend the Symfony Live London event as a community sponsor. In addition, we plan to develop modules to interface Thelia with Akeneo PIM and OroCRM. After that, we will provide a complete solution dedicated to e-commerce and based on Symfony.