When you first start programming in a language, be it .NET, PHP, JAVA, or whatever, you tend to stick with the built in functions and controls. This makes sense, because you are learning how it works, what its strengths are, and where its limitations will trip you up. But every programmer at some point will spend hours or days trying to bend the built-in functionality to do something that a project requires, and think “there has got to be a better (easier) way!”
This leads to web searches and discovery of 3rd-party controls and frameworks that will (or almost will) accomplish the goal much easier than trying to hand-code new functionality using built-in controls.
For me, this happened in .NET when I got fed up with an overly complicated data access layer in a project I inherited. I understand the strength of the .NET provider framework, and the strong arguments for doing all database access using stored procedures, and the also strong arguments for having a business object layer between the UI and the data access. But geez, for a single programmer or a small team, I found this model to be very cumbersome and frustrating. Every time I needed to add a column to a database table, I found I had to spend hours updating the data access and business object layers. I was not “agile” in any way.
In my frustrated internet searches, I found recommendations for Object-Relational Mapping (ORM) frameworks, and in particular, I tried EntitySpaces (www.entityspaces.net). This framework automated the development of almost the entire data-access portion of my project, saving me many, many hours on that one project alone. The licensing cost was minuscule compared to my hourly rate, so it also made financial sense. Of course, EntitySpaces also has its own limitations, but it was right for that project, and I went on to use it in many more of my projects.
Then a few weeks ago, a post in the EntitySpaces support forums noted that the ES developers hadn’t been very responsive lately in answering questions in the forums. A few of the ES users were starting to get worried that maybe development on ES would be slowed. Given the ambitious release schedule of the ES team, and the number of paid users they seem to have, AND the very high quality of the product itself, I would say it isn’t likely.
However, this points out a problem with trusting in 3rd-party frameworks and controls. You could rely heavily on a control or framework, only to find that it is discontinued either in the middle of a project or during later upgrade cycles. With something like a customized drop-down control, this isn’t the end of the world. But with something as fundamental to your architecture as an ORM framework, what do you do then?
Most of the time, there really isn’t a problem. You can keep using the 3rd-party control/framework just fine and continue your development. Where you might run into problems is if you upgrade to a new version of the base software (like going from .NET 2.5 to 4.0 for example), and the 3rd-party control/framework “breaks”. If that happens, you either have to stick with the old version of the base software, or replace the 3rd-party control/framework with something else.
The trick, I think, is to do your research – find 3rd-party controls that have been around for a while, gone through significant iterations over time, and have a good following among developers. I tend to think that for-profit controls/frameworks are more stable than free or open-source ones, because I have been burned by using free controls I found on the Internet that the original developer NEVER updated – or worse yet, closed down his product/support page.
In the open-source community, there are some really great projects that can help you get your projects done faster and better. Just be aware that there can be a “what’s hot right now” mentality — I used to develop in ColdFusion, and there seemed to be a new open-source CF framework popping up every few months. Uggh. Stay off that roller-coaster and employ the same criteria I mentioned above. Use the ones that have been around for a while and don’t seem to be fading away.
If you go with controls from one of the big for-profit companies like Telerik or DevExpress, I don’t think there is much danger of them disappearing any time soon. But you have to be willing to shell out significant $ for annual licenses and upgrades to keep current.
Do they add to or save on your development costs? Do the math (use your company’s hourly rate to do the calculations)… if you would spend less developing your own solution, and it works and looks just as good, then buying 3rd-party controls would add to your costs. On the other hand, if developing your own solution would take more time (and therefore cost more) than the 3rd-party controls, then it’s a no-brainer — especially since you can probably use the controls on more than one project.
(And I don’t mean to spread negative rumors about EntitySpaces… seriously, this is one of the best products I have ever used for development. I HIGHLY recommend it.)