I recently finished up an article summarizing the differences between a few of the mobile application development frameworks that are in existence today. I covered three major players, two individual platform-specific tools, one per-device shortcut approach, and my own fledgling project, AML. After researching and writing, here’s what I concluded:
- There are a lot of people trying to accomplish the same goal in different ways.
- That’s really great.
Now, honestly, the first point was already assumed. Anyone who’s done a simple web search on the topic would realize that. But what about the second point? More directly relevant in my case, what about my AML project, which is entering a field that already has a lot of competition and projects which have a great big head start over mine? Why would it be great for my project to have a lot of competition?
Well, first of all, I didn’t look at the playing field and think, “How can I do what they are doing, only better?” No, I started with a specific personal need. I have a problem that I need to solve, and I thought up what I believe is a great way to solve it. Then I searched for something that did what I needed, and came up empty. There were some things that were similar, of course, but nothing that did exactly what I wanted. So, I decided to build my own tool. Even if it ends up being similar to the other ones, I am still going to build it because it will solve my problem perfectly, and there are probably other developers out there who will need to solve the same kind of problem who will benefit from my project.
That is why having all of those different options is so great. If I were trying to solve a slightly different problem, I could use an existing tool, because somebody else already did the same thing I did, only they had a different problem to solve. Instead of everyone needing to bend a universal tool to fit their criteria, we have a multitude of choices, each with its own strengths and weaknesses.
In the case of mobile platform development frameworks, this is excellent. I wouldn’t want to have only one of them to choose from, since I can easily come up with a problem for each framework that would be a pain to solve completely if that was the only one available. Everyone has their own idea of what is best, and this creates a competitive arena. They each build what they need or want, taking inspiration from other designs, and come up with a solution. Sometimes the products converge into a single product, and sometimes they remain separate, but they continue to give developers different options to choose from.
This is really just the principle of the free market applied to software development, which explains why I appreciate it so much.