MyLK project - WP2 - D2.1 General...

30
MyLK project - WP2 - D2.1 General specifications Writers : Philippe Raymond, haikara, Laurent Gruber, Claroline This WP will thus have three main objectives: O2.1: Specifying the requirements for development of the dashboard, including the design of the interface between learners and the platform for it to be developed in a user-friendly way, O2.2: Defining the needs for standard development, the proper protocol to communicate with all formats and thus the technical needs of each supports, O2.3: Specifying the requirements on the developed platform to allow future improvements regarding skills recognition and recommendations on learning paths.

Transcript of MyLK project - WP2 - D2.1 General...

Page 1: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

MyLK project - WP2 - D2.1 General specifications

Writers : Philippe Raymond, haikara, Laurent Gruber, Claroline

This WP will thus have three main objectives:

O2.1: Specifying the requirements for development of the dashboard, including the design of the

interface between learners and the platform for it to be developed in a user-friendly way,

O2.2: Defining the needs for standard development, the proper protocol to communicate with all

formats and thus the technical needs of each supports,

O2.3: Specifying the requirements on the developed platform to allow future improvements

regarding skills recognition and recommendations on learning paths.

Page 2: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

MyLK Portal Global architecture

1. Technological choices A tech stack is a combination of software products and programming languages used to

create a web or mobile application. Applications have two software components: client-side and server-side, also known as front-end and back-end.

Each layer of the application builds on the features of the one below it, creating a stack. This diagram shows the major building blocks of the recommended tech stack, but there can be other supporting components included.

1.1. Back-end tech stack

The back-end contains the business logic that works behind the scenes to drive your application. Users will never directly engage with the back-end, all information is passed back and forth through the front-end. The recommended server side programming language is PHP.

PHP is a server-side scripting language designed primarily for web development but also used as a general-purpose programming language.

1.1.1. LAMP stack LAMP is an archetypal model of web service stacks, named as an acronym of the names of its

original four open-source components: the Linux operating system, the Apache HTTP Server, the

Page 3: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

MySQL relational database management system (RDBMS), and the PHP programming language. The LAMP components are largely interchangeable and not limited to the original selection. As a solution stack, LAMP is suitable for building dynamic web sites and web applications.

Since its creation, the LAMP model has been adapted to other componentry, though typically consisting of free and open-source software.

1.1.2. Server Side Programming Language As compared to the other programming languages, PHP is rather easy to learn and maintain.

This is mainly because its syntax is based on the languages such as C and Perl.

The availability of multiple frameworks in PHP helps us to quickly build applications that incorporate a variety of different features. These frameworks also impart security and speed to our application development process.

1.1.3. Client Side Programming Language

JavaScript is a high-level, dynamic, untyped, and interpreted programming language. It has been standardized in the ECMAScript language specification. Alongside HTML and CSS, JavaScript is one of the three core technologies of World Wide Web content production; the majority of websites employ it, and all modern Web browsers support it without the need for plug-ins. JavaScript is prototype-based with first-class functions, making it a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.

1.1.4. Framework The recommended PHP framework is Symfony. Symfony is a PHP web application framework and a set of reusable PHP components/libraries. Symfony was published as free software on October 18, 2005 and released under the MIT license. The framework has a huge community and is widely used worldwide. Symfony Community is a passionate group of over 300,000 developers from more than 120 countries, all committed to helping PHP surpass the impossible.

Symfony aims to speed up the creation and maintenance of web applications and to replace repetitive coding tasks. Symfony has a low performance overhead used with a bytecode cache.

Symfony is aimed at building robust applications in an enterprise context, and aims to give developers full control over the configuration: from the directory structure to the foreign libraries, almost everything can be customized. To match enterprise development guidelines, Symfony is bundled with additional tools to help developers test, debug and document projects.

1.1.5. User Management The recommended way of handling user authentication is via FOSUserBundle.

The FOSUserBundle adds support for a database-backed user system in Symfony. It provides a flexible framework for user management that aims to handle common tasks such as user registration and password retrieval.

Page 4: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

1.1.6. API The recommended way of developing the MyLK application is by separating the application

programming interface from the presentation layer.

In computer programming, an application programming interface (API) is a set of subroutine definitions, protocols, and tools for building application software. In general terms, it's a set of clearly defined methods of communication between various software components. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer.

The Api Platform project (https://api-platform.com/) is a specific distribution for Symfony that aids greatly in the creation of API specific Symfony web applications. The code is 100% open source (MIT licenced) and designed for speed and caching. Specifically it has built in :

● JSON-LD, Hydra, HAL native support ● Automatic Swagger documentation ● Docker integration ● Data validation and error management ● Pagination, filtering and sorting ● FOSUser, JWT, CORS and OAuth support ● Behat, PHPUnit and Postman spec & testing

1.1.7. GraphQL GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.

1.1.8. Database Abstraction Layer The recommended database abstraction layer is DoctrineORM

The Doctrine Project (or Doctrine) is a set of PHP libraries primarily focused on providing persistence services and related functionality. Its prize projects are an object-relational mapper (ORM) and the database abstraction layer it is built on top of.

One of Doctrine's key features is the option to write database queries in Doctrine Query Language (DQL), an object-oriented dialect of SQL.

1.2. Front-end tech stack The front-end is the visual part of your application that users will see and interact with. This

interaction can happen through a web browser or a mobile app. When building for the web, the front-end tech stack is made up of:

● HTML (Markup Language) ● CSS (Style Sheet Language)

Page 5: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

● JavaScript (Scripting Language)

1.2.1. HTML5 HTML5 is a markup language used for structuring and presenting content on the World Wide

Web. It is the fifth and current version of the HTML standard.

1.2.2. CSS3 CSS3 is the latest evolution of the Cascading Style Sheets language and aims at extending

CSS2.1. It brings a lot of long-awaited novelties, like rounded corners, shadows, gradients, transitions or animations, as well as new layouts like multi-columns, flexible box or grid layouts.

1.2.3. Bootstrap Bootstrap is a free and open-source front-end web framework for designing websites and

web applications. It contains HTML- and CSS-based design templates for typography, forms, buttons, navigation and other interface components, as well as optional JavaScript extensions.

Unlike many web frameworks, it concerns itself with front-end development only. Bootstrap Is free, open-source and MIT licenced.

1.2.4. Angular 2 Angular 2 is the next version of Google’s massively popular MV* framework for building

complex applications in the browser. Angular2 Is free, open-source and MIT licenced.

1.2.5. Typescript TypeScript is a superset of JavaScript which primarily provides optional static typing, classes

and interfaces. One of the big benefits is to enable IDEs to provide a richer environment for spotting common errors as you type the code.

1.2.6. Webpack 2 Webpack is a module bundler. webpack takes modules with dependencies and generates

static assets representing those modules. As websites are evolving into web apps they are relying more and more on JavaScipt.

1.2.7. WebSockets If we want real time data in the MyLK web application, we must make use of websockets via a publish-subscribe messaging system for push notifications.

WebSockets is an advanced technology that makes it possible to open an interactive communication session between the user's browser and a server. With this API, you can send

Page 6: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

messages to a server and receive event-driven responses without having to poll the server for a reply.

There are a number of publish-subscribe messaging libraries for the web, one that is relatively easy to implement is Faye. Faye is a publish-subscribe messaging system based on the Bayeux protocol

1.3. Underlying Architecture

1.3.1. Microservices Microservices is a specialisation of an implementation approach for service-oriented architectures used to build flexible, independently deployable software systems. Services in a microservice architecture are processes that communicate with each other over a network in order to fulfill a goal. These services use technology-agnostic protocols.

In a microservices architecture, services should have a small granularity and the protocols should be lightweight. The benefit of distributing different responsibilities of the system into different smaller services is that it enhances the cohesion and decreases the coupling. This makes it easier to change and add functions and qualities to the system at any time. It also allows the architecture of an individual service to emerge through continuous refactoring, and hence reduces the need for a big up-front design and allows for releasing software early and continuously.

1.3.2. Containerization Containerization is a lightweight alternative to full machine virtualization that involves encapsulating an application in a container with its own operating environment. This provides many of the benefits of loading an application onto a virtual machine, as the application can be run on any suitable physical machine without any worries about dependencies. The proposed method of containerization is using Docker.

1.3.3. Docker Docker provides an additional layer of abstraction and automation of operating-system-level

virtualization. Docker uses the resource isolation features of the Linux kernel such as cgroups and kernel namespaces, and a union-capable file system such as OverlayFS to allow independent "containers" to run within a single Linux instance, avoiding the overhead of starting and maintaining virtual machines.

Docker supports native container orchestration and server clustering via Docker Swarm Mode out of the box.

1.3.4. Docker Swarm Swarm is production ready and tested to scale up to one thousand (1,000) nodes and fifty

thousand (50,000) containers with no performance degradation in spinning up incremental containers onto the node cluster.

Page 7: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

The recommended way to deploy Docker is via the native Docker Swarm Mode.

For a high availability (HA) cluster at least three master servers are recommended.

1.3.5. Operating System The recommendations for the underlying operating system on all Swarm nodes is currently

either Ubuntu or CentOS. While CentOS seems to be the more stable operating system, the packages are not as up to date as those present on Ubuntu.

Ubuntu is built on Debian's architecture and infrastructure. Ubuntu releases updated versions predictably every six months, and each release receives free support for nine months with security fixes, high-impact bug fixes and conservative, substantially beneficial low-risk bug fixes.

1.3.6. Data Storage Data Storage is usually broken down into two categories :

● Relational or non-relational databases ● File Storage for user uploads or application generated files (cache, logs, exports…)

Relational Databases Relational data such as user accounts need to be stored in a relational database such as

MySQL (MariaDB) or PostgresSQL, official Docker containers exist for both. MariaDB is a community-developed fork of the MySQL relational database management

system intended to remain free under the GNU GPL. Development is led by the original developers of MySQL, who forked it due to concerns over its acquisition by Oracle Corporation.

PostgreSQL, often simply Postgres, is an object-relational database, with additional "object" features – with an emphasis on extensibility and standards compliance. As a database server, its primary functions are to store data securely and return that data in response to requests from other software applications. It can handle workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users.

Non Relational Databases The tracked information, however it will be tracked, need to be stored. This information will

typically use formats that cannot be known in advance and need to be stored in a non relational database that supports flexible JSON like documents. The currently recommended technology is MongoDB.

MongoDB is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemas. MongoDB is developed by MongoDB Inc. and is free and open-source, published under a combination of the GNU Affero General Public License and the Apache License.

File Storage File storage is more complex in a distributed, clustered microservice based production

environment. File storage should be massively scalable and highly available. The recommended method is

an NFS mount on each server in the cluster that needs to access file storage. The mounted server could be, for example, a highly available NAS or SAN array or a

dedicated block storage such as Amazon S3.

Page 8: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

1.3.7. Reverse proxy and SSL

HTTPS must be used in all public facing webservers to guarantee user security and to avoid potential Man in the Middle attacks.

Let’s Encrypt is a free, automated, and open certificate authority brought to you by the non-profit Internet Security Research Group (ISRG).

Træfɪk is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. It supports Docker Swarm, to manage its configuration automatically and dynamically. It also has SSL backends support and Let’s Encrypt support (Automatic HTTPS with renewal) It is highly recommended to use either this solution or an Nginx or HAProxy based solution.

HAProxy is faster than Traefik (around twice the amount of requests per second) but much less flexible.

1.3.8. Transactional Email Transactional emails may also be called “triggered” emails because they include any email

that is triggered by a user's interaction with a web app. Often times, transactional emails are sent through SMTP relay or programmatically through a third party provider’s API.

The recommended way of handling transactional email, given the current time constraints is to delegate the task to a third party service provider like Mailjet, Sendgrid, MailChimp etc…

1.3.9. Error Logging The ELK stack consists of Elasticsearch, Logstash, and Kibana. Although they've all been built

to work exceptionally well together, each one is a separate project that is driven by the open-source vendor Elastic.

Elasticsearch is a search engine based on Lucene. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. Elasticsearch is the most popular enterprise search engine followed by Apache Solr, also based on Lucene. Logstash is an open source tool for collecting, parsing, and storing logs for future use. Kibana is a web interface that can be used to search and view the logs that Logstash has indexed.

2. Methodological choices

To manage the product development, the framework will be based on the agile SCRUM method. Scrum is an iterative and incremental agile software development framework. It implies specific roles and workflow.

2.1. Roles There are three core roles in the Scrum framework : the Scrum Master, the Product Owner and the development team.

Page 9: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

1. Scrum Master: their role is to remove obstacles to allow the developer and Product owner to work as efficiently as possible. He ensures that the framework is followed. → sensed persons: Donovan, Philippe 2. Product Owner: plays the role of the final user and answers questions for development choices. The delay of answer from the product owner to Scrum Master or IT Developers : 24 h → sensed persons: Pauline (Claroline), Simon, AGH 3. Development team → IT developers at Haikara and Claroline

2.2. Workflow The sprint, a period of one month or less is the heart of the Scrum framework. During this period useable and potentially releasable product increment is created. A new sprint starts immediately after the conclusion of the previous Sprint. Each Sprint starts with a Sprint Planning event that aims to define the work for the Sprint and make an estimated commitment for the Sprint goal. In other words, it’s during this Sprint Planning that is decided the features to be developed during the sprint. The sprint ends with a Sprint Review that reviews progress to show to stakeholders and identify lessons and improvements for the next Sprints.

3. Collection of Digital Learning Episodes (DLE)

3.1. Objective MyLK aims to facilitate the collection of the user Digital Learning Episodes (DLE). Automatic gathering of DLEs will simplify the process for the user : He won’t have to enter himself all his DLEs. In the WP1 we described a learning episode like :

“A learning episode is defined by the combination of the identity of the learner,

and either or both of the learning outcomes identified, and the period or

periods of time spent learning. “

Work Package 1- Definition of a learning episode - p.20

 

Therefore, MyLK DLEs collection should be able to trace-up the following information: - Who, - When, - How long, - What.

Page 10: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

The objective is to be able to collect all these informations in the simplest way possible for the user. It induce some constraints that it will be important to be aware of when developing the MyLK prototype:

- The “who” induces that however MyLK collects the DLEs, the user needs to be identified somehow or other.

- The “when” and “How long” means that the time and duration needs to be tracked, and maybe compiled (in the case of a user consulting several time the same source)

- Should the “what” has to be exhaustive ? Which sources is worth tracking ? Do non-formal sources and formal sources have to be or can be tracked the same way ?

3.2. Principle For each of the actions that this automatic collection of DLEs requires (collect, describe and qualify) several steps to automate the collection of DLEs has been thought:

1) Creating a database “in the first place” of digital Learning Resources from pre identified providers by scanning the web (ex : YouTube channels, Wikipedias articles, etc).

2) Collecting the DLEs 3) Comparing the web user activity (the collected DLEs) to the referred DLE in our database:

a) As soon as there is a correspondence, the DLE will be automatically added in DLE FLOW of the user.

b) If there’s no correspondence, we add the DLE with a maximum of metadata we have been able to collect and the user can manually validate and add a description if he wishes to.

3.3. Digital Learning Resources DATABASE

The goal is to create a Digital Learning Resources (DLR) database which will reference all potential DLR and will add a full description with a pedagogical gain. This pre indexation is a guarantee to have a pool of DLR with a proper pedagogical description. In order to create a database we will need first to index the potential DLR and to describe them.

INDEXATION of the DLRs

The indexing job of all the potential DLR has a very broad scope, and it therefore needs to be done in stages. The first step will be to reference a maximum of formal and informal resources openly accessible on the web (OER). The "closed" resources (like LMS) won’t be indexed in this database since we won’t be able to assure they accessibility. The first targets for indexing are:

● YouTube (filtered from channels and/or keywords)

● Dailymotion

● wikipedia

● EdX

Page 11: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

● Coursera

● OpenClassrooms

● http://www.cairn.info/

● http://www.jstor.org/

We also think of indexing priorities to fill the database: identify training subjects for the largest audience and find websites providing training material in order to index them in top priority. Possible subjects:

● management ● ecology ● energy ● finance ● banking ● languages ● sciences (mathematics, physical science, chemistry, geology. . . )

DESCRIPTION of the DLRs

To insure the quality of this description it is crucial to choose a known data model. Several standards already exist like the Learning Object Metadata (LOM) standard , the Metadata 1

for Learning Resources (MLR) or the Learning Resources Metadata Initiative (LRMI) . 2 3

● LOM

Learning Object Metadata is a data model, usually encoded in XML, used to describe a learning object and similar digital resources used to support learning. The purpose of learning object metadata is to support the reusability of learning objects, to aid discoverability, and to facilitate their interoperability. One of the advantages of the LOM data model is that a French counterpart normalized by the AFNOR LOM-FR and ScoLOM-FR exist. Example of resource having a LOM file (ScoLOM-FR): http://data.abuledu.org/wp/?LOM=4150

● Metadata for Learning Resources ISO/IEC 19788 To avoid ambiguity and provide interoperability, metadata learning resources (MLR) data elements

are documented using attributes.

Assertions about a learning resource are made using triples(subject, predicate, object) where subject

represents the learning resource, predicate is a property identifier and object is the property value.

● LRMI LRMI is a metadata specification based on schema.org that can be used to describe learning 4

1 http://www.lom-fr.fr/ 2 http://www.unesco.org/new/en/unesco/themes/icts/m4ed/mobile-learning-resources/ 3 http://lrmi.dublincore.net/ 4 http://schema.org/docs/about.html

