Posted on August 14th, 2010 at 1:47pm in
Business,
Code,
Rambling -
View Comments
As one of the developers of MojoAddons, along with Zack Kitzmiller, Phil Sturgeon, Dan Horrigan and Tom Myer, we’ve banded together to provide much-needed functionality to extend the MojoMotor platform.
I’ve noticed two threads of discussion happening surrounding the addons we’re creating, selling and supporting, and I’m finding both of these discussions to be a bit discouraging. So I write this post- a rationale of why and how we do what we as well as a plea for your support.
The first discussion revolves around the question, “Why do you charge for all of your addons?”
From my perspective, commercial addons are the ideal solution for a commercial product such as MojoMotor. While it may come across that we just want to cash in on a new market, for me at least the rationale is deeper than that.
As a web developer using ExpressionEngine for my clients, I often need the functionality provided by addons. I am given a choice when I start the project, either I can build all of the functionality myself, or I can purchase someone else’s addon and use it. There is also the third option of finding a free alternative.
I normally choose to purchase a commercial addon. Why?
In either the case of building my own or using someone’s free alternative, I lose support for the addon. If I build it myself, I have to support it. A free addon may have support, but there’s no guarantee of how long it will be available, how attentive the developer will be, etc.
When I’m charging customers thousands of dollars for a website, I don’t want to be taking that kind of risk to my credibility. If something isn’t working, I need to be able to get in contact with someone who knows what they’re doing. Sure I could dig through the code and figure it out myself, but that’s a waste of both my time and the customer’s money. That’s why I use a commercial CMS like ExpressionEngine, and stick with commercial addons to add functionality.
In the same vein, the addons I and other MojoAddons developers are selling come with support. That’s where the price comes into play. Most of us wouldn’t mind contributing a small piece of code to the community to help people out, and both Dan and Phil have done this, but the influx of support requests makes it unreasonable to do this for our larger and more complicated products. It just comes down to a matter of time—donating maybe two or three hours to the cause is one thing, but the unending hours of e-mail support add up and take us away from our other priorities.
Support is the main reason why we charge for our addons.
Along this same line of thinking, I just want to remind our customers that you shouldn’t hesitate to contact us for support. In the MojoAddons download center, and e-mail is provided for support of each of the products you’ve purchased. You’ve paid for our support, so please don’t hesitate to use it.
We’ve had a lot of great reactions to our addons, and we’re excited about that. But a few bugs have cropped up here and there, and I’d encourage you to contact us for help when you do find a problem, rather than trying to fix it yourself. In the end it’ll help make our products better, and it’ll help us help other users of our addons.
The second discussion I’ve become aware of surrounds the development of free alternatives to the addons we’re selling.
Firstly, I’m all about supporting the community. EllisLab is known for fostering active, friendly and helpful communities of users surrounding its products. It’s one of the reasons it’s so great to work with CodeIgniter, ExpressionEngine and now MojoMotor. I just want to get that out of the way to begin with. In no way do I condemn the creation of community code and addons for the good of everyone.
What I do condemn is blatant imitation of commercial addons. I’m certainly no intellectual property expert, and I don’t really want to dive into legal battles. But the reality is, there have been several free addons released that clearly have a basis in the functionality my colleagues and I have envisioned and built.
It’s discouraging to see this, tearing down the hard work we’ve done and the support which we’ve committed to offer.
A lot of thinking, preparation, development time and testing has gone into creating the products we sell. And we’re proud of what we’ve done, creating, hopefully, easy-to-use tools for MojoMotor users.
I totally support the creation of free alternatives, as long as they don’t duplicate the functionality of our addons with nearly-identical syntax, etc.
While I don’t have any recourse for this situation, I want to try and turn this around to have a positive outcome. There are GREAT developers out there now, working hard and fast to create everything the MojoMotor users wish and hope for in addon software. So, instead of condemning these actions I’m going to call them to a greater cause:
As software developers in a great community with a brand new product, I encourage every developer to INNOVATE. Sure the other MojoAddons developers and I have had some pretty awesome ideas thus far, but the community can no move forward if we simply continue to rebuild the same addons in small iterations. The MojoMotor users are calling out for the features they want to see.
Regardless of whether you choose to release your addons for free or commercially, we developers are problem solvers. And trust me, there are plenty of problems out there to solve. So get out there, do it. Don’t let the ideas I or my colleagues have created hold you back to an idea of how your addons should work.
We are a community, and I am glad that EllisLab is committed to organizing its users in this way. I encourage everyone here to respect the creations others have come up with, continue to build up the products we love with equally awesome addons and lastly to work together, not against each other, to bring MojoMotor to new levels of functionality that will benefit everyone.
Posted on July 31st, 2010 at 6:45pm in
Code,
Site News,
Web -
View Comments
This week an exciting thing happened. MojoMotor, the brand new content management system from EllisLab, makers of ExpressionEngine, was released.
I had been testing MojoMotor along with several other developers in the beta program and got a head start into working with the code. As a result Zack Kitzmiller and I set off on a path to build several much-needed addons for the new CMS. Along the way, we also built a really cool little site to show them off and sell them, as well as help to sell third-party addons from other developers. In the future we’ll also be adding third-party packaged themes for MojoMotor users.
So, with that, I’m happy to introduce MojoAddons.com.
If you’re trying out MojoAddons and using it for a project, I think you’ll find our addons are a great fit for making MojoMotor just a bit more powerful.
Posted on July 6th, 2010 at 9:34pm in
Code,
Reviews -
View Comments
I was recently asked to review Packt Publishing’s new book, CodeIgniter 1.7: Professional Development, by fellow CodeIgniter community member, Adam Griffiths. Adam is a well-known developer in the CI community, who, despite his young age, has become well-known among the ranks of CodeIgniter developers with his open source contributions.
I’m always excited to see new CodeIgniter books published, as the framework is growing in popularity and credibility among PHP developers, with applications springing up across the Internet. The framework is known for its excellent user guide and a strong community backing. But sometimes the resources available aren’t quite enough to make the concepts click in a new developer’s mind.
For me, the process involved viewing some of the available screencasts and looking at code that other had written in their applications. It wasn’t hard, but Adam’s new book would have been helpful to me in those early days of development with CodeIgniter. A selection of other CI-focused books have been published in the past, but I haven’t found many to be as practical as Adam’s. In previous books, often a single sample project is selected and used throughout the book to explain all of the concepts.
Adam’s approach is quite different and takes a look at various pieces of functionality that application developers might find very useful, while not walking them through the entire process of building an example application.
Specifically, Adam’s examples of using Twitter and Facebook authentication as well as accessing RESTful web services prove very useful, as these functions are increasingly at the core of many applications being built today.
The book also spends a bit of time talking about the basics of style in PHP coding. A guide like this would have helped to alleviate the evolution of coding style I’ve experienced as I’ve spent more and more time building web applications. It provides a solid baseline, referencing the CodeIgniter documentation’s style guide as a resource for maintaining code consistency.
Overall, I think that CodeIgniter 1.7: Professional Development fills a void in the market for CodeIgniter resources. I’d certainly recommend it to someone just starting out with the framework as an additional resource to use alongside the various other community resources.
The new book is not without its flaws though. As good as it is at helping a new developer get started at building all parts of an application: models, views, controllers and libraries, the one piece that’s lacking is advice on how to integrate with other people’s code. There a wealth of pre-written code out there, which though it may not be built to work with CodeIgniter, can save developers a ton of time as they build applications—if they know how to properly connect with third-party libraries from within the CodeIgniter framework. It can be a little bit tricky at first, so a primer in that area would be ideal.
Additionally, opening up the book with a bit of prior PHP experience is advised. Sometimes the examples don’t fully explain what’s going on in the code, so it could be a little complicated for a complete beginner.
Overall, though, I’m impressed with the direction this book goes. The angle is good, with a focus outside of the typical ‘build a blog in 20 minutes’ example.
Posted on April 9th, 2010 at 10:17pm in
Code -
View Comments
In my last post, I talked about my thoughts on moving API output in CodeIgniter to the View. Well, here’s the code for it. It’s fairly simple.
A couple little notes:
- Using this view requires the PEAR XML Serializer library. Assuming your PEAR libraries are in your path settings, the view should work. You may need to adjust the path to the libary, though, on line 56.
- This code isn’t meant to be pretty. In most cases, your views get laid out with as little PHP code as possible, making it easy to style them. This is a different kind of view. It’s only purpose is to make API output use the same syntax as loading any other view. Because of this, this view does lots of nasty things that you should NEVER do in a normal view. This is your disclaimer. I created this for my own purposes to work the way I wanted it to, and if you have objections, it’s certainly understandable, but I don’t really care.
Anyway, without further ado, if I haven’t scared you away, why don’t you give it a try?
Download the API View
Posted on April 5th, 2010 at 8:48am in
Code -
View Comments
Most everyone knows I’m not a Rails guy, and that’s probably never going to change, much to many of my colleague’s dismay.
I do, however, appreciate many of the features of Rails. The one on which I’m going to focus today is its built-in ability to show output in various formats.
My beloved framework, CodeIgniter, doesn’t have this capability built in, and in my development travels, I’ve handled API output in a variety of ways. All of them work just fine, but they really didn’t conform to the MVC architecture. API output, at least how I see it, should be sent to the browser through a view, just like any other sort of output.
A week or so ago, I created a helper that handled all the necessary API output stuff, including converting to JSON or XML. It worked just fine, but I found myself having to refer to the syntax a lot, every time I wanted to use it. It was just too cumbersome. And at about the same time, I began thinking how nice it’d be to use the familiar $this->load->view(); view loader method for APIs, too.
So, that’s just what I did. I took some of the logic from the helper and piled it into a one-size-fits-all view for APIs. It’s a little odd at first, when you look it it, since there’s a whole lot of code, which you don’t usually find in a view file, but, considering you never have to touch any of it directly, it works quite nicely.
I’ll post the code later on, but I just share my thoughts about this method of handling API output from CodeIgniter.