On the 25–26 October 2019, we planned to have some good time in La Vie Vu Linh Eco-Lodge, but things turned out in an unexpected way!

Nico Soft yelling his instructions for Linagora kidnapped crew…

A bloody pirate, obnubilated with treasures, loot and money, succeeded to enter our bus, kidnapped Benoit (he was jet-lagged anyway) and forced us to join his crew. Crew members shall be vicious, hide information, and should be selfish!

Nico Soft found a way to be making money quickly: he ransoms his victims with proprietary license, thus earning comfortable income while doing nothing… But he needs a crew and a fleet in case license enforcement…

I started contributed to Apache JAMES as a shy guy proposing patches attached to emails to the James mailing list. Since 2015, I kept devoting my time and energy to this beautiful project, eventually becoming part of the Project Member Committee.

Along that road, full of community interactions and contributions, I never had the chance to meet other Apache folks. Thus, when a talk “Gaining control over your emails with Apache James” was accepted at the ApacheCon Europe 2019, I was really excited!

Here we go!

Apache James ships many extensions. Some of them allows full customization of the mail processing, some other…

OpenPaaS does rely on the JMAP protocol, an IETF draft for doing email over HTTP efficiently, to communicate with the Apache James mail server.

However, the JMAP specification draft had significantly been changing over the last few years. Hopefully a barcamp was held in Hanoi to bridge the gap.

At the heart of JMAP specification lies efficiency. An easy way to achieve this is to reduce the number of requests being exchanged. Think: phone battery lifetime and crappy networks might get involved. We need a mechanism to make loading email account within a single request possible. …

I first joined Linagora because I was eager to be involved into Free Software development — and had never had.

Free Software development can simply be defined as a software that we are free to:

— Read its source code
— Modify its source code
— Use and execute the source code or its modified version
— Share it or its modifications

Basically these rights are enforced through the use of Free Licenses like the GPL one.

However, the “legal aspect” of Free Software was clearly not what motivated me the most. I could write, alone, my own project, and…

Java is convenient, everyone knows it, but for some tasks, Java is really annoying. Serializing stuff in JSON is one of them. Especially if you do not want to pollute your APIs with some JSON related annotations.

We are currently working in the Apache James email server on implementing a distributed event system, so serializing events is our burning topic! For the sake of this article, let’s serialize the following events…

Our common solution, until today, was to introduce a Data Transfer Objects:

Now that we have these DTOs, we can serialize them with Jackson.

Verbose, right…

Staged builders is a valuable tool to enhance and spice your builders.

It enables to force the caller to call all the stages to finally get to the build methods and ensures no compulsory stage is forgotten.

The classical pattern we do use in Apache James looks like this:

However, following this pattern it is hard to:

  • Reuse the stages (functional interfaces) defined above
  • Propose alternative choices in the stages.
  • Another limitation is that you need to have the following n+1 stage when defining the n step, which I find tricky to write. …

After the last year success, Apache JAMES team @ Linagora decided to join the 2018 HacktoberFest again.

This year, we recycled some of last year issues, we added a few new ones, and we invited contributors to work on an awesome feature: health checks.

We had a simple HealthCheck endpoint but we needed health checks for each of our components, and improve the corresponding REST endpoints. That is a first time a feature is handled by contributors, in a that short amount of time. I am sure the admins around are going to love it!

So far, we received 13…

This year, some employees of Linagora will propose ideas of Google Summer of Code projects for students, as part of their work on the Apache James project.

Google Summer of Code is a global program focused on bringing more student developers into open source software development.
Students work with an open source organization on a 3 month programming project during their break from school.

We consider it is a dreamed occasion to discover the Apache James project, and get on board in this amazing project!

Linagora is willing to offer high quality mentoring on high added value, useful tasks. …

Je vis à Hanoï depuis presque deux ans, et peut donc divulguer bon plans et visites intéressantes. Ce petit guide présentera la ville et sa découverte initiale puis vous emmenera découvrir ses alentours.

Voici un autre article présentant mes conseils quant à la visite du nord du Vietnam. Je présenterai le centre et le sud du Vietnam dans des articles séparés.

Visiter Hanoï

Les portes du temple de la littérature.

Plus que des endroits à visiter, Hanoï est une succession d’ambiances bouillonnantes, de la circulation, à l’atmosphère festive de Ta Hiên en week-end, en passant par les très vivants magasins de street food. Hanoï est une ville remplie de…

Labour au buffle dans le parc naturel de Pu Luong.

Ce post de blog présente mon ressenti sur le nord du Vietnam. Il présentera les différents lieux d’intérêt, où dormir, que voir, etc… Vous y verrez par ailleurs des photos que j’ai pû prendre. Les lieux que je présente sont ordonnés par l’importance que je leur porte. Des cartes vous permettront de visualiser les différents lieux, et des conseils pratiques viendront agrémenter le tout. Je présenterai les environs d’Hanoi, le centre et le sud du Vietnam dans des articles séparés.

Mention spéciale pour le circuit touristique “ouest d’Hanoï” (Pu Luong, Mai Chau, Moc Chau) ainsi que “Ha Giang” qui reçoivent…

Benoit Tellier

Software back-end engineer @linagora, Apache James PMC

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store