Web Framework
Add your comments directly to the page. Include links to any relevant research, data, or feedback.
Background
GOBii needs to identify and implement a web framework to be used for all future UI work. Old UIs will be gradually transitioned to new framework. The purpose of this decision is to unify and standardize GOBii's UIs
Relevant data
Metrics
Rank | Criteria | Weight (1 - 3) | 1 | 3 | 9 |
---|---|---|---|---|---|
Multi-browser support | 1 | Does not support all 3, or external libraries needed to support all 3 | Has support for all 3 major browsers, but requires code support for each | Has native support for all 3 major browsers, Chrome, FireFox and MS Edge | |
UI testing framework | 2 | Only code testing (unit testing) supported | Can use external library or tool such as Selenium | Has a testing framework | |
Internationalization and localization | 1 | No support | Supports L10n - Localization is the process of adapting internationalized software for a specific region or language by translating text and adding locale-specific components | Supports i18n - Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes | |
3 | Security Framework | 3 | No security framework | Has security framework that supports either OAuth or LDAP, the other can be achieved through code | Has security framework that supports OAuth-2 and LDAP |
Form validation | 2 | No | Yes. Allows client side validation. | ||
Template framework | 2 | No | No, but Templating framework is supported through libraries | Yes | |
Latest stable version | 2 | More than 5 years | Greater than 2 years, but less than 5 years | Less than 2 years | |
1 | License | 3 | Part open-source, part commercial | - | Subscribe fully to open-source license |
RAD | 1 | Code editor | Support for popular RADs such as Eclipse, JetBrains | Has RAD | |
5 | Programming language | 3 | Not in GOBii stack, and don't have expertise in language | Not in GOBii stack, but have expertise in language | Already in GOBii stack |
Architectural pattern | 2 | 1-tier | MVC | 3-tier | |
2 | RESTful API support | 3 | No documentation available | Stackoverflow | Published manuals and tutorials on developing APIs |
6 | In house experience | 3 | need external experience or learn | experience within a sister project | Have in house experience |
Compatibility with Deployment Stack | 2 | incompatible with current stack | compatible with sister deployment stack | compatible with GOBii deployment stack | |
Profiling support | 1 | no support | can use other profiling tools or libraries | comes with inbuilt profiling tools | |
Prototype support | 1 | no known support | Supported by other prototyping tools | Comes with prototyping tools | |
Caching framework | 1 | none | with extensions | has caching framework | |
4 | Visualization/Chart support | 3 | Need to program visualizations | Can use popular chart libraries such as D3 | Come with Charts that are available to use out of the box |
Evaluations
Types of frameworks:
- Backend Framework -
- Component based Framework -
- GWT -
- Single Page Framework -
Framework / Criteria | Type | Total |
---|---|---|
ZK framework (Consider only CE) | Component based | 174 (158) |
GWT | Javascript Frontend compiled with Java backend. | 186 |
JSF | Component based | 96 |
AngularJS | Single Page | 180 |
Angular | Single Page | 204 |
Vue | Single Page | 180 |
React | Single Page | 180 |
Flask | Backend | 192 |
Django | Backend | 168 |
NodeJS | Backend | 156 |
Spring MVC | Backend | 192 |
Evaluations: Round 1
Round 1 evaluation only looks at criteria with weight 3.
Framework / Criteria | Type | License | RESTful API support | Security Framework | Visualization/Chart support | Programming language | In house experience | TOTAL |
---|---|---|---|---|---|---|---|---|
ZK framework | Component based | 9 | 9 | 1 | 1 | 9 | 29 (23) | |
GWT | Javascript Frontend compiled with Java backend. | 9 | 9 | 9 | 3 | 3 | 33 | |
JSF | Component based | 9 | 1 | 1 | 1 | 1 | 15 | |
AngularJS | Single Page | 9 | 9 | 9 | 3 | 1 | 31 | |
Angular | Single Page | 9 | 9 | 9 | 3 | 9 | 39 | |
Vue | Single Page | 9 | 9 | 9 | 3 | 1 | 31 | |
React | Single Page | 9 | 9 | 9 | 3 | 1 | 31 | |
Flask | Backend | 9 | 9 | 9 | 3 | 9 | 39 | |
Django | Backend | 9 | 9 | 9 | 3 | 1 | 31 | |
NodeJs | Backend | 9 | 9 | 9 | 3 | 1 | 31 | |
Spring MVC | Backend | 9 | 9 | 9 | 3 | 9 | 39 |
Round 2 evaluation only looks at criteria with weight 2.
Framework / Criteria | Type | UI testing support | Latest stable version | Form Validation | Template Framework | Architecture | Deployment Stack | Total |
---|---|---|---|---|---|---|---|---|
ZK framework | Component based | 3 | 9 | 9 | 9 | 3 | 9 | 42 (40) |
GWT | Javascript Frontend compiled with Java backend. | 3 | 1 | 9 | 9 | 3 | 9 | 34 |
JSF | Component based | 3 | 3 | 3 | 3 | 1 | 9 | 24 |
AngularJS | Single Page | 3 | 9 | 9 | 9 | 3 | 9 | 42 |
Angular | Single Page | 3 | 9 | 9 | 9 | 3 | 9 | 42 |
Vue | Single Page | 3 | 9 | 9 | 9 | 3 | 9 | 42 |
React | Single Page | 3 | 9 | 9 | 9 | 3 | 9 | 42 |
Flask | Backend | 3 | 9 | 3 | 9 | 9 | 3 (need to check other projects) | 36 |
Django | Backend | 3 | 9 | 3 | 9 | 9 | 3 (need to check other projects) | 36 |
NodeJs | Backend | 3 | 9 | 3 | 3 | 9 | 3 (need to check other projects) | 30 |
Spring MVC | Backend | 3 | 9 | 3 | 3 | 9 | 9 | 36 |
Round 3 evaluation only looks at criteria with weight 1.
Framework / Criteria | Type | RAD | Internationalization and Localization | Profiling | Prototype support | Caching | Total |
---|---|---|---|---|---|---|---|
ZK framework | Component based | 3 | 9 | 3 | 1 | 9 | 3 |
GWT | Javascript Frontend compiled with Java backend. | 9 | 9 | 3 | 1 | 9 | 9 |
JSF | Component based | 3 | 9 | 3 | 1 | 9 | 3 |
AngularJS | Single Page | 3 | 9 | 3 | 1 | 9 | 3 |
Angular | Single Page | 3 | 9 | 3 | 1 | 9 | 3 |
Vue | Single Page | 3 | 9 | 3 | 1 | 9 | 3 |
React | Single Page | 3 | 9 | 3 | 1 | 9 | 3 |
Flask | Backend | 3 | 9 | 3 | 1 | 9 | 3 |
Django | Backend | 3 | 9 | 3 | 1 | 9 | 3 |
NodeJs | Backend | 3 | 9 | 3 | 1 | 9 | 3 |
Spring MVC | Backend | 3 | 9 | 3 | 1 | 9 | 3 |
Useful links
Description | Link |
---|---|
Wiki - web framework explained | https://en.wikipedia.org/wiki/Web_framework |
Wiki - comparison of web frameworks | https://en.wikipedia.org/wiki/Comparison_of_web_frameworks |
Best frameworks for RESTful API | https://www.slant.co/topics/1397/~best-web-frameworks-to-create-a-web-rest-api https://optimalbi.com/blog/2016/07/21/whats-the-best-restful-web-api-framework-part-2/ |
Questions
Options considered
Option 1: | Option 2: | |
---|---|---|
Description | ||
Pros and cons | ||
Estimated cost | LARGE | MEDIUM |