41
Licensed under Creative Commons Attribution-ShareAlike 4.0 International License The New User Interface Tim Donohue, DuraSpace Tech Lead for DSpace [email protected]

Introducing the New DSpace User Interface

Embed Size (px)

Citation preview

Page 1: Introducing the New DSpace User Interface

Licensed under Creative Commons Attribution-ShareAlike 4.0 International License

The New User Interface

Tim Donohue, DuraSpaceTech Lead for DSpace

[email protected]

Page 2: Introducing the New DSpace User Interface

DSpace UI• Prototype (at least) 2-3 UI platforms

– At least one Java-based– At least one non-Java

• By end of 2015– Approve a single platform / prototype– Finalize developer team / schedule

• Early 2016 : dev sprints begin• Demos / Early Training at OR16• Release in 7.0

OR2015OR2015

Page 3: Introducing the New DSpace User Interface

UI Working Group formed (Aug) UI Prototype Challenge (Dec) 9 prototypes! (8 institutions)

After OR2015

Page 4: Introducing the New DSpace User Interface

• Jan-Feb 2016: Demos & Feedback• Narrowed options

UI Prototype Challenge

Page 5: Introducing the New DSpace User Interface

UI Discussions (Feb - Mar)

VSVS

Page 6: Introducing the New DSpace User Interface

Why a Java UI?+ Stable, trusted+ Same as backend / API+ More modern Java tech

‒ Less innovative / added value?‒ Less exciting to new developers

Page 7: Introducing the New DSpace User Interface

Why a JavaScript UI?+ More dynamic+ Separation of concerns+ Innovative / exciting+ Better REST API

‒ SEO?‒ Accessibility?‒ Will it meet our needs?

Page 8: Introducing the New DSpace User Interface

Image borrowed from https://angularclass.com/

Meanwhile… (Dec 2015)

1.x1.x 2.0 beta2.0 beta

Page 9: Introducing the New DSpace User Interface

Why try Angular 2?• Benefits of JavaScript UI• Angular = most widely used• SEO support claims• Accessibility claims

https://angular.io/https://angular.io/

Page 10: Introducing the New DSpace User Interface

DuraSpace Summit (mid-March)

VSVS

Page 11: Introducing the New DSpace User Interface

++

https://github.com/DSpace-Labs/angular2-ui-prototypehttps://github.com/DSpace-Labs/angular2-ui-prototype

Page 12: Introducing the New DSpace User Interface

Proof–of-Concept UI Basic Angular 2 UI on DSpace 5.x 4 (very) part-time developers 2.5 months (including “ramp up”) Weekly status checks

William WellingWilliam WellingJames CreelJames Creel

Art LowelArt LowelDylan MeeusDylan Meeus

Andrea BolliniAndrea Bollini Tim DonohueTim DonohueJonathan MarkowJonathan Markow

Page 13: Introducing the New DSpace User Interface

Proof-of-Concept UIDemonstration

http://ui-prototype.atmire.com/

Page 14: Introducing the New DSpace User Interface
Page 15: Introducing the New DSpace User Interface
Page 16: Introducing the New DSpace User Interface
Page 17: Introducing the New DSpace User Interface
Page 18: Introducing the New DSpace User Interface
Page 19: Introducing the New DSpace User Interface
Page 20: Introducing the New DSpace User Interface
Page 21: Introducing the New DSpace User Interface
Page 22: Introducing the New DSpace User Interface
Page 23: Introducing the New DSpace User Interface

SEO (Google Scholar) Accessibility (U of Kansas) Better user experience Easily configurable UI Backend is still Java

++

Page 24: Introducing the New DSpace User Interface

June 2016

VSVS

Angular 2 in Release CandidateMajor users: Capital One, Weather.com

Page 25: Introducing the New DSpace User Interface

But, why Angular 2?• Extensive 3rd party modules• TypeScript!• “Java-like” / modular

– Extendable components– HTML-like templates

• You don’t even need JS!

