In this interview I talk to Ryan Cramer, founder and lead developer of the ProcessWire project. Ryan has been kind enough to share with us some insights into who he is and into the ProcessWire project – what it is, where it came from, what’s cool about it, and where it’s going. Whether you’re an avid ProcessWire fan or have never heard of it, I hope you find this post interesting, useful, and informative.
1. Hi Ryan, thank you for agreeing to this interview. Welcome to the Coding Pad blog. Could you start by telling us a bit about yourself? Where you live, your family, etc.:
I live in the United States with my wife and two daughters in Decatur, Georgia, a small town 3 miles outside of Atlanta.
Company: RCD (Ryan Cramer Design, LLC)
2. What is your development background? When did you start programming, what languages, etc.
I started coding around 1990. I was writing 3rd party software in Borland Pascal for Wildcat BBS–the software I was running for my own BBS called Data Connection. One of the shareware programs I wrote was called DataView, and this became popular in the Wildcat BBS community. A few years later, Wildcat BBS transitioned from Pascal to C++ and so did I. I got really interested in OOP after reading a couple books on it, and spent much of my free time studying computer science.
I worked for a while as a C++ programmer with a development company outside Washington, DC, but quickly got tired of working on other people’s projects. I decided to go to university as a CS major. This was about the time today’s web was being born, and I started to get a lot more interested in the “world wide web” than in COBOL… or whatever old school prerequisite languages they were teaching us at the time. An interest in graphic design took over, and I transferred to JMU as a Media Arts & Design major.
After graduation, I went to work full time as a web designer at Grafik. At this time, design and development were always done by different people, so all I did was design. But I started to read and learn more about Perl, Python and PHP. Despite the lack of real OO in PHP 4, PHP interested me in particular because the syntax was so familiar and the programs could run anywhere. I started building my own projects with PHP, and eventually landed a freelance project to both design and develop a large website. One project led to another, and eventually… a business.
I started RCD in 2003, and began to focus on a reusable CMS platform, rather than custom coding one for every site I did. Dictator CMS was the result. Around 2007, this evolved to ProcessWire 1.0.
3. Tell us a little bit about ProcessWire. What is it exactly? Who is it targeted at? What kind of skills does one need to pick up ProcessWire and use it?
ProcessWire started as Dictator CMS in 2003. The name came from Thomas Edison’s Dictator machine, but I eventually changed the name [to ProcessWire] because Dictator has such a negative connotation. The project was started to be two things: 1) a development tool to help build web sites for clients more easily, quickly, and with much more capability; 2) a CMS that clients could use to easily update and manage their site. These two goals have remained with ProcessWire since the beginning. It always has been targeted at web designers/developers and their clients.
People that already have some good front-end development experience (HTML, CSS, JS) tend to appreciate a lot about ProcessWire and the flexibility it offers. While you don’t need to know PHP to use ProcessWire, it becomes far more than a CMS to people that do.
In terms of skills necessary, one doesn’t need any more skills than they would need with WordPress. It has that same entry level. But unlike WordPress, ProcessWire is a tool that grows with you. The more you know, the more it can scale, and the more you’ll find the system supporting you in what you want to do. It’s a tool you won’t outgrow.
4. Why did you decide to open source and share ProcessWire? What was your goal?
I wanted to expand the reach of ProcessWire beyond the dozen or so sites I worked on each year. Being the only developer using ProcessWire, there was a strong desire to share the fun with other developers so that the project could benefit from more collaboration. When you are proud of something you want to share it, and my clients only knew the CMS/admin part of ProcessWire (the development-side fun was unknown by clients). Without making it open source, the project’s potential would be limited and I didn’t want all the ideas and effort to be lost in isolation.
Before deciding on open source, at one point, I thought I should stop putting so much effort towards my own CMS project and just use another like Drupal. So I spent some months with Drupal (and a little less with EE) and couldn’t believe how much of a pain these tools were, and how far behind they seemed. After putting in my best efforts with other tools, I realized I couldn’t survive as a web developer if I had to depend on tools like that. I’m not saying they are bad tools (and I did learn to respect plenty of things about them), just that they are totally out of line with the way I wanted to work. That experience also made me think maybe ProcessWire really was worth sharing.
In 2006, I attended a speech by Matt Mullenweg at SXSW. Despite not knowing much about WordPress at the time, I was really inspired by his story and the way he talked about open source. This is one of the things that motivated development of ProcessWire 1.0, with the idea of going open source. By 2008, I decided to “test the waters” by releasing a small component of ProcessWire 1.0 as open source. This was the jQuery plugin: asmSelect. The interest was strong enough, that I set to work on rebuilding ProcessWire as an open source project, and was able to eventually release ProcessWire 2.0 at the end of 2010.
The goals with ProcessWire as an open source project are to build, share and collaborate on a great tool, assist web developers and clients, and build a community. We have a very invested and involved community. Now the goal is to be a major player, with the best tools, in the CMS landscape.
5. Will ProcessWire and its modules and plugins remain free or will you move into a commercial model of sorts? Or is it too early to tell?
ProcessWire will always remain a free and open source project. We do support development of commercial modules, so long as they are quality products with their own support system in place (Form Builder and ProCache are two examples that exist now). But if you are wondering how we ultimately get paid to develop ProcessWire: we get paid by the sites and applications we build with it. ProcessWire lets us build more capable sites, more than twice as fast as we could elsewhere. That means we can invest that extra time in ProcessWire itself… which in turn benefits the other projects we work on. It’s a win-win cycle. I also think it’s a real benefit that everyone developing for ProcessWire also develops [other projects] with ProcessWire in their day job. We are all everyday users of the product we develop.
6. About how many developers are working on/responsible for the ProcessWire core? Would you like that to change? And how?
I’m one of many developers, but remain the lead developer. It’s a real community project now, but I handle most commits to the core to ensure quality control. Our GitHub contributors list is deceiving as it masks the scope and scale of collaboration involved. We like to thoroughly test, tweak and often re-factor contributions before they get committed to the core. It’s all about ensuring we maintain a higher level of quality and reliability than what some might be used to in other projects, and I think that’s one of many things that sets ProcessWire apart.
7. What do you see as the strengths of ProcessWire?
- ProcessWire is fun to develop in and use. ProcessWire lets you get rather complex things done very quickly and easily. Something that might take a day or more to develop in another CMS (like any of the big 3) might take less than an hour in ProcessWire. As a result, people that develop in ProcessWire are very enthusiastic and genuinely enjoy using it like no other.
- The easy-to-use, powerful API (http://cheatsheet.processwire.com). The best parallel is jQuery, and we’ve modeled our API after it. In jQuery, you can find, access or manipulate any element of the page (DOM) very easily. Everything is just a selector away. Now think of your web site (no matter how large) as the DOM. That’s ProcessWire’s API. Any bit of content on your site, regardless of where, is at your fingertips. ProcessWire acts as if everything in your site is accessible to you in memory at once. While that isn’t actually possible (it’s really in a database), you’d never know it from the API. It is that accessible, and fun.
- The page tree is both hierarchical and relational, opening up a world of possibility and putting the developer in control of the site’s structure and URLs. No limits in this regard really maximizes enjoyment as you consider all that you can do.
- All fields in ProcessWire are custom fields, and all collections of fields (called templates) are custom types. The system makes no assumptions. You can create as many fields and templates as you like. All your fields are easily query-able from the API. ProcessWire is at home managing any kind of data or content type, no matter how simple or complex.
- ProcessWire leaves you in control over all output. It doesn’t generate or mess with your markup. It is just as at home powering web services, large web applications, or even delivering content to iPhone/Android applications, as it is powering web sites.
- You don’t have to train your clients how to use ProcessWire. They already know how to use it.The admin panel and hierarchy make sense to clients regardless of their level of expertise with other CMSs. It is easy, focused and powerful. We repeatedly hear how much clients love using it.
- At its core ProcessWire is a CMF. The CMS portion of ProcessWire is actually an application built on top of the framework. People really like this architecture and the fact that anything you can do interactively you can also do from the API (and more).
- ProcessWire can be bootstrapped from command line scripts or any other PHP script. You can pull ProcessWire into another application or pull another application into ProcessWire. There is a lot of power and flexibility here.
- ProcessWire has the best module/plugin system out there. Creating modules and hooking into nearly anything you want is a piece of cake. Anyone that can develop a site can also create a module. As nice as ProcessWire’s module system is, users appreciate the fact that ProcessWire is a fully capable system even without any 3rd party modules.
- ProcessWire works in a manner that is consistent with the way the rest of the web works. Whether a developer or an end-user, people love the fact that it works how they think and expect it should in the environment. Other CMSs introduce concepts and terminology that are totally foreign to front-end development, URL systems, and the rest of the web. ProcessWire, on the other hand, fits the rest of your tools–and the web in general–like a glove. We’ve really tried to focus on being a timeless tool. You won’t find bloat or unnecessary complexity in ProcessWire. Our ongoing path is simplification, speed, optimization, reduction and refinement.
- Our biggest strength is our community. We have a friendly and enthusiastic support community that loves to teach, learn and help – http://processwire.com/talk/
8. How do you think ProcessWire compares to other platforms e.g. MODX CMS or WordPress?
I don’t have enough experience with MODX to offer any real comparison there other than to say that it seems like we have a lot of common ground, based on what others have said. The MODX community and even their development team have been encouraging to us.
I think that all CMS projects have a lot to learn from WordPress in terms of how they’ve become the most used CMS by an exponential factor. Both ProcessWire and WordPress have a level of simplicity in getting started on a website. The comparison stops there. If WordPress were a screwdriver, then ProcessWire would be a set of power tools. As your needs grow more complex, ProcessWire stays simple and scales beautifully; WordPress does not.
9. There has been an increase in the number of developers contributing modules and plugins to ProcessWire. Do you see this continuing? Is it easy to develop modules and plugins for ProcessWire?
I definitely see this continuing. ProcessWire’s core is largely an engine for running modules. Much of the core itself is itself built upon modules. I believe that our plugin/module and hook system is the simplest and most powerful out there. Even people that don’t know how to code find themselves able to understand the basics of module development in ProcessWire.
10. What do you see as the important and exciting things that the ProcessWire community has to look forward to?
The continued growth of the product and community is exciting for all of us. There is a whole lot of great stuff in the works. Just one example that you can find on the dev branch now is the ability to download and install modules directly from our modules directory, all from within the ProcessWire admin (thanks to the help of Soma).
11. What are the copyright policies around ProcessWire? For example, can a developer build their own brand around the ProcessWire CMS? Does every project need to be identified as having been built with ProcessWire?Can someone bundle something built on the ProcessWire core as a commercial product?
I don’t claim to be an expert on legal aspects, so I divert to the GNU GPL license for any questions about what you can do with ProcessWire. The only exception is that we support development of some commercially supported modules.
When it comes to ProcessWire as a brand, I divert to WordPress and Drupal. If they both consistently say you can or can’t do something with the brand name, then the same applies to ProcessWire. I divert to them because I trust they’ve got the resources to find the right and safe answer. When someone asks me a specific question like “can I do this or that”, I get on Google and hunt for the same question about WordPress and Drupal. If there is is a consistent answer among those two products (and there almost always is), then I give the same response.
Someday we’ll have the resources to pay for legal assistance and understand all the issues well enough to give our own answers, but until then I prefer to play it safe and follow the lead of the bigger players.
12. If you could give one piece of advice to someone who is just starting out with ProcessWire, what would it be?
One piece of getting-started advice: ProcessWire is best learned by example. Follow the fields, templates and template files that come with ProcessWire (and later, the skyscrapers profile), and you’ll know how it works very quickly.
One piece of friendly advice: We have a great, enthusiastic and helpful community. Whether you are just getting started or an expert, get involved at http://processwire.com/talk/
13. In closing, let’s loop back to you I know ProcessWire is fun and you enjoy it thoroughly, but away from coding, what else do you do for fun? What are your other interests/hobbies?
When you have kids, nearly all your free time revolves around their activities, but it’s a good thing. Outside of that, when you run an open source project, you have to and love to adopt it as your main hobby. So I wake up early in the morning, 6–7 days a week (usually at 4am) to work on ProcessWire before the rest of the house wakes up, and before the day begins. When I’m not at work, playing with the kids or working on ProcessWire, I’m usually cooking or exercising in some form. I cook all the meals in my house, with a focus on local and paleo foods. I’ve always been a gym/lifting addict, but lately have taken up a lot of running too, since it’s compatible with my wife’s interests (she’s into Triathlons). In the past I’ve enjoyed tinkering with music, building/flying/crashing R/C aircraft, creating crazy art projects, building model trains, and sailing.
If you want to learn more about ProcessWire, be sure to head over to the website and check it out. You can find Ryan on the ProcessWire Forums interacting with the community and answering questions, and you can also follow Ryan on twitter. If you enjoyed this interview and/or have any comments/questions please leave a note in the comment section below… or just drop a note to say hello