Page 12: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

resources.

Finally, even if this database would be a guarantee to have a adequate information, we dropped

aside the eventuality to create a digital Learning resources database because we had no time for it in

the scope of the project. Indeed, just to study which one of these standards is the best to use in our

case is a real research exercise adding the indexation process, make the digital Learning resources

database a project on its own.

3.4. User DLR Activity Collection

To choose the way we wanted to collect DLEs, we had to explore a maximum of possibilities taking in

account the main constraints.

The first problem to face is the heterogeneity of the non-formal, informal and formal Digital Learning Resources (DLR). We can classify the sources into two groups : Non-formal sources : → Wikipédia, Youtube, Formal sources : → Learning Management System (LMS), Massive Open Online Courses (MOOC) The second problem is to be able to link the information collected to the MyLK user. In order to manage them, a tracking system has been designed : A plug-in used in a web browser for the non-formal sources and to link the MyLK user to the information tracked and a xAPI system to track the DLEs in the LMS. In the case of a LMS not using xAPI and just using the SCORM norm, a script that intercepts XAPI calls, could be used. If we build partnerships with content providers, it will be possible to harvest DLEs. (ex: I go on my

company LMS, login is needed, I get access, I see elearnings, the LMS sends the DLEs to the MyLK

platform).

In the cases of tracking DLEs on LMS, provider involvement will be needed. That's where MyLK labels

will make sense to convince providers to partner with MyLK.

3.4.1. Browser Plug-in for all web pages

The browser Plug-in is an essential and minimal tool to track DLEs.

It will be necessary to be connected to the MyLK platform so that the plug-in reads the browser

history. For this first version, the plugin will be available just for Chrome.

Concretely a MyLK user will be asked to download the MyLK plugin and to install-it on his Chrome

browser. In order to avoid tracking all the user’s navigation history and have to deal with a large

amount of data, we chose to let the user activate the plugin when he wants to track his DLEs.

The other reason to activate the MyLK plugin by the user is to not violate his privacy.

Page 13: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

3.4.2. xAPI for Learning Management Systems (LMS)

So that a third party application can communicate with the MyLK platform, an exchange

format/protocol must be defined. The recommended exchange format for a modern web application

is JSON.

On the MyLK side, JSON must be consumed. The MyLK side does not need to send information to the

LMS.

On the LMS side, JSON must be sent with either JSON or Form encoding.

We have first searched for existing exchange formats/protocols.

We looked at two standards used :

● Learning Tools Interoperability (LTI)

● Tin Can API /xAPI

3.4.2.1. Previous research about existing standards

Page 14: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

LTI

We can exclude LTI since its primary purpose is to connect learning systems with external service

tools in a standard way across learning systems.

Tin Can API / xAPI

TinCanAPI / xAPI is a technical specification that aims at facilitating the documentation and

communication of learning experiences. It allows us to communicate statement objects to a LRS

(Learning Record Store). The exchange format is JSON. Using xAPI implies that Mylk will need a LRS.

The xAPI data model is the "Statement" object : the principals properties of the Statement object are

: "Actor", "Verb", "Object", "Result", and "Context".

3.4.2.2. TinCan API / xAPI

The Experience API (xAPI), also known as the Tin Can API, is an e-learning software specification that allows learning content and learning systems to speak to each other in a manner that records and tracks all types of learning experiences. Learning experiences are recorded in a Learning Record Store (LRS).

The exchange format is JSON. The xAPI data model is the "Statement" object : the principals

properties of the Statement object are : "Actor", "Verb", "Object", "Result", and "Context".

Statement

A data structure showing evidence for any sort of experience or event which is to be tracked in xAPI

as a Learning Record. A set of several Statements, each representing an event in time, may be used

to track complete details about a learning experience. Requirements :

● Statement and other object SHOULD NOT include properties with a value of an empty

object.

● Statement MUST use each property no more than one time

● If Object is an Activity:

● A Statement MUST use "actor", "verb", and "object". The others properties are optional.

● A Statement MAY use its properties in any order.

Statements are information about a tracked learning experience. Typically, the information

represented in the Statement has already happened. Statements are expected to be permanent. The

only way to undo a Statement within this specification is to void it. Voiding does not destroy a

