Skip to content

Choosing a software stack for the Exercism reboot #127

Closed
@ErikSchierboom

Description

@ErikSchierboom

In #113, plans are discussed for a reboot of Exercism. This will probably involve rewriting the front-end application. With a rewrite always comes one extremely important question: which stack to choose? Unfortunately, for client-side applications, the number of potential frameworks can be, well, staggering. There is Angular (1 and 2), React, Aurelia, Knockout, Ember, Vue, and much more. Recently, Matt Burgess tried to provide an unbiased overview of client-side frameworks.

To choose a client-side framework, there are several selection criteria, of which I feel the following are important (in random order):

  • Ease of use: how easy is it create a client-side application with the framework? Can you just "jump in" and start building, or is there a steep learning curve? In other words, how many new concepts do you have to learn?
  • Documentation: does it have good documentation? For a large-scale open-source project that will have lots of (new) developers, having good documentation is quite important.
  • Adoption rate: how popular is the framework? Some frameworks might be technological marvels, but if nobody is using it, getting help will be so much more difficult and there is a greater risk of the framework being discontinued. Also, the more popular a framework, the greater the chance that people can just "jump in" and start helping.
  • Complexity: in general, the framework should be as simple as possible. Some frameworks are quite complex in how they are structured, which makes them much harder to learn and use. Once again, as we want to have as many people contributing as possible, we ideally want a framework with low complexity.
  • Feature set: obviously, the framework should serve the needs of our application, but I don't think we require anything out of the ordinary. It is worth noting that some frameworks are very minimal, and require adding libraries to fulfil some of the basic needs of an application. This usually increases the difficulty, although there might be tooling to help you with that.
  • Performance: the performance should be good.
  • Tooling: tooling-wise, there are huge differences here. There are several aspects here, one is IDE tooling: are there editors with built-in support for the framework? Another is the development tooling, does the framework have special command-line tooling to help you, or is there lots of manual work involved. Lastly, does the tooling help you with your development workflow? Does it allow for live- (hot-module) reloading, bundling, and such?
  • Testability: how easy is it to write tests for the code using the framework? Is there special tooling involved? Is the framework mockable and are there examples on the web of how to structure / write the tests?

Perhaps we can have some discussion here on which frameworks people would like to work with and why?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions