On this meetup event our CEO Jimmy talked about the great things about having a firm and working with open source, but also about some of the problems.
Finding the right balance between making money and contributing to any Open Source project is hard. By sharing some of his insights, success stories and failures Jimmy hopes to help future entrepreneurs building their own Open Source-based firms.
Open Source Entrepreneurship
I love systems. Ever since I was a child I have always felt a strong need to arrange stuff. I love taking something that is complex in nature and transforming it into processes that you can manage. When I was a kid people thought I was strange, arranging the contents of my drawers in different colours and categories. But its like what you say; You only connect the dots looking backwards.
For most of my life I have been an avid supporter of Open Source ideas. For many people, the idea of ”sharing” is attributed to being young and rebellious. Ive many times heard that ”If youre not a communist when you’re young you are heartless, if you’re not a capitalist when you’re old you’re brainless”, but the insight that sharing ideas actually make more value in the world than not sharing ideas has sticked with me for life.
Today, I run a business. I have Finally found a good way to satisfy my fetish for arranging stuff. I try very hard every day to be a great servant leader, using Jurgen Appellos words (Management 3.0 etc). In that business, we only deal with the Open Source project we all love – WordPress. Using WordPress we build websites, e-commerce and intranets. It’s loads of fun and we do our best on every project.
For a client, investing in open source in general and WordPress in particular has many benefits. A worldwide community of consultants guarantees that no single entity disappearing will cause the project any major harm. The same community has also provided lots and lots of great (and free!) software, pushing the limits of time needed to deliver great projects.
In this post I’m going to share some insights in what I believe are important factors for having a great business working with WordPress. Because Open Source and WordPress are great. But there are also problems that needs solving, and these go beyond just selling stuff.
Problem #1: Employing good people
There is no way to know how skilled consultants are. Everyone are ”experts” in their own minds. How can you ever decide who is skilled and not?
We are good because we have failed. A lot of times. And we’ve had a very controlled growth pace, minimizing margins for error. But oh boy, I´ve worked. I’ve worked a lot.
By having a good foundation and people that I trust i can just ask them to evaluate other people. I mostly talk with people and check how I feel their culture rhymes with ours and if they don’t have crazy money needs, otherwise I ask someone else to do an on-site evaluation with them. That is usually that they do some small thing together for a few hours and analyse how the person solves problems. That works great!
Problem #2: Claiming responsibility
One major problem is; Who is responsible for maintenance, bugs and hidden flaws, and how can we deal with it?
Since updates for WordPress appear to just ”drop out of the sky” as free stuff, who needs someone to help with updates and security audits, right?
I’m sorry to say, but it doesn’t work like that. Stuff break. And it breaks often. In order to be safe we need tests, and lots of them.
At Angry Creative, we have reversed how we think about tests. ”Reversed? What?” you might wonder.
Usually, you have Unit tests at the base of our tests. A unit test can easily be explained as a function that controls what another function does.
In conjunction with unit tests you often have selenium tests. These are tests that mimic a real user in a browser, clicks buttons and secures that function a, b and c combined actually works to create value for the client.
We don’t believe that we can work with test-driven development working with a CMS.
Test-driven-development (TDD) is when you create your unit test first, then you write your feature. This is often considered the essence of good craftsmanship. But we simply can’t. We rely too heavily on modules that are in the plugin repository that someone else in the community built. And since they didn’t work test-driven, we can’t really do it either. And since clients most often doesn’t know what unit tests are, they compare our quotes with other people who doesn’t do unit testing. Unfortunately, its not good business. We only do unit tests where we really feel that we can’t do without them.
Instead, we have a Behaviour-driven-development (BDD) approach. That is basically, if we click this, we expect this to happen. Using this approach it makes more sense using Selenium for our tests. That speeds things up a lot, while still maintaining a low level of bugs introduced in production.
This is great and all, but a lot of times we struggle more with regression faults in CSS than anything else. And this used to be our most common complaint from clients. But; by introducing another layer as standard in our testing process we have lowered client complaints to almost being non-existent.
What we did was that we used a pre-existing technology (Wraith) with some adaptation to compare the site in a ”before” and ”after” state. The software visits the website, scrapes the content and screenshots the pages, and then does the same for the version of the site where we have made changes. This way, unwanted changes are spotted easily and never reaches production.
This way we can claim responsibility and do a real good job, too. Its great.
Problem #3: Project ownership
The question of who controls what is accepted into core can be a problem.
The question of who controls what is accepted Its not really a problem in the sense that no-one CAN do it or isn’t ALLOWED to do it. The problem in my opinion is rather who really takes the time and effort to do it?
Committing to core is hard. It requires a strict approach, unit tests and good workflow. You can’t really hire juniors and expect them to commit to core on their second day of work. It doesn’t work like that. The people that has the skill to commit to core are the people who has been there for a while. That many times mean that if you want to commit to core, you’ll either have to force people to do it on work-time, or you’ll have to find people willing to commit stuff to the community in their own spare time.
That all sounds good and all. Most of us do lots of things for free on our spare time to improve upon the world around us. But, not that many actually do contribute. Its most often a question of motivation, commitment and time management quite frankly. Its not easy helping the community out at the same time as you want to maintain normal relations with the people around you.
The logical solution is then to make it part of business. And sure, building a system where people has to contribute to the community a little bit every week works great in theory. But if we want to make an impact we need to have people working full-time with community issues. And most bureaus are, to be honest, just too small to be able to afford high-competence consultants to do lots of free work.
Is there any other way of doing it? There are successful companies outside of the WordPress sphere that openly say that 10% of all project budgets goes to improving the community. Couldn’t that work? Yes, it could. The only problem is that WordPress buyers usually doesn’t have huge projects. And they don’t really care about our community.
If only the occasional commit comes from freelancers / bureaus; How can we ever expect to have any influence in what happens to the product?
Therefore, we must have growth. However; growth without a purpose is cancer. We need motivation in order to optimise the whole. Making money for owners should not be the main incentive, though its great if we can do that, too. If you play your cards right and take good decisions you’ll make some money while contributing. And you can only grow by solving step by step solving the problems of working with open source.
Building great things with WP-API & The WordPress Object Cache
Our friends Christoffer Larsson and Stanislav Khromov will also gave great talks. Read Aftonbladets blog post about it!