I have had no clue on CRM. It always was “something from SAP” for me. But I was wrong, as Ray Stoeckicht, one of the Co-Founders of Zurmo explained. CRM is not tied to SAP alone I do know now. And it can be easy and fun! Let’s look at an interesting project which will find a place in my own infrastructure soon.
What is CRM?
“Customer relationship management (CRM) is a widely implemented model for managing a company’s interactions with customers, clients, and sales prospects.” – Wikipedia
A CRM helps you to keep contact with your customers. If you are working in Marketing or if you just want to keep your customers tied to you when you helped them using your Startups product a CRM system might be for you. That kind of systems are providing tools to implement your business process which should ultimately lead to happy customers and of course sales.
And what is Zurmo?
Zurmo is an open source CRM application that is mobile, social, and gamified. It is written in PHP utilizing jQuery, Yii Framework, and RedBeanPHP. Although located in Chicago, Zurmo has an international footprint with contributors and end users all over the world. Language support includes English, Spanish, French, German, and Italian.
Zurmo has been founded in 2010. The founders of Zurmo saw “an opportunity to build a better open source CRM application based on better technology and progressive user adoption methodologies”, according to them.
You can follow Zurmo on Bitbucket, where it is developed by a couple of people.
Fueled with Agile, Solid on Unit Tests
Zurmo is developed using an agile method, so Unit tests play a very important role in development. Without tests it would be very difficult to develop an application of this complexity and be sure that everything works correctly.
“We have unit tests with code coverage of about 85%” – Ray Stoeckicht
“We have unit tests with code coverage of about 85%”, Ray told me, “functional tests, and walkthrough tests.”
The latter one is a mix between unit and functional tests, used to test if controller actions are executed correctly. A code coverage of 85% is pretty high. Some cases are only hard to test, like specific runtime errors. In most cases it makes more sense to leave such tests out as they just waste your time and do not give a value back. With that in mind I would consider every project with a code coverage of 80% as “fully unit tested”. Of course one needs to look into a project in detail, but in the Zurmo case I think it is pretty valid to say so.
“We developed our custom continuous integration environment, which covers unit tests, functional tests, code violation, checking for missing translation messages, performance, and more.”, Ray explained further.
But wait a minute, why wasn’t Zurmo just using Jenkins, like the rest of the world seems to do? Implementing a full-blown CI is a huge task alone. And hey, after all there are services as Drone.io available.
“Prior to creating our own CI, we explored using Jenkins and Hudson. Since Zurmo is written in PHP and our developers are well versed in PHP, we wanted to make sure the tools we were using were easy for everyone to utilize. In the beginning, our CI evolved naturally. We developed a few scripts and then a few more. Before we knew it, we were pretty far down the road and we did not want to expend the energy switching to something else when what we had fulfilled our requirements. It might have taken more effort to rewrite everything to work with Jenkins or Hudson. In the future, we may consider switching to a new CI server, but for the time being, everything is working very well.”, Ray responded.
Well, it makes sense, does it? Actually I have a few (smaller) PHP projects myself for which I don’t have Jenkins. Just because it is not so easy to set up. Because you simply need to install “something”. Jenkins is huge, powerful, but it can eat your time too. And your nerves. The Zurmo team walked down the pragmatic road. It’s a good road.
The Zurmo team is committed to Test Driven Development. For the sake of a stable application they developed not only code but also a religious zeal for testing. Not the worst thing I have heard.
Upgrade and Test
“Gone are the days of ‘upgrade and pray’. Now it is ‘upgrade and test’. With the testing infrastructure in place, you can create and maintain a custom-built CRM system with the assurance that future updates are not going to break your installation.”, Ray said.
Zurmo is Open Source, and as such it is possible that Users will extend it to their own needs. Zurmo just reached Version 1.0 which usually marks “something stable”. A release, you can build your own things upon. Nobody knows what the future brings, but some reliability in terms of stable APIs would be nice, right?
“Our philosophy regarding backwards compatibility revolves around judgment. We would love to have everything backwards compatible, but that is not always reasonable. For our web API, it is an absolute requirement since it is most likely to be interfaced with. If something else needs to be, we will make a judgment call on each piece individually. Going back to TDD, it is always best to be writing tests for any custom work so that if we come out with a new release, you can run the tests to make sure your customizations are still compatible.”, was the response.
That’s actually ok. I consider the Web API as crucial to remain as compatible as possible. It’s usually much work to make an update to it. It seems if you want a custom modules in Zurmo you need to extend abstract classes. These modules can be easily covered with PHPUnit. If you don’t wait too long with upgrading your Zurmo, you should be fine, as I expect Zurmo to make constant but small steps. If you don’t want to use the web api or write custom modules you have no problem anyway – that will be most likely my case.
Stripped down to the bones: framework decisions
Ray: “The Yii Framework was chosen as a base framework because its components tie tightly together, it is very fast, and has a strong community. Although Yii is a solid PHP framework and fit the best to our requirements, we still have had to modify it heavily. Yii Active Record did not satisfy our database abstraction plan, so we decided to use the RedBeanPHP ORM system, which is a lightweight system. It is not as popular as Doctrine or Propel, but it satisfies our needs.”
No Zend Framework, but Yii. I have heard many people saying Zend Framework 2 came too late, and others – like Yii – would take the place of it. But why exactly Yii?
“We felt Yii was a great framework because it was lightweight, fast, clean, not bloated, and had a strong community.” – Ray Stoeckicht
“Before we started building Zurmo, we looked at Yii, Cakephp, Zend, and Codeigniter. We felt Yii was a great framework because it was lightweight, fast, clean, not bloated, and had a strong community. It had a full set of functionality and matched up well with the other frameworks. We also liked the event driven architecture. Overall, we are delighted with the decision.”, Ray responded.
As already mentioned, the Zurmo team was not very happy with Yii Active Record and have chosen RedBeanPHP ORM. An ORM is a framework which can translate the results of a database query into PHP objects and vice versa. It is a critical decision to make: not only which framework to choose, but also IF one really wants it. While in the world of Java there is almost no doubt to use one of the big players (Hibernate, Apache Cayenne, MyBatis or others) ORM has not yet landed in the PHP world. It sometimes eats up your performance and you need to have some more skills to use them correctly. PHP makes it easy to work with databases in general, so many people just don’t bother with ORM. Of course, on enterprise level things might look different.
RedBean was previously unknown to me. I know Doctrine and Propel, of course.
“RedbeanPHP is amazing and easy to use. I’m not sure why it is not getting the popularity as other ORMs.” – Ray Stoeckicht
“RedbeanPHP is amazing and easy to use. I’m not sure why it is not getting the popularity as other ORMs.”, Ray told me. “Doctrine has been around longer so there has been more of a following over the years. We would recommend RedBeanPHP based on the project complexity. If you are building something simple for your own use, then it might not make sense. If you are building a complex app for resell, then it should be considered. There are quite a few factors need to consider to use RedBean or any ORM for that matter.”
He continues: ”RedbeanPHP can work in two modes: unfrozen, where the database structure is not fixed, and frozen where the database structure cannot be changed. During development, unfrozen mode should be used, and once the database development is done, the frozen model should be used. Frozen mode is much faster than unfrozen, so it should be used on production servers. With this approach, we just define the model’s metadata and the table is created automatically.”
While the team did not waste time for performance comparison, RedBean seems to help getting people on speed. Looking at the projects website it actually looks pretty easy. I don’t like the heavy use of static methods there. In PHP world you don’t need to worry on multithreading, so this is not so much of a problem.
Customer-Relations for all
“Zurmo challenges the way people approach CRM. Traditionally, CRM systems have failed end users. CRM failure rates have remained consistently at 47% over the past ten years. We seek to correct this. For our end users, our mission is to make the system intuitive, easy to understand, natural, (and dare we say fun?). Gaming mechanics, training and guidance should be embedded in the application so people can accomplish their goals effectively.”, Ray mentions.
Yes, I can confirm that. The brief look I once had on SAPs CRM module made me scared going away, burying the term CRM deep in a dark corner of my mind. Now comes Zurmo. There is a demo available on their website which i tried and really liked.
It’s actually very easy to use. I am not longer scared. Don’t know if “gaming mechanics” are for me, but in a big team it might be fun and motivating. Gaming? In short and just scratching the surface: get points for your work and show your success to your team mates. I can imagine this works great for a group of people who want to drive their company forward.
For whom is Zurmo now? For me, the almost-single-man show? For a couple of friends, who have around five employees? Or is it “big co” only?
”Our ultimate goal is to create a CRM that everyone will actually use.” – Ray Stoeckicht
“Zurmo can be used by anyone from a 1-person freelancer to a 100 user sales organization.”, Ray said, “As we build the feature set, it will become more and more geared towards larger, complex use cases, with many moving parts. The more integrations, high volumes of data, and customizations, the better Zurmo is positioned to handle the use case. We aspire to be the first open source CRM that can scale to the enterprise. Currently, we have a customer that uses Zurmo as the core system for centralizing millions of data points and running the company’s entire operations. We also have a rugby team in the UK that uses Zurmo for activity management and sales force automation. Gamification and social collaboration works better for larger user deployments, but individuals can still benefit from the application.”
Open Source & the community
“Our project is built on an honest open source model, supported by a diverse community passionate about engineering the highest quality CRM on Earth.”, Ray said.
“Our project is built on an honest open source model” – Ray Stoeckicht
Bars are set high for Zurmo. And Zurmo has chosen to become an Open-Source-Company, like for example RedHat. And similar to much of RedHats Software, Zurmo has chosen the GPL license for their work. GPL is often used, when the original author wants to make sure deriving works are published as Open Source as well. Because if you extend GPLed software, you are “forced” to release your extensions as GPL software too. In the PHP world it is not common to obfuscate your sources. But basically you could not extend Zurmo and then deliver obfuscated sources to your customer. Also you are not allowed to do some modifications, build an own trademark and sell Zurmo as close-source-product.
Of course, if you are developing Zurmo extensions for your company’s internal use you are not forced to make it available per download. But if you would sell it to another company you have to deliver the source code.
GPL makes sure your contributions to the community remain free. It’s more than a license, it’s a philosophy and some even say it is a religion.
On the other hand, this is considered very restrictive by some. For example, at the Apache Software Foundation the Apache License is used. Similar to the MIT license you can basically do with the software what you want. Download a library, build a product upon it and sell it. This makes the license very attractive for people who finally want to deliver a product which is not Open Source. That said, freedom is of course preserved too for the original sources. It is just that extensions might or might not become Open Source themselves.
“We are building a fully functioning and scalable open source version that is not limited by features. Because of this, it is fair to retain some protection and the GPL license gives us that. In the future, we do intend to offer a commercial version that is licensed under a commercial license, however, the core feature set will remain in the open source version.”, Ray justified their decision.
“We do allow access to the repo for those who want to contribute.” – Ray Stoeckicht
“We do allow access to the repo for those who want to contribute. We encourage anyone to contribute to Zurmo and if appropriate, we will include their code contribution.“, he continues. “The community is a mix of developers using Zurmo to create their own custom app to end users at companies using Zurmo in a more traditional CRM setting. I would estimate it is about 50% end users and 50% outsiders/developers.”.
“We are extremely grateful for the community that has rallied around the application. The Forums are very active and we use much of the feedback for our development roadmap and always take into consideration the suggested improvements.”, he finishes.
I can imagine that he smiles, when he wrote that. A good community is so-what valuable. It is not possible to make a product a success without a strong community in back. And it seems there is one; or at least one is growing. As an aspiring user I am now curious for the upcoming features of Zurmo. Not sure if I really ever need one of these commercial features (due to my companies size). But the rest is open source, and that’s a good thing for me.
Thank you Ray for telling me so much about Zurmo. The good parts of this post has been written by Ray himself, and all the mistakes and spelling errors are my own fault.
Ray Stoeckicht (Co-Founder)
Follow me on Twitter :-)