https://angular.io/https://angular.io/

Page 26: Introducing the New DSpace User Interface

Sidebar

Sidebar section

Breadcrumb

News

Tree

Page 27: Introducing the New DSpace User Interface

Where do we go next?

Page 28: Introducing the New DSpace User Interface

RoadMap to 7Top Priorities•REST API•Single, Angular 2 UI

Timeline Goals•Beta & training at OR17•Final late 2017?

https://wiki.duraspace.org/display/DSPACE/RoadMap

Page 29: Introducing the New DSpace User Interface

But, we need your help!Sprint-like, organized developmentSprint-like, organized development REST API (Java devs)REST API (Java devs) Angular UI (JS devs)Angular UI (JS devs) UI / UX DesignersUI / UX Designers Accessibility experts / testersAccessibility experts / testers Translators (eventually)Translators (eventually)

If you want to join the team, email [email protected]

Page 30: Introducing the New DSpace User Interface

Become a member!DSpace is funded / developed / supported by

its community.

Become a member, have a direct say in...GovernanceRoadMap

Financial contributions are critical.

Page 31: Introducing the New DSpace User Interface

Stay tuned for more…

https://www.youtube.com/user/dspacevideoshttps://www.youtube.com/user/dspacevideos

Page 32: Introducing the New DSpace User Interface

Questions?

Page 33: Introducing the New DSpace User Interface

Image attribution[2] Button: https://flic.kr/p/bDMn4[8] A to A: https://angularclass.com/[27] Map: https://flic.kr/p/dQ32dx[28] Cat: https://flic.kr/p/aaxHdi

All other images available from referenced software platforms, institutions or websites

Page 34: Introducing the New DSpace User Interface

TypeScript• Typed superset of JavaScript

– No more “var”!– Types : string, number, Item, etc– Expandable / sharable (Typings registry)

• Compiles to plain JavaScript• Examples: private title: string; (String variable)

private myItem: Item; (Item variable)private myParam: any; (any type)

http://www.typescriptlang.org/ http://www.typescriptlang.org/

Page 35: Introducing the New DSpace User Interface

Components Each ‘part’ of webpage is a

Component (module): … ‘implements’ Interface … ‘extends’ another Component … has a selector (HTML-like tag)

e.g. <news> = NewsComponent … has a constructor (defines its inputs) … has a template (view) and/or methods

(actions)

Page 36: Introducing the New DSpace User Interface

Sidebar

Sidebar section

Breadcrumb

News

Tree

Page 37: Introducing the New DSpace User Interface

Simple Item View

Specialized metadata components

Page 38: Introducing the New DSpace User Interface

Templates are HTML-like<h4><label>{{ 'item.metadata.header' | translate }}</label></h4><table class="table table-striped"> <tbody>

<tr *ngFor=“let input of metadatumInputs”> <td>

<div class=“row”> <label>{{ input.label }}</label> </div> <div class=“row”>

<input *ngIf=“checkboxInput(input)” type=“checkbox” /> <input *ngIf=“textInput(input)” type=“text” /> <form-validation-message [form]=“form” [input]=“input”>

….

</div>

Page 39: Introducing the New DSpace User Interface

Dependency Injection (DI)Inject modules into other modules

// Define DSpaceService as injectable@Injectable()export class DSpaceService { … }

// Then, inject DSpaceService as inputexport class myComponent {

constructor(private dspaceService: DSpaceService) { … }

}

Page 40: Introducing the New DSpace User Interface

SEO via Angular Universal• Same JS on server & client!

– Server side: Node.js or ASP.NET• Future: Java!

• Serves up HTML to non-JS clients• Speeds up app initial load

SEO verification with Google Scholar

Page 41: Introducing the New DSpace User Interface

DSpace 7 Architecture*

DBJava

API

REST

SWORD

OAI

RDF

Spring BootSpring BootWebappWebapp

Angular2 UI

Assetstore

Other apps or services

* = vastly simplified