Bruno P. Kinoshita created JENA-1911:
----------------------------------------
Summary: Update Fuseki 2 UI JS code
Key: JENA-1911
URL: https://issues.apache.org/jira/browse/JENA-1911
Project: Apache Jena
Issue Type: Improvement
Components: Fuseki
Affects Versions: Jena 3.15.0
Reporter: Bruno P. Kinoshita
Assignee: Bruno P. Kinoshita
The existing Jena Fuseki user interface uses Backbone.js, with extra libraries
such as JQuery, Marionette.js. The JavaScript code pre-dates ES6, which is
largely supported now.
This issue is a placeholder for discussion & work around updating the UI. Using
ES6 in the code would be a great improvement.
But I also suggesting adopting a different framework. The most famous framework
for JS UI is probably React, followed by Angular & Vue. I am using Vue.js at
$work, so I am biased.
The reason we chose Vue.js at work is that the development team is using mainly
Python, with background in Perl, C, and Shell. So out of the three, Vue.js was
the simplest, as it didn't require TypeScript, special syntax, and the tools
required to build an app with Vue are also quite simple.
One downside of this approach is the build of Apache Jena, which would require
Node.js and a build tool like Yarn or NPM. But it also brings benefits such as:
* We can write unit tests for the UI
* We can write integration (e2e, end to end) tests with Cypress or Nightwatch
(similar to Selenium, but simpler to run and maintain)
* It will be easier to keep the code up to date, as tools like GitHub security
bot are able to inspect package.json and look for outdated or libraries with
CVE's
* It will be easier to incorporate other libraries in the code, so that we can
easily switch the JS code for the editor (for example), or add a new library to
handle SPARQL, etc
* It is now easier to find developers that know Vue, React, Angular, than
Backbone (though that was the first framework I learned, and I really like it),
so maybe we would get more contributors to help with Fuseki UI
--
This message was sent by Atlassian Jira
(v8.3.4#803005)