[
https://issues.apache.org/jira/browse/JENA-1911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17127569#comment-17127569
]
Andy Seaborne commented on JENA-1911:
-------------------------------------
This looks great.
One of the long-term pain points is the way the API is only available to
localhost by default. It is focused on the user being admin and data developer.
Another case is where the data-user is not the system administrator. A clean UI
for that use case, with deployment of the server by configuration files,
system-managed by whatever choice of deployment system the operator has (or is
a docker container). No prescribed "run/" area.
Then it can be used with Fuseki/main or packed into a WAR file. We may not even
need 3 package forms - Fuseki/full/jar and be a non-webapp (war file) build of
Fuseki/main + modules for query and for admin + UI.
A server is composed of:
* Fuseki core : required!
* Fuseki server view : optional module
* Fuseki admin control : optional module
That is a long term aspiration - we don't have to make all changes at once.
Upgrading the JS stack, having a separate build module and having better
appearance are all good in their own right.
We can evolve the UI in step with the server protocol release-by-release.
BTW Jena 3.16.0 will have the same full RDF* support in TDB1 and TDB2.
> 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
>
>
> 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.3.4#803005)