So, you need to choose a JavaScript framework?

So, you need to choose a JavaScript framework?

Over the last couple of years many developers have come to the realization that the technologies of the open web provide a solid foundation for building rich, cross-device and cross-platform applications. Browser-based and hybrid apps are steadily becoming the dominant choice for developers solving today's complex client-side needs and rapid enhancements to web APIs are making the platform more rich and viable each day.

So, now you need to build one of these JavaScript clients...and you're feeling overwhelmed with the breadth of choices before you. The joke has been made that there's a new JavaScript framework released every day. So, what do you do? How do you choose?

Making the best choice for your employer and its products is important and it's our job as technologists to do our due diligence by putting in time researching and carefully evaluating the options. But what are some criteria by which you should evaluate frameworks? I'd like to give you a few ideas, which I've broken down into some high-level categories.

Technical

  • Does the library actually solve your problems?
  • How large is the library?
  • How does it perform relative to other libraries?
  • Does the library take advantage of web standards? Is it harmonious with new developments in standards or does it thwart or discourage proper use of web technologies?
  • Does the library help you to write SOLID code? Or does it make it easy for you to go wrong?
  • How much does the library's code invade your application code? Or does it stay out of the way?
  • Does the library interoperate well with other libraries? Or does it foster silos within the web ecosystem?
  • Is the library well tested?
  • Does the library have a high degree of code quality?
  • Is the library monolithic or modular?

Project and Team

  • Is the library open source?
  • Does the library have a typical license for a web-oriented open source project?
  • Is the core team made up of only one person? or is it a group?
  • Do the same developers who write the library actually use it themselves? Or are they more "ivory tower" architects with less real world app dev experience?
  • Do the core team members, especially leadership, speak at conferences, code camps, user groups and meetups?
  • Do the core team members, especially leadership, present workshops or other training opportunities where they teach their community how to properly apply or use their technology?
  • Is the team primarily centralized or distributed throughout the world?
  • Does the core team work well with others and contribute to other projects that would benefit the broader development community?

Community and Communication

  • Is the community of a decent and sustainable size for the project?
  • Are there a solid number of contributors to the project outside of the core team?
  • Does the community have a kind and welcoming attitude, especially towards new developers?
  • Does the core team communicate with the community through standard channels and on a frequent basis?
  • Is the core team transparent and honest regarding their initiatives, goals, priorities and motivations?

Training and Media

  • Is the library documented both with reference-style material as well as "how to" materials?
  • Are there books written or being written on the technology?
  • Are there Pluralsight (or similar) courses on the technology?
  • Is there community-created-content available in blogs or on YouTube/Vimeo?
  • Are there podcasts on the technology?
  • Is the technology being presented at major tech events?

Business

  • What is the project owner's motivation for building the framework?
  • Is the project backed by or partnered with a business or organization?
  • Is the backer of the project fully invested? Or are they non-committal?
  • Does the project or backing organization offer official commercial support? Do they have support plans designed for both small/medium businesses as well as the enterprise?
  • Can you get official training from the organization or from trainers certified by the organization?
  • Can you get consulting services from the organization of from consultants certified by the organization?
  • Is the business building a vibrant ecosystem around the framework beyond simply making the code available?
  • Does the backer have strategic partnerships with other organizations enabling scale out?
  • Does the backer have a broad customer reach across a diverse set of industries?
  • Does the business maintain formal relationships with customers in order to care for their needs and incorporate their feedback into future versions? Or is the backer primarily serving only its own interests?

These are just a few things you should consider in your research. I'm sure you can think of more. It's important to take time to evaluate these important issues. Don't succumb to marketing or brand recognition. You may find that you aren't getting what you bargained for. Take time and choose carefully. As a professional you want to help your employer make the best choice.

If you are planning to attend NDC Oslo, I hope you will come out to my talk titled "Choosing a JavaScript Framework" where we'll look at a number of these questions as well as see code examples from six popular frameworks side-by-side. It should be enlightening.