After one year and three months of waiting, here is (at last) the new version of Movim. Before going into details, here are some reminders about the project.
The architecture of Movim is unique in its own style. It's an XMPP client that's able to manage many simultaneous sessions, but also a web application that's deployable on a server and can be used in browsers and on mobiles.
Although it's defined as a social network, it may be better to see it as a new tool that mixes the social and Instant Message functionalities of XMPP, and is fully compliant with XMPP messaging standards.
In fact, Movim isn't a network itself (unlike Facebook, Diaspora, WhatsApp). One of the project's goal is to show that it's perfectly possible to use a standard and unique protocol (which create a communication network by itself) and allow the users and administrators to have the choice of the tools (clients and servers) to interact with it.
Even if the version number isn't a major one, version 0.9 of the project is a real step forward in the architecture; the interface, and the features. The core of the project is now mature and from now on, will allow contributors to build and complete the missing features.
A new visual identitiy
This new version allowed us to totally rethink the User Interface of the project. The new UI is now strongly inspired by the Google Material Design graphical codes. We have worked on three main topics for this new release : simplicity, integration and lightness.
This is a challenge we gave ourselves: how shall we integrate all these functionalities in a nice and unified interface, which scales to all screens sizes?
First, we chose to use a three columns layout on (almost) all the pages of the project. We then based our approach on Material Design which orders information in the smartest way possible, while guaranteeing rapid access to functionalities. There's still a lot of possible improvements, but we're pretty satisfied with the result.
The app is now divided in four pages :
- News, which groups all publications made on feeds you subscribed to, or contacts you have in your list. Tabs allow to easily filter these publications. It is also on this page, that you can publish a message to your feed; edit it; delete it, and comment on other messages
- Contacts, where you will find your contacts list, invite new ones, and explore profiles
- Groups, which allows you to subscribe, create and publish public feeds with all the users who have an XMPP account
- Chat, where you can chat privately with contacts, or in chat-rooms
A little daemon driving the machine
Another major change in this version, is how data is processed in Movim. Older versions used BOSH and parallelized requests sent to the XMPP server. Version 0.9 comes with a daemon which directly connects to an XMPP server using a standard XMPP socket (with a TLS encryption layer). We don't need BOSH anymore!
This daemon has a particular architecture, such that each user session is in an independent subprocess to avoid crashing the whole platform (in case a single session meets some difficulties or error).
Related to this, the project's internal XML parser has been rewritten and now works in feed mode (tags are parsed when they come into the socket, avoiding having to wait the entire block reception before parsing it). This little change allowed to strongly enhance performance. Logging in to an account which has 400 contacts takes only a few seconds (approaching performance of native clients such as Pidgin or Gajim).
The only drawback brought by this architecture is the particularly high memory consumption of the daemon (between 10 and 30 MB per user). A large amount of work has been done to fix memory leaks, and lower and stabilize memory consumption. This could rise to several hundreds of MB during development phases! A substantial amount of work will be done in the coming versions in order to minimize even more of this footprint (the goal of less than 10 MB per session has been set). So far, the first tests done with PHP7 are very encouraging.
Full of features!
Beyond these two big steps forward it is a set of new features that have been integrated into the project. Let's review the most important ones.
New publishing interface
The posting of articles has been completely reworked and incorporates several new features. The ability to upload an image or file attachment via the XEP-0363: HTTP File Upload; Automatic "cards" if you share a link (like this article for example), and adding tags to your post for easy searching.
Now, you can also edit the articles you published.
On the server side, Movim now generates a feed based on your posts, that conforms to the Atom standard.
Your blog on Movim
All the articles you publish can be made public and available outside Movim with a single click! Movim creates a public Atom feed which can be shared with anyone. It contains all of the public articles published on your profile or in Groups
In the settings, you can provide an additional CSS stylesheet to customize the display of your blog (as in this blog). An Atom feed is also created for those who want to add your feed to their news aggregator. Check out the feed of the Official Movim group.
The writing of articles uses the Markdown format, which makes it possible to use advanced layouts and to include links and images.
New contact list
The contact list has been rewritten and now runs on Angular (thank you to Christine Ho for this great work!). Be aware that slowdowns may be experienced by users who possess a rather large contact list (In the hundreds range). Improving this specific performance issue, will be addressed in future releases.
New chat interface
Chats now have a dedicated page, and lots of small features were added. For example, we added support for Emoji; the first basic implementation of XEP-0313: Message Archive Management which will be improved in future releases, and the ability to send attachments directly from the interface (as long as your XMPP server supports it). You can also change the subject of your chat room with just a couple of clicks.
Support for Ad-Hoc Commands
The support of the Ad-Hoc commands (XEP-0050: Ad-Hoc Commands) is specifically for administrators who wish to manipulate their XMPP server directly from within Movim. You can find it in the action tab of the configuration page.
XMPP account management
From the Configuration page, you can now manage your subscriptions to gateways offered by your XMPP server. You can also change your password or permanently delete your account.
Share web pages on Movim
One click is all it takes to share all the pages you want to Movim. A Universal Share button is available on the home page of your favorite Pod once you have logged in. This button takes the form of a bookmarklet that you can slip in your browser. Whenever you want to share a page, just click it and Movim does the rest! All you have to do is make a quick comment; add a title, then publish!
The Administration Panel has also been redesigned and streamlined to make life easier for administrators. The generation of the XML parsing process has also been reviewed, to minimize the possibility of malicious code injection.
Around the project
Movim v0.9 is not just great news about the code and architecture, but is full of small updates!
Landing on mobile and desktop applications for the first time
Movim is available on both Firefox OS and Android! You can download Movim from the Google Play Store; via F-Droid (Android 5.0 minimum), or the Firefox OS Marketplace.
Work is also underway to package the project with Electron and deploy a desktop Movim client. The first packages for Debian and Ubuntu are expected in the coming weeks. If you want to give us a hand and help package Movim for your Operating System, please have a look at the GitHub project.
Thanks to the wonderful work of Src386 a Yunohost package is also available for the project. Thanks for your hard work!
New web site and move to GitHub
Finally, the official website was reworked to better represent the project. Don't hesitate to take a quick look, for a good overview of the current status of the project.
But It's not over…
Here is a little preview of what awaits you in version 0.9 of the Movim project. We don't want to rest on our laurels, and good things are being prepared for future releases.
The version cycle will be considerably reduced. The current version is an exception, due to the fact that the work was particularly difficult. This should explain the long months leading up to its release. The coming versions of the project will be lighter in features and focus on a particular theme.
To give you a little insight into the next version (which will certainly be a 0.9.1), it will focus on the chat part of the project with the integration of lots of small features and improved user experience.
The purpose of Movim is not only to provide a new social media client. The main motivation of the project is to integrate seemlessly into our daily lives. To do this we continually reflect on how best to deal with topics such as User Experience; the integration of Industry Standards (at all levels); respect for personal information, and integration of the platform in the users environment and XMPP network.
The idea behind Movim is choice. Not only letting you choose where you put your information, but also choosing the client (and server) that you use to access it.
We don't want to lock customers into Movim, but to show how the use of a communication standard (even though it has defects that we're trying to fix) is paramount. To access the network behind Movim (XMPP) there's no API but simple libraries already available in all languages.
Thanks to everyone for the growing community support of Movim, and to all the people involved :) To help us with building Movim, you can come and help translate the project; you can submit a bug report on GitHub, or come talk to us. We also accept donations via PayPal or Flattr to help us cover our costs (infrastructure; travel; promotional, etc.), you will find links on the official Movim website.
That’s all folks!
Thanks to Stroggle, Nÿco, Christine Ho, Alex and TheThinker for the French to English translation. Originally published in French on LinuxFr.org.