Statement, rather indicates the evidence in the Statement is to be disregarded.

Actor

The Actor defines who performed the action. The Actor of a Statement can be an Agent or a Group.

● If Agent (persona or system):

○ An Agent MUST be identified by one of the four types of Inverse Functional

Identifiers (mbox/mbox_sha1sum/openid/account - A user account on an existing

system e.g. an LMS or intranet-)

Page 15: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

○ An Agent MUST NOT include more than one Inverse Functional Identifier;

○ An Agent SHOULD NOT use Inverse Functional Identifiers that are also used as a

Group identifier.

Property Type Description Required

Object Type string Agent. This property is optional except when the

Agent is used as a Statement's object.

Optional

Name string Full name of the Agent. Optional

IFI mbox or mbox_sha1sum or openid or account Required

● If Group:

Property Type Description Required

Object Type string Agent. This property is optional except when the

Agent is used.

Optional

Name string Name of the group Optional

Member Array of

Agent

Objects

The members of this Group. This is an unordered

list.

Required

IFI Required if not

anonymous

group

Verb

The Verb defines the action between an Actor and an Activity. The xAPI does not specify any

particular Verbs except for "voided"

Property Type Description Required

id IRI Corresponds to a Verb definition. Each Verb

definition corresponds to the meaning of a Verb,

not the word.

Required

display Language

Map

The human readable representation of the Verb

in one or more languages

Optional

Page 16: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

Object

