I'm pretty darn excited about the Joomla! Platform. Actually, that is my biggest understatement of 2011.
I believe that the Joomla Platform has an opportunity to be one of the fastest growing development platforms of 2012, enabling the more than 200,000 Joomla developers around the world to break the bonds of CMS development and dive head-first into a world of ever-more global, mobile, and social applications.
Evangelizing about something as opaque as a development platform is a bit of a challenge. There's been many times where developers and end-users alike will attend one of my talks ask, "what's an example of what someone can build with the platform?" It’s easier to understand how something can be useful to your own needs when it’s laid out with specific deliverables and products.
Unfortunately, the question is like asking an architect, "what can you build with a pile of hammers, nails, and wood?" The answers are infinite. If you took the time to try to answer it successfully, you'd end up with a bored audience.
I've been wrestling with this question for quite some time, but things changed at Joomla!Day Chicago in July 2011. At the event, Louis Landry gave a terrific overview of the Joomla! Platform, including a great description of how it has been envisioned, how it was growing, and where people can lend a hand in its continued innovation. When he was asked “what can be built with the platform”, he said, rather straight-faced, that anything you could dream up could be made with the Joomla Platform. To reach our dreams, however, we would need examples to get the ball rolling.
The call to action was set: we needed to build example apps to help fire up our community of developers to try something quite different.
Since Joomla!Day Chicago, I've been lucky enough to lead four Joomla Platform sessions at events around the world. Chicago, Cape Town, Florianópolis, and London have all been in the mix, each with their Joomla communities taking their own charge at the call to action.
After a few keynotes and sessions, I took a moment on a recent flight to reflect on our success. We’re doing great, but there’s so much more we can do together to help our community continue to elevate our skills beyond the CMS. To aid in the effort, and to help spread the word about the Joomla Platform even further and faster, I’d like to share the process I've found to be most successful in building example apps, helping developers network, and spreading the spirit of community around the world.
Step 1: Sell the vision, make the call to action
It's not enough to just bring people together in a room and expect great things to happen. You need to help focus the key pillars of motivation to get the magic to happen: autonomy, mastery, and purpose. If you can drive forward on those three items, you're setting yourself up for success.
I've found if we can incorporate the camaraderie of the local community, we can also create the ties needed to bring a team of eager contributors together. At Joomla!Days, I make sure that the communities can understand the contributions of other communities, and how the local community can add an important voice to the chorus of our worldwide community choir.
Finally, I make sure to cast a wide net as we look for contributors during the event. Yes, developers are going to be key to building any J!Platform application, but the room of good ideas isn't limited to these technical superstars. I reach out to designers, implementers, content creators, and more. The diversity of backgrounds can help lead to a diversity of outputs.
Step 2: Seek out the developers
Alright, you know what I said just a moment ago about casting a wide net? Well, that's important, but it's just as important to reach out one-on-one with the developers in the room. They're our leading change agents. They're the ones turning ideas into reality. I seek them out while they're grabbing coffee, grabbing some fresh air, or desperately trying to run away from my penguins. The better direct relationship I can build with developers at the event, the more successful I find our J!Platform app discussions can become.
Step 3: Find the action developers
Once we're together in our J!Platform room, I'm looking for those developers that are eager to lead, share ideas, and push forward on new innovation. People aren't likely to hop out of their seats in a room full of strangers to showcase their talents, so I take a few steps to help oil the gears.
Step 4: Show examples
To help set the stage for the J!Platform session, and respecting the wide range of community members in the room, I like to focus on a few specific examples. What better to use as an example than an app built at one of our previous Joomla!Days? I'll give the typical disclaimer that 1) I'm not a developer, and 2) that I'm likely making things up as I go along. Even with my obvious deficencies, we still have something discrete to analyze and learn based on past success.
Step 5: Have someone else explain the code
Remember when I said I wasn't a developer? Well, since I know that my reputation for development is quite low, I also know that I'm probably not the best person to explain how easy it is to write a J!Platform app. Instead, I'll ask the room for volunteer to come up to the front and explain, line by line, an example app made at another Joomla!Day.
Luckily, we're a pretty social community, so it's been pretty easy for me to find a volunteer without much coaxing.
After a developer in the room takes the time to explain the code to the room, I ask them a few questions. "Was that difficult to understand?" "Was it written in some new funky coding language?" "Do you have heart palpitations after reviewing this code?" "Did anything in this code require you to learn a bunch of new coding standards or consider going back to university for a computer science degree?" Luckily, the answers have always been "no", which I think makes the point: I still really have no idea what I'm talking about. But it also makes a better point: if you know how to write a Joomla extension, you can build a J!Platform app…and innovate beyond the CMS.
Step 6: Brainstorm
Now the fun begins, it's time to brainstorm what we can build together in our 1-2 hours together. I try to set some basic parameters, such as the app should be something that can built before we leave the room (or maybe with some evening homework). It should be something that either builds on previous examples or shows off a new functionality that hasn't been explained yet. Most importantly: it's got to be something fun to build.
I've seen quite a variety of J!Platform app brainstorming discussions. My recent J!Platform room included a discussion about building J!Platform apps that interact with tangible objects…like light bulbs, speakers, and more. The less we limit ourselves to the confines of the CMS the more interesting and exciting the example apps become.
Step 7: Create and innovate!
After we finish the brainstorming, it's time to get to work. Typically I'll look for the most energetic developer in the room to drive the room forward. We hook up their computer to the projector, and start working on the code together, as a room. Some in the room start learning how to hop into github, some start working on their own example app while chiming in with ideas, and others watch and contribute their thoughts to how we can proudly show the world what was created in this two hour period.
In the end, the goal is to have a working J!Platform app. On the way, however, we've achieved much more. We've been able to spread the word about the J!Platform. We've brought together some of the brightest minds in the Joomla world to meet each other and collaborate together. We've created a new network of community members. We've built relationships.
This is just the beginning. We're only scratching the surface of what we're capable of achieving with the platform, and I'm looking forward to seeing our community elevate above the CMS discussion and into a development mindset that is more global, more social, and more mobile.
I hope that this article encourages you to spread the word about the J!Platform. If you have any questions, or would like me to hop into a community event (either in-person or via Skype), just email me via http://scr.im/26bs. Organizing a J!Platform event is easy, it's fun, and it will make you smile.
We're only limited by our imagination. Let's do this, together.
Want to learn how to build your own Joomla Platform app? Check out "How to create a stand-alone application using the Joomla Platform" on the Joomla documentation wiki.