In September, OpenPaaS team has a lot of fresh news to share with you :) On the menu: progress made within our OpenPaaS modules, OpenPaaS French Kick Off and last but not least 2 very good news: we have welcomed the LinShare team to the OpenPaaS project and we made a migration of all our working tools toward the open source GitLab platform. Let’s go :)
Welcome on board LinShare!
Becoming a solid software OpenPaaS needs to integrate a file-sharing system and at Linagora we do have such an application: LinShare! This mature software shares with OpenPaaS a technological (AngularJS, REST API, …) and functional base (User Interface). Moreover, Linagora wishes to launch soon a SaaS (Software as a Service) offer for OpenPaaS and LinShare. For all these reasons, Linagora decided it was the good time to make these two software work together, to the delight of both parties.
Let’s introduce you to LinShare ;)
Born in 2008, LinShare is an Open Source secure file sharing application developed and distributed by Linagora.
With a strong security constraint this platform allows file-sharing between the employees of a company and also with external correspondents. Since its beginning, many versions of the software have been released. Among them 1.0.0 and 2.0.0 versions.
1.0.0 version released in 2012 showcases the following main features:
- the Shared folders, also known as “threads”, allowing files to be shared mainly among internal team members.
- the File share link which enables users to share files with their external contacts via a download link.
- the File request, also known as “upload request”, enabling LinShare users to invite external contacts to upload files;
2.0.0 released on 9 May 2017 has been entirely revamped: with a brand new responsive design to access files from any device and a user-friendly interface created with the latest technologies.
Additionally, the 2.0.0 version provides the ability to create and manage directories in so called “workgroups” (aka shared folders)!
Today the members of the team are working on the SaaS offer and bug fixes.
LinShare team consists of 6 members - 5 people in France and 1 in Tunisia:
- Frédéric is the LinShare Product Owner and Team Leader. He also dedicates his time to the Java backend.
- Kévin, Ismail and Sarra work on the AngularJS frontend.
- Samia is on the SaaS part, she is currently working on automated and scalable deployment of Linshare product based on new technologies like Kubernetes and Docker.
- Marwan who works on the Outlook LinShare plug-in.
Inbox team is working on deleting definitely all the emails contained in the trash mailbox. Besides, in Inbox module, 2 ergonomics improvements happened:
- Distinction between read and unread emails : normal dark grey has been adopted for header of read emails whereas unread emails stay bold black.
- Area for selecting an email to do different actions on it has been widened on both sides of the avatar.
During the summer James team dedicated time to implement a new data-model schema for its Cassandra storage. In fact, as the team improves the code of James, the team also changes the way we want to store data: data-model has been rethought in order to enhance performance. This change also implied migrating the data we already had in production.
Schema migrations with Cassandra
At Linagora, the OpenPaaS project relies on the Apache JAMES mail server.
Java 8 migration and keywords were two other topics of this summer:
- as Java 6 and Java 7 are not supported anymore by Oracle the team decided it was the good time to move to Java 8 and thus to take advantage of its new features.
- “Keywords”, previously named “flags”, is a JMAP Mail spec notion making it possible to mark emails as “forwarded”, “answered” and simply “read” for instance. As the specification has been updated the team provided then the corresponding implementation. This specification update allows to be more compatible with IMAP specification and to handle more user defined flags.
JAMES is extensible Discover through these 2 articles how we use James to implement advanced mail features!
Extensible James server: Connecting emails with OpenPaaS Calendar
The James project gives us a working mail server to play with, and customizing the behaviour of this server to…
Extensible James server: predictions in your INBOX
In a previous article, I covered how we used the James mail server to decorate emails with events in the OpenPaaS Inbox…
New features in progress
Since its return from vacation the whole team is developing new features such as search in attachments, downloading message as EML, adding more security for attachments and also a web API for creating groups and aliases. October newsletter will allow you to learn more about this ;)
Just before summer holidays, the Calendar module UI aside has become more user-friendly :)
And what’s new since late August?
Calendar team worked hard to ship new features this month: collected contacts, better alarms and better invitations.
First, we implemented a contact collector engine: at the heart of the platform, this new module will be used by others to save contacts in a dedicated address book. The first integration in the platform is to collect attendees in calendar events: if an attendee is not yet registered in any user’s address book, it will be collected and then available in the platform. Next integration will come in the James Mail server component: collect recipient of the emails the user sends.
We reworked the way the module handles alarms (i.e. event reminders) and killed a lot of bugs: attendees are now inheriting from the event organizer alarms by default. We also worked on a more extensible and scalable system: we will soon be able to implement new ways to send alarms because email ones are not enough and can be better integrated in the platform.
When a user creates an event and add attendees, invitations are sent by email. When an attendee accepts or declines the event, emails are also sent back to the organizer. This is still true, but once again, we reworked this part for better integration in the platform.
The summary of a conversation has been implemented. This means that now, from the Chat module, by clicking on the “more options” button and selecting “show information”, a user is displaying a right aside containing the following information about the opened channel:
- Details: topic, purpose, creator, date of creation,
- Members: only the last 25 members who joined the channel,
- Shared files which gather the last exchanged attachments .
Notes: to display all the members and the shared files a “show more…” link is present in the aside.
Since July, Admin team completed various tasks:
- They upgraded insecure Node.js dependencies, the most notable change is Jade to Pug migration to catch up with the latest update from the template engine.
- In Admin Center, the platform admin can modify a domain.
- OpenPaaS provides OAuth workflow allowing external application to connect to OpenPaaS as a 3rd-party application. To do it you need to create an OAuth application from the Application submenu in Control Center and define the access you want to give to this application, thus restricting access to only the necessary OpenPaaS resources.
- The UX of the users list in Admin Center has been improved.
In addition, Admin team just achieved an awesome 9th sprint:
- Keyboard shortcuts in OpenPaaS has been developed: first, hotkeys will be hard coded and thereafter the team will make it configurable so admins and users could change them.
- Features flipping page which is a features page to allow flipping some features in OpenPaaS, i.e. flipping the Invitation, Password pages in Control Center.
- Ability to maintain Elasticsearch index via Admin Center: sometimes, we have problem with the search feature due to the incorrection of index configuration or missing of index data after a downtime duration. Right now, we support reconfiguring user index and reindexing user data. It is the latest feature added by Admin team in their last sprint.
A very active Vietnamese Team
In our July newsletter we introduced you our awesome Vietnamese team working on Admin module, James and System Admin. Apart from their daily contributions to the OpenPaaS project, the Vietnamese team has just launched the animation of events showcasing Open Source technologies events we daily use.
- Event#1 - Handling data at scale with Cassandra and ElasticSearch In this first session held in July, Quynh and Benoit exposed Cassandra and ElasticSearch as 2 technologies meeting the data at scale requirements: low latencies, terabytes of data to store and to query… Learn more on Linagora Vietnam website, on Benoit’s article and watch our video:
- Event#2 - End-to-end testing using Docker For this second event which took place in August, Sang explained that End-to-end testing is not a new concept but it is not adopted much due to implementation difficulties. Recently, the many tools that have emerged help us to adopt it more easily. In his talk, Sang shared the E2E testing infrastructure we built at Linagora in order to test Angular based application with the help of Docker, Protractor and Cucumber. Retrieve online the slides of this presentation.
- Upcoming Event#3 - Discover a modular email server: James 3.0! On 21 September 2017 Quynh and Benoit will promote the 3.0 James release. They will present how James can change the way you think about email and unlock some powerful features.
- Team went to Software Freedom Day 2017 in Hanoi, where Sang presented a talk about Extensible Node.js application in front of 300 people.
Every year we organize a French Kick Off, which is a French team building meeting of 2 days in Paris to share our ideas and vision for our OpenPaaS project and to define the target we want to reach for the future.
This year we focused our discussions on: the incoming release of the first version of OpenPaas, the type of delivery we’ll provide as well as the setting up of a knowledge and skills sharing organization within our teams.
Today we are pleased because we made a significant change in our choice of collaborative tools for our projects management: we migrated all our working tools in the open-source platform GitLab in order to match our open source philosophy.
First, among the different tools we were using there is the Atlassian development tools. We decided to switch to GitLab and it started making all the difference. Just like Atlassian, GitLab includes Git repository management, issue tracking, code review, an Integrated Development Environment (IDE), activity streams, wikis, and more.
Secondly, we migrated our built-in Continuous Integration (CI) and Continuous Deployment (CD) from Jenkins to GitLab. GitLab has a built-in CI and CD to test, build, and deploy our code. We can easily monitor the progress of our tests and build pipelines. What we love about the CI provided by GitLab is the fact that it supports Docker. Indeed, GitLab allows us to use custom Docker images, spin up services as part of testing, build new Docker images and even run on Kubernetes.
The technical aspects of these two migrations are discussed in Kader’s articles published on GitLab’s blog!
Continuous Integration: From Jenkins to GitLab Using Docker
Here at Linagora, we are migrating all our working tools to open-source ones. Yes, we are an open-source company with…
As a Conclusion
For our awesome OpenPaaS, these last weeks have been very rich: LinShare team integration, migration of our working tools on the open source GitLab platform, implementions of new features in our modules, dynamic Vietnamese team showcases open source technologies events and last but not least a great French Kick Off from which we have withdrawn a lot of new prospects.