The Object defines the thing that was acted on. The Object of a Statement can be an Activity ("Jeff

wrote an essay about hiking."), Agent/Group ("Nellie interviewed Jeff") , SubStatement, or

Statement Reference ("Nellie commented on 'Jeff wrote an essay about hiking.").

Property Type Description Required

Object Type string MUST be Activity when present Optional

id IRI An identifier for a single unique Activity Required

definition Object Object with Name, description, type (IRI),

interaction (object),extensions (object)

Optional

● If Object is an Agent/Group:

Statements that specify an Agent or Group as an Object MUST specify an "objectType" property.

● If Object is a Statement:

There are two possibilities for using a Statement as an Object. First, an Object can take on the form

of a Statement that already exists by using a Statement Reference. A common use case for

Statement References is grading or commenting on an experience that could be tracked as an

independent event. The special case of voiding a Statement would also use a Statement Reference.

Second, an Object can be a brand new Statement by using a SubStatement.

● Statement references : is a pointer to another pre-existing Statement

Property Type Description Required

Object Type string In this case, MUST be StatementRef. Required

id UUID The UUID of a Statement. Required

● Substatement reference: One interesting use of SubStatements is in creating Statements of

intention. For example, using SubStatements we can create Statements of the form " ( )" to

indicate that we've planned to take some action. A SubStatement MUST specify an

"objectType" property with the value SubStatement. He MUST be validated as a Statement

in addition to other SubStatement requirements (MUST NOT have the "id", "stored",

"version" or "authority" properties and MUST NOT contain a SubStatement of its own).

Other properties

- Result

An optional property that represents a measured outcome related to the Statement in which it is

included.

Page 17: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

Property Type Description Required

Score Object Outcome of a graded Activity achieved by an

Agent. Must be scaled (Decimal number between

-1 and 1, inclusive), may have a raw, max and

min

Optional

Success Boolean Indicates whether or not the attempt on the

Activity was successful.

Optional

Completion Boolean Indicates whether or not the Activity was

completed.

Optional

Response String A response appropriately formatted for the given

Activity.

Optional

Duration Duration Period of time over which the Statement

occurred. MUST be

expressed using the format for Duration in ISO

8601:2004

Optional

Extensions Object A map of other properties as needed. Optional

- Context

Context that gives the Statement more meaning. Examples: a team the Actor is working with,

altitude at which a scenario was attempted in a flight simulator.

- Timestamp

Timestamp of when the events described within this Statement occurred. Set by the LRS if not

provided. The "timestamp" property is of type Timestamp. It is formatted according to the normal

format of ISO 8601 and corresponds to the time of when the events described within this Statement

occurred. If it is not included in the Statement when it is submitted to the LRS, the LRS populates it

with the same value it would use with Stored.

- Authority

Agent or Group who is asserting this Statement is true. Verified by the LRS based on authentication.

Set by LRS if not provided or if a strong trust relationship between the Learning Record Provider and

LRS has not been established.

Learning Record Store (LRS)

Page 18: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

A Learning Record Store is a database designed specifically for storing learning activity data. As we will be creating data with the Experience API (xAPI or Tin Can) specification, we will need a Learning Record Store to store, sort and share that data. The xAPI plugin of a LMS or the MyLK plugin will create statements. Once capture this data needs to

be correctly stored.If the data we collect is stored incorrectly or not valid to the xAPI standard, we

will find ourselves with a whole lot of useless data in years to come.

We searched for different open source LRS :

- Learning Locker : https://github.com/LearningLocker/learninglocker

- LXHIVE : https://github.com/Brightcookie/lxHive

In our case the recommended Learning Record Store is Learning Locker since it’s based on the same

technologies as the ones recommended for the MyLK application.

Learning Locker can collect data from Learning Management Systems, Mobile Apps, Portals, Devices

and more. It scales massively and keeps data consistent with the xAPI.

Learning Locker can also run advanced analytics and customized reports to assess learning

performance and can filter data according to custom rule sets.

Learning Locker is licensed under GPL 3.0

Possible export of a report :

- gives any information of several statement

- CSV or JSON

We can imagine a query from MylK to LRS API for each user.

You can filter the statement by :

- Who ? (actor)

- Did what ? (verb)

- To what ? (object)

- In what ? (platform, instructor, parent activity, grouping activity, language)

- With what ? (result)

- When ?

3.4.3. Interception script for SCORM in LMS

Some LMS uses SCORM (Sharable Content Object Reference Model) rather than the xAPI. SCORM is the past generation of the xAPI. It’s a technical specification that defines

communications between a learning content and a host system (an LMS in our case). SCORM also

defines how the content may be packaged into a transferable ZIP file called “Package Interchange

Format.” Currently two versions of SCORM are still used :SCORM 1.2 SCORM 2004.

The information sent to the LMS is about the user activity : how long did he spend on the content,

did he passed or failed, his score…

This information is sent in XML.

Even if this information is not as precise as the one generated by an xAPI, it still valuable to intercept

it and create a MyLK statement from there.

Page 19: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

3.4.4. MyLK Statement Format

The different possibilities given by the xAPI statement format underlines the necessity of a specific

MyLK statement format. Here is an example of a statement stored in MyLK:

{

"version": "1.0.0",

"actor": {

"objectType": "Agent",

"name": "1513379601052",

"mbox": "mailto:[email protected]"

},

"verb": {

"id": "http://adlnet.gov/expapi/verbs/experienced",

"display": {

"fr-FR": "http://www.dailymotion.com"

}

},

"result": {

"duration": "PT2S"

},

"object": {

"objectType": "Activity",

"id": "http://www.dailymotion.com/video/x2eufl9",

"definition": {

"name": {

"fr-FR": "Dailymotion PHP SDK upload test"

},

"description": {

"fr-FR":

"Explorer,pouvez,d\u00e9couvrir,regarder,nouvelles,vid\u00e9os,musique,news,sports,bandes-annonces,meil

leurs,cr\u00e9ateurs,marques,Cha\u00eenes"

Page 20: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

}

}

},

"authority": {

"objectType": "Agent",

"name": "Philippe Raymond",

"mbox": "mailto:[email protected]"

},

"stored": "2017-12-15T23:27:04.284000+00:00",

"timestamp": "2017-12-15T23:27:04.284000+00:00",

"id": "338da75b-b8fe-4867-8eb9-5d06ed575890"

}

You can refer to every statement sections explained in the paragraph above to understand it!

3.4.5. To summarize

Page 21: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

5. User profile and resume management

We’ve studied the possibility to import resume from LinkedIn (list other equivalent and popular platforms, Viadeo? - look at existing APIs) and/or to import a resume in a Europass and Leap2A format (see corresponding formats - XML, JSON). If there's no former resume the user can create its own from scratch (see necessary fields, i.e. statement of presential training events and virtual classes). The user can also declare his fields of interest - professional project, reconversion project, passions, desired training (useful to suggest him contents). Possibility to export resume in Europass, Leap2A, PDF and HTML formats (see corresponding formats - XML, JSON). Mandatory user fields : Login / Password / email

6. Access to the platform by third parties

Page 22: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

The user must be able to get in shape his DLE's and his resume to show them to a third party (Recruiter, Employer, HR department, Advisor . . . ). The user opens one access to one third party to show him one specific “view” of his datas. One of the advantages would be a good platform web indexation.

Assessment (set aside in the project)

Assessments should be possible for training (group of DLE) followed. The user can ask to be assessed or assessment can also be proposed to him. We have no time in this project to imply organisms doing assessment. But we have to think about it in the technical specifications. Monetization could be done by selling assessments to the learner (% of the selling price for MyLK).

Learning suggestions

Learning Path (set aside in the project, but take a look on D3.1)

Possibility of suggesting courses (training) likely to interest the user. Suggestions are made according to the already followed trainings and to the levels of knowledge or of competences attainable. This has been done in the project using the ESCO classification of occupations and skills: https://ec.europa.eu/esco/portal/home The level of knowledge is ranked using the EQF: https://en.wikipedia.org/wiki/European_Qualifications_Framework

Suggestion of training resources

Possibility of suggesting courses (training) likely to interest the user. Suggestions are made according to, his interests detected among his DLE, his profile (studies, career…), his declared training interests.

MyLK Quality-labels

First level

Possibility for providers and producers of pedagogical contents to add a “label” (MyLK logo) near to this content. In that case the provider platform writes a cookie which will be read by the MyLK platform. It is another mean to collect DLE. It also promotes the "small" producers of learning content.

Page 23: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

-> Bronze quality-label, points out to the MyLK users that the resource is considered by its author to be a formative resource.

2nd level

Create a quality-label awarded by all users (social activity on the MyLK platform) which will attest the quality of the resource. -> Silver quality-label, points out to the MyLK users that the resource is “approved” (by ranking and comments).

3rd level

Create a quality-label awarded by Learning Institutes, universities and companies attesting the quality of the resource. -> Gold quality-label, points out to the MyLK users that the resource is considered of good pedagogical quality. This idea has been dropped due to a lack of time.

7. Functional and technical graphs

As a sum up of what have been written above, see below two graphs: The first one shows the MyLK functionalities, tracking the different sources of learning content feeding MyLK Digital Learning Resources. We see how DLR can be assembled in collections and tagged according to the learner pedagogical intention using ESCO terminology. The user can also import and export Europass CVs and share them with third parties.

Page 24: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

This graph (next page) illustrates the technical description made all above in this document.

It fits all the tech choices than had been made in one single image.

Learning content may come from official LMS implemented in companies or from open

websites such as Wikipedia or Youtube, Dailymotion, etc.

All the tracking is settled in xAPI statement and recorded into a LRS.

Page 25: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

8. User Interface - Conceptual Design

The idea is to let the user handle the learning tracking MyLK has collected for him. He is able to record learning activity automatically with the plugin and then rearrange it with the interface. We wanted to have a very simple and “readable” interface to have the most “fluid” user experience. One goal was also to have a tool in accordance to very popular website in order to have an up-to-date platform.

Page 26: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

9. MyLK user Interface - Design steps

The first study we made is quite close to the result we have. Something contemporary and familiar using ‘flat’ design. We deliberately made the choice to use no color in order to concentrate on data and informations (and to avoid fruitless discussions). So we stayed on a black and white interface with actions concentrated in contextual menus. Here is the screen showing the flow of learning activity tracked by the plugin. The user can sort them, rate and comment them and organize them into collections.

The screen next page shows one of the CV written by the user. CVs can include digital learning experiences and can be shared with third parties as recruiters or job seekers. The user can write as many different CVs as he wants regarding the number of people he wants to share them with.

Page 27: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

The last screen below shows the “collection” of DLRs, these collections are built in order for the user to say what was his pedagogical intention in collecting these particular resources. This is also here where he can decide to share a collection with other users, to tell them what was is own experience and in what these resources were helpful for him.

Page 28: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

10. MyLK public website

Before starting to use the tool in itself the user has to create an account. We have designed a website aiming to explain the MyLK concept. On the same website the user can simply create an account and then go to the platform, download the plugin and start to record all his learning activities. See the landing page on the next page:

Page 29: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via
Page 30: MyLK project - WP2 - D2.1 General specificationsmylk-project.info/wp-content/uploads/2016/06/D2.1_WP2.pdf · Docker supports native container orchestration and server clustering via

Here is the screen asking for a very simple registration to have a quick access to the MyLK platform:

These specifications and design researches leads us to the integration and coding of the MyLK platform. CONCLUSION All these specifications will lead us to a stable and and easy to maintain tool. We also took into account the time we have to build the whole platform. That’s why we had to make choices. All the ideas that came from WP1 could be a good start for a MyLK follow-up.