ESUP-Portail is a French Consortium to promote open source solutions in higher ed. It represents more than 70 French institutions and has the support of the French Ministry of Higher Education and Research. For several years, the Consortium has had a fruitful and strong partnership with the Apereo Foundation, a worldwide organization also promoting open source solutions.
This presentation was given during the Open Apereo 2016 conference. Its goal was to explain how much ESUP-Portail is involved in the open source effort. To do so, the presentation focuses on two main examples: its contribution to the Open Academic Environment platform and its work on the Agimus-NG project.
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
How ESUP-Portail contributes to open source software for higher ed
1. TWO (CONCRETE)
EXAMPLES OF
HOW ESUP-PORTAIL
CONTRIBUTES TO OPEN
SOURCE SOFTWARE
FOR HIGHER ED
ALAIN MAYEUR
FRÉDÉRIC DOOREMONT
MATHILDE GUÉRIN
#APEREO16
2. ELI5: HOW TO CONTRIBUTE TO
OPEN SOURCE?
INTRODUCTION
3. We had this great idea for a project a while back and
then...
... we finally got the go to start developing it!
And then we realized this solution may help others
with similar needs so why should we keep it for
ourselves?
Let’s share it openly for the whole world to enjoy!
1
4. We checked out your project...
... and well, we really liked it.
Actually, we liked it so much we decided to get our
hands dirty and make some improvements and fixes.
And since we think you (and others) may be
interested in these changes, what do you think
of merging (some of) our work with yours?
It may not be much but all (genuine) contributions
are welcomed, right?
2
5. Hey, I’m no hardcore programmer but I’d like to
get involved in your project and help you out with...
3+
6. ‣ Tests
LET’S GO FIND SOME BUGS!
Photograph by
Barta IV
Hey, I’m no hardcore programmer but I’d like to
get involved in your project and help you out with...
3+
7. ‣ Tests
‣ Translation
EVER HEARD OF CHINGLISH?
Hey, I’m no hardcore programmer but I’d like to
get involved in your project and help you out with...
3+
8. ‣ Tests
‣ Translation
Intended meaning:
|| “You are responsible forever for that which you tame”
— The fox in The Little Prince (A. St-Exupéry)
Actual meaning:
|| “Chicken noodle soup”
— Um... Like some billions of people I guess?!
... OR OF PEOPLE GETTING RIDICULOUS TATTOOS?
Hey, I’m no hardcore programmer but I’d like to
get involved in your project and help you out with...
3+
9. ‣ Tests
‣ Translation
GOOGLE TRANSLATE IS NOT PERFECT
BUT IT USUALLY DOES A PRETTY GOOD JOB
GOOGLE TRANSLATE EST PAS PARFAIT,
MAIS IL LE FAIT HABITUELLEMENT UN ASSEZ BON TRAVAIL
N’
GÉNÉRALEMENT
Actual translation
by Google Translate
Hey, I’m no hardcore programmer but I’d like to
get involved in your project and help you out with...
3+
10. ‣ Tests
‣ Translation
‣ Documentation
Hey, I’m no hardcore programmer but I’d like to
get involved in your project and help you out with...
3+
11. ‣ Tests
‣ Translation
‣ Documentation
‣ UI/UX/Graphic design
RULE #1: OF COURSE USER-FRIENDLINESS MATTERS…
RULE #2: ... BUT SO DOES ACCESSIBILITY!
RULE #3: OH COME ON, GLOSSY BUTTONS ARE SO LAST SEASON!
Hey, I’m no hardcore programmer but I’d like to
get involved in your project and help you out with...
3+
Photograph by
M. Guerin
12. ‣ Tests
‣ Translation
‣ Documentation
‣ Graphic/UI/UX design
‣ Ideas & inspiration
Hey, I’m no hardcore programmer but I’d like to
get involved in your project and help you out with...
3+
13. ‣ Tests
‣ Translation
‣ Documentation
‣ Graphic/UI/UX design
‣ Ideas & inspiration
‣ Community efforts
Hey, I’m no hardcore programmer but I’d like to
get involved in your project and help you out with...
3+
14. ‣ Tests
‣ Translation
‣ Documentation
‣ Graphic/UI/UX design
‣ Ideas & inspiration
‣ Community efforts
‣ Fundraising
Hey, I’m no hardcore programmer but I’d like to
get involved in your project and help you out with...
3+
16. ESUP-PORTAIL
THE 5 WS: WHO? WHERE? WHEN? WHAT? WHY?
▸ Community of French Higher Ed institutions (~70 members)
▸ Created in 2002 (restructuring in 2007)
▸ Supported by the French Ministry of Higher Ed and Research
▸ Funding/Promoting collaboration on open source projects
▸ Facilitate learning and campus life for students
▸ Provide useful digital tools for staff and professors
▸ Pool/Share development of digital services
▸ Design, plan and deliver the next generation of portals,
collaborative platforms, mobile services,...
18. ESUP-PORTAIL
WIDE RANGE OF PROJECTS
ENT (uPortal)
Portal of services
I
N
F
O
R
M
A
T
I
O
N
S
Y
S
T
E
M
Collaborative
tools
OAE
Filesender
“Business”
applications
DematEC
PStage, eCandidat...
Agimus-NG
ECM
Nuxeo
Digital Desktop
Zimbra, Sogo, Horde, ...
Bedework, UniTime
E-Learning
plateforms
Moodle, Sakai
Pod
19. ESUP-PORTAIL
ORGANIZATION & GOVERNANCE
STRATEGIC BOARD
TECHNICAL COORDINATION TEAM
WORKING GROUP
MEMBER MEMBER M M …
WG …
10 working groups
| Authentication | Agenda/Mail | Development | ECM |
| Groups | Mobility | OAE | Portal | Statistics | Videos |
10 people
(incl. Executive Director: Alain Mayeur)
from 10 different institutions
13 people
from 10 different institutions
Countless community people
from 70(ish) member institutions
20. ESUP-PORTAIL
ESUP-PORTAIL: THE “SISTER” ORGANIZATION OF APEREO
▸ Memorandum of Understanding (ongoing since Oct. 2012)
▸ Promote Apereo in French-speaking countries
=> Joint conferences (Paris, Montréal), articles,...
▸ Take part in Apereo’s strategic decisions
=> Board of Directors, incubation process,...
▸ Contribute actively to Apereo projects...
=> source code (fixes/improvements), i18n work,...
▸ ... especially to OAE
=> Financial contribution, French translation,...
22. ▸ Well, everyone!
▸ Numbers don’t lie
▸ They are worth a thousand words...
▸ They can help us make (better) decisions
AGIMUS-NG
STATISTICS? WHO CARES ABOUT STATISTICS?!
23. ▸ Study case: “James, the guy next door”
AGIMUS-NG
STATISTICS? WHO CARES ABOUT STATISTICS?!
Weight(kg)
50
60
70
80
90
100
110
JUL14
AUG14
SEP14
OCT14
NOV14
DEC14
JAN15
FEB15
MAR15
APR15
MAY15
JUN15
JUL15
AUG15
SEP15
OCT15
NOV15
DEC15
JAN16
FEB16
MAR16
APR16
MAY16
Started living
on his own
Got a
girlfriend
Started diet + working
out at the gym
Broke up with
said girlfriend
Vacation time!
Back to gym 3 times
a week + running
Work overload
= no spare time
24. ▸ Study case: “James, the guy next door”
AGIMUS-NG
STATISTICS? WHO CARES ABOUT STATISTICS?!
Weight(kg)
50
60
70
80
90
100
110
JUL14
AUG14
SEP14
OCT14
NOV14
DEC14
JAN15
FEB15
MAR15
APR15
MAY15
JUN15
JUL15
AUG15
SEP15
OCT15
NOV15
DEC15
JAN16
FEB16
MAR16
APR16
MAY16
Started living
on his own
Got a
girlfriend
Started diet + working
out at the gym
Broke up with
said girlfriend
Vacation time!
Back to gym 3 times
a week + running
Work overload
= no spare time
- ADVICE TO JAMES -
YOU’RE ON LEAVE, SO WHAT?
STOP BEING LAZY... GO HIT THE GYM!
25. ▸ Study case: “Kim Kardashian West”
AGIMUS-NG
STATISTICS? WHO CARES ABOUT STATISTICS?!
12.01.201214.11.201408.28.201511.13.201502.24.201603.07.2016
0K 52K 104K 156K 208K 260K
RT
Likes
2012.12.01 |
We can all make a difference today, help educate people & together
strive for an AIDS free generation http://bit.ly/U8hAes #WorldAIDSDay
690 236
2014.11.14 |
1st hot chocolate! #AuntiesSpoilingHer
14K 40K
2015.08.28 |
I miss short hair
4.9K 27K
Most trending hashtag
at the time: #PrayForParis
2015.11.13 |
WEAR ALL WHITE http://bit.ly/1QmobUZ
1.9K 7.6K
2016.02.24 |
Thank you @MichelleObama and #OpeneBooks for giving
children access to books they need to learn and dream!
810 3.9K 2016.03.07 |
When you’re like I have nothing to wear LOL
(Almost)
Nude
pic
133.7K 252K
26. ▸ Study case: “Kim Kardashian West”
AGIMUS-NG
STATISTICS? WHO CARES ABOUT STATISTICS?!
12.01.201214.11.201408.28.201511.13.201502.24.201603.07.2016
0K 52K 104K 156K 208K 260K
RT
Likes
2012.12.01 |
We can all make a difference today, help educate people & together
strive for an AIDS free generation http://bit.ly/U8hAes #WorldAIDSDay
690 236
2014.11.14 |
1st hot chocolate! #AuntiesSpoilingHer
14K 40K
2015.08.28 |
I miss short hair
4.9K 27K
Most trending hashtag
at the time: #PrayForParis
2015.11.13 |
WEAR ALL WHITE http://bit.ly/1QmobUZ
1.9K 7.6K
2016.02.24 |
Thank you @MichelleObama and #OpeneBooks for giving
children access to books they need to learn and dream!
810 3.9K 2016.03.07 |
When you’re like I have nothing to wear LOL
(Almost)
Nude
pic
133.7K 252K
- ADVICE TO KIM -
IF YOU WANT TO FEEL THE LOVE FROM YOUR FANS,
STICK TO WHAT REALLY MATTERS:
FASHION, HAIRCUT,... AND SUN TANS!
AND DON’T FORGET TO ADD PICTURES/SELFIES !!*
* Additional recommandation: The less clothes, the better!
28. ▸ Study case: “Apple Inc.”
AGIMUS-NG
STATISTICS? WHO CARES ABOUT STATISTICS?!
0M
9M
18M
28M
37M
46M
55M
Q4 12 Q1 13 Q2 13 Q3 13 Q4 13 Q1 14 Q2 14 Q3 14 Q4 14 Q1 15 Q2 15 Q3 15 Q4 15 Q1 16 Q2 16
2013.09.20
iPhone 5S/5C
2013.09.20
iPhone 5S/5C
2014.09.19
iPhone 6/6+
2015.09.25
iPhone 6S
- ADVICE TO APPLE FANBOYS -
BE PREPARED: YOUR SHINY IPHONE 6S WILL BE OUTDATED IN 4 MONTHS
(EXPECTED) RELEASE DATE OF YOUR NEXT TOY: SEPTEMBER 2016
- ADVICE TO APPLE EXECUTIVES -
JANUARY ’17 SEEMS LIKE A GOOD TIME TO
BUY A BRAND NEW LAMBORGHINI
OR TAKE SOME TIME OFF*
* Additional recommandation:
Beaches in Panama do not live up to the hype. The ones in Bahamas are amazing though!
30. AGIMUS-NG
PROJECT TIMELINE
AGIMUS-NGAGIMUS (first of its name)
2007 2014 20162010
Development
by a private company
Deployment/Tests
in institutions
Development/Tests/Deployment
by institutions
Project coordinator: Khedidja Dib (MENESR)
Tech. coordinator: Julien Marchal
(Univ. de Lorraine)
31. ▸ Open source is a must
▸ Must be non-intrusive, adaptive and customizable
▸ Usable/Linkable with heterogeneous systems
▸ Anonymous tracking
▸ Centralized data warehouse
AGIMUS-NG
KEY PRINCIPLES
43. AGIMUS-NG
DATE:29/Apr/2016:17:34:31 +0100
IP: 51.255.201.X
URI: /course/view.php?id=4653
REFERER: https://lms.uni-u.edu/my
USER-AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0)…
TRACEME: TRACE-YBu4Jvn-S7WZlWYNplWao
Moodle
1) Extract next useful line (= TRACEMEd line)
44. AGIMUS-NG
2) Get info from USER-AGENT
> os: Mac OS X 10.10
> os_name: Mac OS X
> device: Computer
> browser: Firefox
1) Extract next useful line (= TRACEMEd line)
DATE:29/Apr/2016:17:34:31 +0100
IP: 51.255.201.X
URI: /course/view.php?id=4653
REFERER: https://lms.uni-u.edu/my
USER-AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0)…
TRACEME: TRACE-YBu4Jvn-S7WZlWYNplWao
Moodle
45. AGIMUS-NG
2) Get info from USER-AGENT
3) Determine geolocation from IP
> latitude: 50.69421005249
> longitude: 3.1745600700378
1) Extract next useful line (= TRACEMEd line)
DATE:29/Apr/2016:17:34:31 +0100
IP: 51.255.201.X
URI: /course/view.php?id=4653
REFERER: https://lms.uni-u.edu/my
USER-AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0)…
TRACEME: TRACE-YBu4Jvn-S7WZlWYNplWao
Moodle
46. AGIMUS-NG
1) Extract next useful line (= TRACEMEd line)
2) Get info from USER-AGENT
3) Determine geolocation from IP
4) Convert TRACEME tracker
{
"_type": "trace",
"cookie_id": “TRACE-YBu4Jvn-S7WZlWYNplWao",
"ldap_uid": "jdoe01"
}
TRACE-YBu4Jvn-S7WZlWYNplWao ?
DATE:29/Apr/2016:17:34:31 +0100
IP: 51.255.201.X
URI: /course/view.php?id=4653
REFERER: https://lms.uni-u.edu/my
USER-AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0)…
TRACEME: TRACE-YBu4Jvn-S7WZlWYNplWao
Moodle
47. AGIMUS-NG
1) Extract next useful line (= TRACEMEd line)
2) Get info from USER-AGENT
3) Determine geolocation from IP
4) Convert TRACEME tracker
{
"_type": "trace",
"cookie_id": “TRACE-YBu4Jvn-S7WZlWYNplWao",
"ldap_uid": "jdoe01"
}
jdoe01
DATE:29/Apr/2016:17:34:31 +0100
IP: 51.255.201.X
URI: /course/view.php?id=4653
REFERER: https://lms.uni-u.edu/my
USER-AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0)…
TRACEME: TRACE-YBu4Jvn-S7WZlWYNplWao
Moodle
48. AGIMUS-NG
2) Get info from USER-AGENT
3) Determine geolocation from IP
4) Convert TRACEME tracker
5) Retrieve data about user jdoe01
{
"_type": "ldap",
"uid": [“jdoe01"],
"eduPersonAffiliation": ["student", “member"],
"eduPersonPrimaryAffiliation": ["student"],
"supannAffectation": ["M1 Computer Sciences”],
"customAttribute": ["whateverYouNeedToKnow"]
}
jdoe01 ?
DATE:29/Apr/2016:17:34:31 +0100
IP: 51.255.201.X
URI: /course/view.php?id=4653
REFERER: https://lms.uni-u.edu/my
USER-AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0)…
TRACEME: TRACE-YBu4Jvn-S7WZlWYNplWao
Moodle
1) Extract next useful line (= TRACEMEd line)
49. AGIMUS-NG
2) Get info from USER-AGENT
3) Determine geolocation from IP
4) Convert TRACEME tracker
5) Retrieve data about user jdoe01
{
"_type": "ldap",
"uid": [“jdoe01"],
"eduPersonAffiliation": ["student", “member"],
"eduPersonPrimaryAffiliation": ["student"],
"supannAffectation": ["M1 Computer Sciences”],
"customAttribute": ["whateverYouNeedToKnow"]
}
"eduPersonAffiliation": ["student", "member"],
"eduPersonPrimaryAffiliation": ["student"],
"supannAffectation": ["M1 Computer Sciences"],
"customAttribute": ["whateverYouNeedToKnow"]
DATE:29/Apr/2016:17:34:31 +0100
IP: 51.255.201.X
URI: /course/view.php?id=4653
REFERER: https://lms.uni-u.edu/my
USER-AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0)…
TRACEME: TRACE-YBu4Jvn-S7WZlWYNplWao
Moodle
1) Extract next useful line (= TRACEMEd line)
50. AGIMUS-NG
2) Get info from USER-AGENT
3) Determine geolocation from IP
4) Convert TRACEME tracker
6) Combine data & anonymize entry
> jdoe => f8ETRJR3trafmLsLYsn69szhK6SG30
5) Retrieve data about user jdoe01
{
"_type": "moodle",
"clientip": "51.255.201.X",
"request": "/course/view.php?id=4653",
"referer": "https://lms.uni-u.edu/my",
"os": "Mac OS X 10.10",
"os_name": "Mac OS X",
"device": "Computer",
"browser": "Firefox",
"geoip": {"location": [3.175, 50.694]},
"uid": "f8ETRJR3trafmLsLYsn69szhK6SG30",
"eduPersonAffiliation": ["student", "member"],
"eduPersonPrimaryAffiliation": ["student"],
"supannAffectation": ["M1 Computer Sciences”],
"customAttribute": ["whateverYouNeedToKnow"]
}
DATE:29/Apr/2016:17:34:31 +0100
IP: 51.255.201.X
URI: /course/view.php?id=4653
REFERER: https://lms.uni-u.edu/my
USER-AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0)…
TRACEME: TRACE-YBu4Jvn-S7WZlWYNplWao
Moodle
1) Extract next useful line (= TRACEMEd line)
53. ▸ Production ready: already deployed in several institutions
▸ Technical documentation available
▸ Examples of Logstash “templates” are provided
▸ CAS, Shibboleth, Moodle, uPortal, ldap,...
▸ Several examples of Kibana dashboards/charts available
▸ Data visualization for CAS, uPortal, ldap, Moodle,...
AGIMUS-NG
CURRENT PROJECT STATUS
https://github.com/EsupPortail/agimus-ng
54. ▸ University of Lorraine: about 60k users (57k students)
▸ Agimus-NG deployed since Dec. 2014:
▸ 3 VMs (4 vCPU / 16Go RAM each)
▸ Disk space used : 250Go
AGIMUS-NG
AGIMUS-NG IN PRACTICE
Owncloud
52M
CAS
65M
Moodle
97M
Others
9M
Mailing service
98M
uPortal
325M
650 Millions of entries
(“enriched” lines from logfiles)
=
55. AGIMUS-NG
PRODUCED STATISTICS (EXAMPLES)
Time period Nb of courses Nb of uniq. users Nb of connections
Most commonly-used modules Distribution of courses by collegium
▸ Dashboard from Moodle data (1/2)
56. ▸ Dashboard from Moodle data (1/2)
AGIMUS-NG
PRODUCED STATISTICS (EXAMPLES)
Consultation of courses through time by collegium
Distribution of users by network Number of visits through time
57. ▸ Dashboard from CAS data (1/2)
AGIMUS-NG
PRODUCED STATISTICS (EXAMPLES)
Distribution of users by browser
Most commonly-used services by user profile (top 10)
Distribution of users by network
58. ▸ Dashboard from CAS data (2/2)
AGIMUS-NG
PRODUCED STATISTICS (EXAMPLES)
Evolution of services access through time by profileDistribution of users by profile
59. ▸ Carry out evolutionary & corrective maintenance
▸ Check performances in the long run => aggregation?
▸ Provide new templates to ingest other logfiles
▸ Pydio, OAE, Sakai, Nuxeo, Pod, etc.
▸ Organize workshops for the community members
▸ Create demo VM
▸ Add user management to grant/limit access to metrics/graphs/dashboards
▸ ...
AGIMUS-NG
NEXT STEP(S)
60. ▸ Different goals
▸ Anonymous vs user-centered monitoring
▸ Reporting metrics only vs Predictive algorithms
AGIMUS-NG
AGIMUS-NG VS LEARNING ANALYTICS
62. OAE IN FRANCE
KEY DATES
▸ Feb. 2012: Beginning of the Nakamura translation
▸ June 2012: Creation of the ESUP-OAE WG
63. OAE IN FRANCE
KEY DATES
▸ Feb. 2012: Beginning of the Nakamura translation
▸ June 2012: Creation of the ESUP-OAE WG
▸ Objectives:
✦ Maintain the French version
✦ Share feedbacks with other partners (conference, mailing list,…)
✦ Define a strategy for implementing OAE in France, considering
institutions’ needs and requirements
✦ Develop widgets
64. OAE IN FRANCE
KEY DATES
▸ Feb. 2012: Beginning of the Nakamura translation
▸ June 2012: Creation of the ESUP-OAE WG
▸ April 2014 : Launch of the pilot phase
65. OAE ADOPTION IS GROWING
INSTITUTIONS ARE DEFINITELY INTERESTED!
List of Tenants
University of Lorraine
University of Valenciennes
University of La Rochelle
Jean Monnet University (St-Etienne)
University of Littoral
University of Franche-Comté
University of Maine
University of Lille 3
Esup-Portail
GIPRecia
INSA-Lyon
Promising Project
University of Burgundy
University of Rennes1
Netocentre
66. OAE ADOPTION IS GROWING
USERS (ALL TENANTS)
Apr 14
June 14
Aug 4
Oct 14
Dec 14
Feb 15
Apr 15
Jun 15
Aug 15
Oct 15
Dec 15
Feb 16
Apr 16
0 1 000 2 000 3 000 4 000 5 000 6 000
127
1056
1713
3257
4372
5529
548
67. OAE ADOPTION IS GROWING
GROUPS (ALL TENANTS)
Sept 14
Nov 14
Jan 15
Mar 15
May 15
July 15
Sept 15
Nov 15
Jan 16
Mar 16
0 260 520 780 1040 1300
159
359
601
800
966
1106
1219
490
69. OAE IN FRANCE
VARIOUS USE CASES
▸ National working groups
▸ Regional collaboration
▸ Institutional working groups
▸ Specific strategic groups/projects
=> Multi-service cards
=> COMUE WG
=> IT governance
=> Sorbonne Universités
70. OAE IN FRANCE
VARIOUS USE CASES... ALSO IN EDUCATIONAL COLLABORATION
▸ Collaboration for collective projects
▸ Working groups for tutored/educational projects
▸ Sharing of course notes, presentations,…
71. OAE IN FRANCE
OVERALL FEEDBACK
SIMPLE PRODUCTIVE
EFFICIENT USER-FRIENDLY
INTUITIVE COMPREHENSIVE
83. OAE: DEVELOPMENT
WHAT’S NEXT?
▸ Time to invest in back-end tools to
▸ merge accounts
▸ create groups using CSV import
▸ remove accounts with automatic tasks