I’ve done some more thinking about whether or not to use 3rd-party controls (see my original post, and this follow up) and I believe I have some “rules of thumb” that make sense now.
My re-evaluation of my position on this has come because the EntitySpaces team announced that they would no longer continue the framework and would make it open source by the end of 2012. EntitySpaces is an ORM framework that I have used in several projects.
Criteria 1 — Is the control/framework/software integral to the functioning of the application?
If we are talking about a user interface control such as an enhanced 3-state checkbox or a text editor, the answer is “probably not”. In most cases, if absolutely necessary, you can drop-in a replacement with minimal fuss. Go ahead and use it.
If you are considering something like an ORM or javascript framework, you may be weaving it into the application and replacing it may be very painful or even impossible without re-writing big pieces of your software. You must consider Criteria 2.
Criteria 2 — How big/mission critical is your project?
If you are creating an in-house or personal project, just about anything goes. You can and probably will refactor it over and over as it is developed and being used.
If this is an enterprise or other mission-critical system, then you must be much more careful. You must consider Criteria 3.
Criteria 3 — Is this a new product?
If it is, you should probably wait until it has been vetted by the developer community and the kinks worked out. The first version of Entity Framework is a good example, even though it isn’t “3rd-party”.
If it has been around a while and has gone through several versions, that’s a good sign. But you must consider Criteria 4.
Criteria 4 — What kind of commercial or community support is available?
Look for blog posts, knowledge bases, wikis, and especially user forums that answer questions about the use of the control/framework. The sheer volume of posts will tell you something about how accepted and used controls/frameworks are. If you find that forums only have a few dozen posts, or only a few posts each week, then that tells you the user base is not very large, which is a red flag.
You should also note how quickly questions are answered, especially by employees/developers of the controls/frameworks. This can be critical to successful integration with your project.
Look for official documentation. Generally, the better-written and more complete the documentation, the more professional it’s development was.
With things like frameworks and open-source software, it is a good idea to look for any books written about it. If a publisher is willing to put out a book, then they believe the software is going to stick around for a while so they can sell more.
Criteria 5 — Get a second (and third) opinion
If you can evaluate the first 4 criteria and feel good about the control/framework/software, then you still have some work to do. If you are working on an enterprise system, you will need to make a recommendation to your team and ask them to research the product independently. You should look for reviews of the product and ask your own “does anyone have experience with…” questions on relevant forums.
The reason for this extra step is to avoid getting swept up in the hype surrounding the control or framework — and there is plenty of this.
So where did my analysis of EntitySpaces fail?
Well, truthfully, ES is a great piece of software. It has very few bugs and functions just as advertised. New versions were released 2-3 times/year. The commercial support was top-notch as the ES team was ever-present in their support forums. The cost/developer was very low.
In the end, what it lacked was widespread adoption by other developers (although there was no official announcement that this is what defeated the company). While I noticed that user questions in the support forums were answered completely and promptly, I didn’t pay attention to the low volume of posts. That should have disqualified it for my enterprise application — although not for smaller projects. And I will continue to use the open-source version for those because it is such a time-saver.
Jim, you are exactly right, lack of wide spread adoption is what killed EntitySpaces. I still believe it is the best ORM ever created, I’m working on a project with EF right now and it lacks the power of EntitySpaces, I miss the Dynamic Query API and our projects has over 1,000 tables and the EF stinks on large systems. I have created “Tiraggo” which you can find on github which runs on any platform and mobile device that Xamarin supports and it’s generated on My2ndGeneration. Don’t count EntitySpaces as dead for good, it just may yet rise from the ash heap.
Our team really appreciates your positive comments about our support, we really worked hard in that area, and bugs, you are right, we almost never had bugs reported due to the massive unit testing framework we had.
Mike Griffin
However, I must add, one of the reasons our forums didn’t have tons of posts is that there were very few bugs, “it just worked”. We were amazed how many people purchased EnttiySpaces without making a single post on our forums and thereafter. It also might come as surprise to you that we were all “evening and weekend warriors”. We all had full time jobs. Imagine what EntitySpaces might have done had we been working on it full time.