[ https://issues.apache.org/jira/browse/JENA-1911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17463117#comment-17463117 ]
ASF subversion and git services commented on JENA-1911: ------------------------------------------------------- Commit aef75b5486d67e35795677b5dcd584e68f69c939 in jena's branch refs/heads/main from Bruno P. Kinoshita [ https://gitbox.apache.org/repos/asf?p=jena.git;h=aef75b5 ] [JENA-1911] Delete old BackboneJS Fuseki UI > 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 > Priority: Minor > Attachments: image-2020-06-05-12-09-57-685.png, > image-2020-06-05-12-11-01-945.png, image-2020-06-05-12-13-40-428.png, > image-2020-06-05-12-15-19-199.png > > Time Spent: 1.5h > Remaining Estimate: 0h > > 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 > So features we would have after this issue: > * Application built with ES6 JavaScript code > * Using Vue.js as framework for the UI > * Adding accessibility support (WCAG 2.0, maaaaybe covering section 508 > though I'm not quite familiar as that's more for US) > * Update all the JS libraries > * Add documentation to the code with JSDoc (the current code lacks > documentation) > * Add tests, both unit and end-to-end (also not present in current code) > * Maintain the look and feel with Bootstrap, and limit what is changed (i.e. > users are already familiar with Fuseki, and know they can upload data, run > queries, etc, so we should make sure that they are able to find it) > * Theming, with a default light-mode, a dark-mode, and (possibly?) > color-blind or other custom themes > * Work on mobile/responsive viewports > * Local browser settings; this is something cheap, that doesn't require > changing to the backend, and would allow us to persist user settings such as: > ** Previous executed Queries > ** Extra query prefixes > ** Number of datasets displayed per page in the main page > ** How long the server status widget queries the server (i.e. should we ping > it every 1 hour? every 30 seconds?) > ** The theme of the user (dark, light, color-blind-protanopia, > high-contrast, etc) leveraging bootstrap-vue > ** User language -- This message was sent by Atlassian Jira (v8.20.1#820001)