[ 
https://issues.apache.org/jira/browse/JENA-1911?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bruno P. Kinoshita resolved JENA-1911.
--------------------------------------
    Resolution: Fixed

> 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 4.3.2
>            Reporter: Bruno P. Kinoshita
>            Assignee: Bruno P. Kinoshita
>            Priority: Minor
>             Fix For: Jena 4.4.0
>
>         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)

Reply via email to