Intros, a Nextcloud app to help you get to grips with Framaspace

The Framaspace project currently hosts a cloud environment (files, calendars, contacts, wiki, kanban, etc.) for more than 1,200 associations and groups. That’s as many instances of the Nextcloud free software. Unfortunately, it’s not always easy to get to grips with Nextcloud, despite the documentation, forums and so on. So Framasoft decided to get an intern, Val, to work on the subject of supporting people using Nextcloud for the first time. Here’s his story.


Une version française de cette interview est disponible à l’adresse suivante : https://framablog.org/2024/07/31/intros-une-app-nextcloud-pour-faciliter-la-prise-en-main-de-framaspace

Hi Val, can you introduce yourself?

Hi! I’m Val, and I’m 22. I was raised in Paris’ suburbs, and I have been studying at INSA Lyon, an engineering school in Villeurbanne for 4 years now. I am parisian, lyonnais, suburbanite, or even Swedish, depending on the mood.
If everything goes as expected, I’ll graduate next year as an Telecommunication Engineer.

I like singing and playing music, climbing plastic walls, solving Rubik’s cubes and playing video games, when I’m not busy tweaking some lines of code. Over the last few years, I have also been active in multiple associations, including some at INSA or the Red Cross.

Photo de Val, stagiaire Framasoft entre mai et août 2024
Photo of Val, Framasoft intern between May and August 2024

You chose Framasoft for your internship. Why?

I had to search for an internship while being in Sweden, and it wasn’t really easy. Searching from another country didn’t help of course, and I also wanted an internship matching my personal values. Basically, being cheap labour to help big business get richer isn’t really my thing.

The year before, I participated in organising an event with the Exit Lyon association, at which a Framasoft employee gave a conference on queer emancipation through digital technology. Being engaged in associations, I already knew Framasoft from their web services, as many do. I still had her email, so I sent an application, and there I am!

It was kind of an ideal case: an internship in a non-profit, breaking with capitalism, and contributing to build more social justice in our society.

Mème Val
Val choosing his internship at Framasoft — Allegory

 

Let’s talk about your internship. What was the general objective?

Framasoft’s collaborative cloud platform for associations and activist groups, Framaspace, has been active for 2 years now, and is based on Nextcloud. Even though it is a good solution, this open source software is far from perfect, and in particular is more difficult to use than other existing solutions (closed-source and maintained by GAFAMs, such as Google Drive or Microsoft 365).

Please note that Framaspace is a service reserved for French-speaking audiences. The Framasoft association, which provides this product free of charge only to associations and militant collectives, relies solely on donations. Consequently, it is our association that bears the technical support and financial costs of hosting and we cannot afford to host a worldwide audience.

 

My internship tries to solve part of this problem: how to make sure that first time someone logs into Nextcloud they don’t run away. My aim is to make the first use of Nextcloud easier, by supporting users and helping them using the software. It would encourage people to stay on a free solution that respects their privacy, and not run towards GAFAM solutions, considered easier to use.

Luckily, Nextcloud allows the community to create apps that integrate with the software to enhance it. Hence my first contribution to this mission is a Nextcloud app, « Intros ».

OK, so let’s talk about the Intros App. What’s it for? Who is the target audience?

Intros answers an user’s most simple question when meeting Nextcloud: « Where is the button to [insert a random action]? ».

To answer it, Intros highlight elements, buttons or even parts of Nextcloud’s interface to explain what they do. For example, the app will highlight the small sharing icon and display a text explaining how to share a file to someone else. This applies to several Nextcloud apps, including files, contacts or calendar.

Video demonstration of how the ‘Intros’ app works

Technically, how does it work?

The app uses the intro.js library, which helps creating step-by-step tutorials that highlight a web page’s elements. The library simply integrates to Nextcloud as any other javascript library would, and we can customise tutorials for the users.

That’s it? No! The library handles most of the visual aspects for us, but it had to be adapted to integrate to Nextcloud properly. For example, remembering when a tutorial has already been seen to not display it again, and making a menu to re-enable it if needed. Or even handling multiple languages, displaying buttons in Nextcloud’s style, highlighting elements nested in menus… Lots of small enhancements that allow a smooth integration of the library to Nextcloud.

Have you encountered any technical or organisational problems?

Of course, otherwise where would the fun be? As always when I’m coding something, sometimes it works and I think, « wow, I’m a genius », and sometimes (often) it doesn’t work and I think, « wow, I’m an intern ».

For example, during development I realised that the application sometimes had trouble finding some elements on the page. One of the problems with intro.js is that the library is designed to be deployed on a site that has been designed by the person who writes the tutorials. This person would have a good knowledge of the site’s structure, and would know which elements need to be selected for it to work every time… Except this person isn’t me. I’m integrating it into Nextcloud, which I obviously didn’t design, so I have to adapt to the structure of the existing pages. As if that wasn’t simple enough, the way the pages are built changes depending on the application (Files, Calendar, Contacts…) or even the version of Nextcloud. So I had to reverse-engineer the HTML DOM on a case-by-case basis, to find out which elements it was possible to select and avoid selecting elements that could change name, class or even completely disappear.

But even being careful, it sometimes didn’t work. The application couldn’t find certain elements, and displayed an explanation over empty space. Not ideal. In intro.js, by default, you give a list of elements to highlight and the explanations that go with them, and the library takes care of detecting them in the DOM when the page loads. This was the critical point in this case: when the page loads. The elements are all loaded at once, so they can’t change along the way. I had problems with this specifically in two cases:

  • first, elements nested in menus. We sometimes want to highlight an element that isn’t visible on page load, and would be after a user click
  • then, elements that aren’t loaded immediately on page load. Some Nextcloud apps take a bit more time to load their elements, so the library can’t detect them on load.

So what? Well, press the keys on the keyboard, in the right order if possible, and after a while it makes code that solves the problem. Here, instead of detecting all the elements at once, I’ve made sure to detect them just before they’re needed. Each time the user presses ‘next’, the application detects the next element to be highlighted and replaces the default element with this element before launching the next step. This way, we don’t have to worry about page load times or the fact that the button is in a menu. All that’s left to do is simulate a user click with javascript for buttons in menus and tada! It works.

Val "This is fine" Mème in English
Val « This is fine » Mème

Now that the app has been published, what’s next?

What’s next? It’s not really about me anymore! I hope the app will be used by Nextcloud’s users, and it’s already in use in Framaspace.

We have also discussed with Nextcloud for a possible integration of the app to the software core (and not as a third-party app). That would make it easier to add new tutorial to the apps for developers, but Nextcloud had some remarks regarding this. One of them was that the app explains the interface, while they could simply improve it so it wouldn’t need an explanation.

Capture écran de Intros dans le magasin d'application Nextcloud
Screenshot of Intros in the Nextcloud application store

 

And of course, the app can still be perfected (I’m only a humble intern, after all) to make it more efficient, easier to maintain,… It’s also very important since we want it to be maintained over the (frequent!) Nextcloud updates.

A little birdie tells me that you’re working on another Nextcloud application, can you tell us more about that?

A new app is indeed on the road (#WIP). The OwnershipTransfer app will allow admins to transfer the ownership of files (or even other types of data?) from one user to another. This would be especially useful for when someone is leaving an association that uses Nextcloud, and forgot to transfer their important files to someone else! It will prevent them from losing a very important budget file, forever. However, it still doesn’t make coffee… sorry.

We’ve come to the end of this interview. Would you like to share a feeling about the work you’ve done during this internship?

#gallery-1 { margin: auto; } #gallery-1 .gallery-item { float: left; margin-top: 10px; text-align: center; width: 50%; } #gallery-1 img { border: 2px solid #cfcfcf; } #gallery-1 .gallery-caption { margin-left: 0; } /* see gallery_shortcode() in wp-includes/media.php */

I’m really satisfied with what I accomplished. Over and above the fact that I designed and developed a Nextcloud application for the first time from A to Z, I’ve learnt a lot of new skills. Whether it’s PHP, a language I’d only just got to grips with before my internship, or software development in general, managing releases, issues and merge requests, and so on. I’m very happy to be able to have learnt a lot during this internship.

By the way, huge thanks to Framasoft’s employee team who’s always been eager to help me and answer my questions when needed!

Last question, a recurring one in our interviews: what question would you like to have been asked, and what would your answer be?

« Tell me, what do you think of Nextcloud’s documentation? »

It’s time to rant (after all, I’m French!). It’s… lightweight, to say the least. But you can see it from a good perspective: I guess browsing the source code to understand how the APIs work is a great learning experience!

Thanks Val!

 




Nextcloud Sorts : un prototype d’application Nextcloud pour naviguer plus facilement dans vos fichiers

Et si Framasoft se penchait un peu sur la solution collaborative libre Nextcloud ?

NB : cet article existe aussi en version anglaise (traduction automatique)

 

Dans notre Lettre d’informations #28 (Automne 2021), nous vous parlions de Romain, stagiaire à Framasoft, dont nous savions que le sujet de stage allait tourner autour du logiciel libre Nextcloud.

Quelques semaines plus tard, nous invitions les structures « engagées » et utilisatrices de Nextcloud à répondre à un questionnaire (aujourd’hui fermé), conçu avec la designer Marie-Cécile Godwin, et La Fabrique à Liens.

Puis, une fois les résultats analysés (nous vous en proposons une version brute anonymisée et une analyse synthétique en fin d’article), nous avons pu identifier un besoin utilisateur non satisfait, sur lequel pourrait travailler Romain.

En effet, Nextcloud comporte de (très) nombreuses fonctionnalités, mais celle qui demeure centrale est probablement le stockage et partage de fichiers. Or, la navigation parmi les fichiers dans l’interface web est assez fastidieuse : un clic à chaque fois que l’on change de dossier, et donc un rechargement plus ou moins rapide de la page et de l’arborescence des dossiers et fichiers. Et parfois de nombreux clics pour passer d’un rameau de l’arborescence à l’autre.

Il y avait sans doute moyen de faire plus accessible et plus naturel.

Romain, qui ne connaissait ni le langage informatique PHP ni la solution Nextcloud au début de son stage, s’est donc lancé dans le développement d’un prototype d’application tierce, qui permettrait non seulement de pouvoir « développer l’arborescence de fichiers » au sein d’une même interface, mais aussi de pouvoir faire des recherches avancées.

Deux mois plus tard naissait le plugin « Sorts », dont nous vous racontons l’histoire ci-dessous.


Bonjour Romain, peux-tu te présenter ?

Je m’appelle Romain et j’ai 24 ans. J’ai grandi en Guadeloupe avant de venir étudier à Villeurbanne, à l’Institut National des Sciences Appliquées de Lyon, dont je serai diplômé en 2022 en tant qu’Ingénieur Télécom.

Quand je ne suis pas occupé par mes études, je passe pas mal de temps à bricoler et réparer des vieilles machines, et à m’investir dans des projets collectifs ! Je suis notamment très engagé au Karnaval Humanitaire, une asso étudiante qui organise un festival de musique dont j’ai été le régisseur site en 2021 et 2022.

Photographie de Romain, stagiaire INSA Lyon à Framasoft de Septembre 2021 à Février 2022

Concernant ton stage, tu as choisi Framasoft. Pourquoi ?

Je voulais un stage en accord avec mes valeurs de libre partage des connaissances, et en rupture avec le capital et les grandes entreprises !

Je connaissais déjà un peu les actions de Framasoft et notamment les services en ligne et le développement logiciel, et je savais que j’y trouverais des projets intéressants dans un cadre super… et je n’ai pas été déçu !

Venons-en au sujet de ton stage. Quel était l’objectif général ?

Mon stage s’est déroulé au début d’un projet plus large, dont le nom de code est « Framacloud » [Note de Framasoft : on vous reparlera de ce projet ambitieux à la rentrée], dont l’objectif est de permettre aux structures luttant pour le progrès social et la justice sociale de s’approprier, maîtriser et contrôler les processus de collaboration numérique.

Ce projet de Framasoft est centré sur un logiciel de collaboration en ligne et de partage de fichiers : Nextcloud.

Cependant, bien que ce soit une des solutions libres les plus abouties et complètes dans ce domaine, il est avant tout conçu pour répondre aux besoins des clients de « Nextcloud GmbH« , la société allemande éditrice du logiciel. Ces clients, ce sont de grosses structures, publiques, universitaires ou privées. Du coup, il y a un risque de différences entre les attentes des petites structures associatives et les priorités de développement de Nextcloud GmbH.

Le but de mon stage était donc de trouver comment améliorer ce logiciel afin de le rendre plus utile et plus accessible pour les structures alternatives.

OK, c’est un vaste sujet ! Comment t’y es-tu pris ?

Eh bien d’abord, il fallait à la fois que je me forme sur le développement de Nextcloud, et qu’on en apprenne davantage sur ce logiciel : son fonctionnement, ses défauts et surtout ce qui manquait aux utilisateurs qu’on visait.

Après plusieurs tests du logiciel et plusieurs hypothèses sur comment l’améliorer, on a décidé de se rapprocher de nos utilisateurs cibles. On a donc mis en place une enquête visant des personnes faisant parties de structures engagées pour le progrès social et la justice sociale qui utilisaient déjà Nextcloud. Cette enquête questionnait leurs usages de l’informatique collaborative au sein du collectif, leurs usages de Nextcloud, leurs frustrations et leurs attentes.

C’est grâce aux presque 200 réponses de cette enquête qu’on a décidé des développements logiciels que j’ai réalisés au cours de ce stage et qui ont abouti à la création d’un plugin Nextcloud appelé « Sorts » !

#gallery-2 { margin: auto; } #gallery-2 .gallery-item { float: left; margin-top: 10px; text-align: center; width: 33%; } #gallery-2 img { border: 2px solid #cfcfcf; } #gallery-2 .gallery-caption { margin-left: 0; } /* see gallery_shortcode() in wp-includes/media.php */

 

Arrêtons nous déjà sur ce travail d’enquête. Quels en ont été les résultats ?

Les préoccupations principales qui ressortaient de cette enquête étaient, au final, des préoccupations d’ordre plutôt général sur l’outil Nextcloud. Mais ça nous a permis de voir ce qui est important pour le public qu’on souhaite impacter.

Parmi la vingtaine de sujets que j’ai pu identifier dans les réponses, les deux premiers étaient des sujets sur lesquels on ne pouvait pas faire grand-chose : l’édition collaborative de documents et la « lenteur » générale de l’outil.
Par contre, parmi les sujets qui suivaient on avait plus de perspective pour aider à changer les choses en quelques mois de stage : prise en main et ergonomie du logiciel, problèmes de synchronisation ou encore aide aux utilisateurs pour s’y retrouver parmi les fichiers du collectif.

C’est cette dernière préoccupation de s’y retrouver dans l’arborescence des fichiers qui m’intéressait le plus, et qui m’a mené au développement de « Sorts« .

Pour ceux qui souhaitent jeter un œil aux détails de l’enquête, nous avons publié les résultats anonymisés, ainsi qu’une synthèse des différents sujets abordés que j’ai réalisée pour affiner le sujet du stage (c’est sans doute plus digeste que le tableur de résultats bruts).

[Note de Framasoft : Retrouvez les résultats de l’enquête en fin d’article]

Donc, tu es parti sur la création de l’application Nextcloud « Sorts » . Mais… il fait quoi, ce plugin, en fait ?

L’idée derrière Sorts, c’est d’aider les gens à retrouver les fichiers qu’ils cherchent et à comprendre comment les dossiers et les fichiers ont été organisés par le collectif dont ils font partie.

Pour régler le premier problème on a profité de toutes les informations relatives à chaque fichier que Nextcloud stockait déjà (date de modification, poids, « étiquetage » du fichier par l’utilisateur, …) et on a codé une interface qui permet de faire une recherche qui mélange ces différents attributs. Par exemple « Trouve-moi tous les fichiers dans le dossier « Subvention » et ses sous-dossiers qui sont marqués comme étant importants, et qui sont des .pdf ».

Recherche par filtres dans Sorts
Recherche par filtres dans Sorts

 

Pour régler le deuxième problème on a décidé de présenter les dossiers, sous-dossiers et fichiers d’une manière qui n’était pas encore présente dans Nextcloud : en liste arborescente. C’est-à-dire que lorsqu’on clique sur un dossier, au lieu de « rentrer » dans ce dossier et de ne voir que son contenu direct, le dossier est « déroulé » et on voit son contenu ainsi que les dossiers et fichiers qui sont « à coté » de lui. Cette liste arborescente prend plus de place qu’une liste simple mais elle permet de bien comprendre où on se situe dans les dossiers, ce qui aide à comprendre la façon dont ils sont rangés.

Navigation par arborescence
Navigation par arborescence : un clic sur un dossier ouvre le contenu de ce dossier sous forme arborescente.

 

Techniquement, tu as rencontré des soucis ?

Oui, comme dans tout processus de développement. Je pense qu’une des grosses difficultés a été de trouver quelle partie des API de Nextcloud utiliser, quelles étaient ses limites et comment faire avec. La recherche Nextcloud est pensée autour d’une recherche « groupée » (« unified search ») où l’utilisateur cherche une chaîne de caractères, et Nextcloud renvoie comme résultats tout ce qui correspond à cette chaîne de caractères parmi les ressources diverses et variées de Nextcloud (fichiers, todo, évènements, mails, conversations, …). Autant dire que ça ne correspond pas du tout à ce qu’on souhaite faire : chercher parmi les fichiers uniquement selon plusieurs conditions, dont certaines ne sont pas des chaînes de caractères (dates, nombres, …). Mais, heureusement pour nous, il y avait une autre API de recherche propre aux fichiers. Cette autre API paraissait très prometteuse parce qu’elle était déjà pensée pour permettre de combiner des conditions de recherches sur des attributs propres aux fichiers. Cependant, cette API était assez vieille et peu utilisée, ce qui m’a parfois donné un peu de fil à retordre.

De plus, je me suis rendu compte assez tard que l’API ne prenait pas en compte deux des différents attributs des fichiers : les « étiquettes » (tags) et les informations sur les partages de fichiers. Ces informations sont gérées dans des API totalement séparées. Je me suis donc retrouvé face à un dilemme : soit je réécris une API qui fait elle-même les requêtes en base de données avec tous les attributs, soit je complète l’API présente, soit je bricole quelque-chose où je fais 3 requêtes en base de données par recherche et je combine les résultats. La première solution m’aurait pris trop de temps et la deuxième solution aurait été refusée par Nextcloud GmbH (on ne modifie pas les APIs de Nextcloud à la légère), donc j’ai bricolé quelque-chose, et tant pis pour les performances de l’application.

As-tu eu des contacts avec la communauté Nextcloud ou son entreprise éditrice (Nextcloud Gmbh), et si oui, comment ça s’est passé ?

Oui bien sûr, lorsqu’on a commencé à avoir une bonne idée de ce qu’on souhaitait faire de Sorts j’ai écrit une note d’intention avec un lien vers un prototype sur le forum dédié au développement de plugin Nextcloud. Ça a mené à quelques échanges avec des développeurs salariés de Nextcloud qui étaient intéressés par le projet et qui m’ont fait quelques retours constructifs. On a même fait une réunion en visio avec eux pour discuter du plugin mais aussi du projet plus large, mais avec les plannings des uns et des autres cette réunion a eu lieu assez tard dans le développement de Sorts et elle n’a pas beaucoup impacté le plugin.

Et donc, la question qui pique : Sorts, ça marche ou pas ?

Eh bien OUI ! Sorts propose une vue de l’arborescence des fichiers « dépliante » et permet déjà de faire des recherches combinées sur une bonne variété des caractéristiques que peuvent avoir des fichiers !

Cependant, il s’agit d’une version Bêta qui présente quelques limites… J’ai dû faire quelques arrangements avec les problèmes techniques évoqués dans la question précédente, et si la version actuelle fonctionne sur des petites instances Nextcloud, elle aura sans doute du mal à « passer à l’échelle » pour fonctionner avec des instances réelles avec des centaines d’utilisateurs et des milliers de fichiers.

 

Vidéo de démonstration des fonctionnalités de Nextcloud Sorts 0.1.0-beta (source)

 

Et la suite ? C’est quoi à ton avis, et pour quand ?

Sorts est disponible sur https://packages.framasoft.org et sur l’app store Nextcloud en version beta !

Nous souhaitons continuer à maintenir cette application et à traiter et accepter toutes les contributions éventuelles, mais ni moi ni Framasoft n’avons prévu de développer à plein temps dessus pour le moment. Sorts rentre maintenant dans le monde du développement bénévole, ce qui veut dire que les développements portés par Framasoft et moi-même se feront au fil des envies et des disponibilités, sans agenda particulier (ce qui veut aussi dire que nous n’annoncerons pas de « date de sortie » quelconque).

On arrive à la fin de cette interview. Souhaites-tu nous partager un sentiment sur le travail effectué pendant ce stage ?

Résumer un stage en une émotion ? C’est difficile ! Développer un programme, c’est passer de la frustration quand ça ne marche pas, à l’excitation d’enquêter sur pourquoi ça ne marche pas, à la satisfaction de voir la fonctionnalité fonctionner quand on a trouvé.

Non, plus sérieusement, il y a eu quelques frustrations comme ne pas avoir beaucoup de temps pour développer ou ne pas retrouver autant de temps et de motivation que ce que j’aurais souhaité pour boucler le projet après le stage, mais je suis satisfait. Satisfait d’avoir fait quelque-chose qui marche mais surtout d’avoir pu concevoir ce plugin du presque début à la presque fin, en prenant le temps d’identifier ce qu’on pouvait faire d’utile, de réfléchir à quoi ça devait ressembler, et d’ensuite réfléchir à comment le réaliser techniquement.

Dernière question, récurrente dans nos interviews : quelle est la question que tu aurais aimé qu’on te pose, et quelle serait ta réponse ?

Mais pourquoi ne pas avoir publié Sorts plus tôt ?

C’est mon grand regret ! Et je pense que les personnes qui s’étaient intéressées à l’application lors de la note d’intention se sont aussi posées la question. Mais ma vie associative et personnelle était assez chargée après le stage et ne m’a pas laissé beaucoup de temps pour m’occuper de Sorts, c’est aussi ça le développement bénévole.

Merci Romain ! Ainsi qu’à toutes les personnes qui auront rendu ce travail possible, notamment en répondant au questionnaire !

Rappel des différents liens évoqués dans l’article :




Nextcloud Sorts : a Nextcloud application prototype to navigate your files more easily

What if Framasoft took a look at the free/libre collaborative software Nextcloud?

 

In our newsletter #28 (Autumn 2021), we talked about Romain, an intern at Framasoft, whose internship topic was related to Nextcloud.

A few weeks later, we invited  » socially committed  » structures using Nextcloud to answer a survey (now closed), created with the designer Marie-Cécile Godwin, and La Fabrique à Liens.

Then, once the results were analyzed (you will find an anonymized raw version and a synthetic analysis at the end of the article), we were able to identify a set of unmet user needs, on which Romain could work.

Nextcloud provides loads of features, but the one that remains the most central is probably the storage and sharing of files. However, browsing files in the web interface is quite tedious: a click each time you change folder, and thus a more or less fast reloading of the tree structure. And sometimes many clicks to go from one branch of the tree to another.

There was probably a way to make it more accessible and more intuitive.

Romain, who knew neither the PHP computer language nor the Nextcloud software solution when beginning his internship, indulged himself with the development of a prototype of a third-party application, which would not only allow to « open the file tree » within the same interface, but also to be able to make advanced searches.

Two months later, the « Sorts » plugin was born, and we would like to share its story below.


Hello Romain, can you introduce yourself?

My name is Romain and I am 24 years old. I grew up in Guadeloupe (French West Indies) before coming to study in Villeurbanne, at the Institut National des Sciences Appliquées in Lyon, where I will graduate in 2022 as a Telecom Engineer.

When I’m not busy with my studies, I spend a lot of time tinkering and repairing old machines, and getting involved in community projects! I am particularly involved in Karnaval Humanitaire, a student association that organizes a music festival for which I was the site manager in 2021 and 2022.

Picture of Romain, INSA Lyon intern at Framasoft from September 2021 to February 2022

 

Why did you choose Framasoft for your internship?

I wanted my internship to be in line with my values of free sharing of knowledge, and away from capitalism and big companies!

I already knew a bit about Framasoft’s projects, especially the online services and software development, and I knew I would find interesting projects in a great environment… and I was not disappointed!

Let’s come to the subject of your internship. What was the main goal?

My internship took place at the beginning of a larger project, codenamed « Framacloud » [Framasoft’s note: we’ll be telling you more about this ambitious project in the upcoming months], whose goal is to allow structures fighting for social progress and social justice to gain ownership, master and control over digital collaboration processes.

This Framasoft project is focused on an online collaboration and file sharing software solution: Nextcloud.

However, although it is one of the most successful and complete open source solutions in this field, it is primarily designed to meet the needs of customers of « Nextcloud GmbH« , the German company that publishes the software. These customers are large structures, public, university or private. As a result, there is a risk of differences between the expectations of small associations and the development priorities of Nextcloud GmbH.

The goal of my internship was therefore to find out how to improve this software in order to make it more useful and more accessible for alternative organisations.

OK, that’s a big topic! How did you manage about it?

Well, first of all, I had to learn about the development of Nextcloud, and we had to learn more about this software: how it works, its flaws and especially what was missing for the users we were targeting.

After several tests of the software and several hypotheses on how to improve it, we decided to get closer to our target users. So we set up a survey targeting people who were part of organisations committed to social progress and social justice and who were already using Nextcloud. This survey questioned their uses of collaborative computing within the collective, their uses of Nextcloud, their frustrations and expectations.

Thanks to the almost 200 answers of this survey we decided on the software developments to be achieved during this internship and that led to the creation of a Nextcloud plugin called « Sorts »!

#gallery-3 { margin: auto; } #gallery-3 .gallery-item { float: left; margin-top: 10px; text-align: center; width: 33%; } #gallery-3 img { border: 2px solid #cfcfcf; } #gallery-3 .gallery-caption { margin-left: 0; } /* see gallery_shortcode() in wp-includes/media.php */

 

Let’s focus a moment on this survey work. What were the results?

The main concerns that came out of this survey were rather general concerns about the Nextcloud tool. But it allowed us to see what is important for the public we wanted to address.

Of the 20 or so topics I was able to identify in the responses, the first two were topics we couldn’t do much about: collaborative document editing and the general « slowness » of the tool.
On the other hand, among the following subjects we had more perspective to help change things in a few months of training: handling and ergonomics of the software, synchronization problems or help to users to find their way among the files of the collective.

It is this last concern: « finding one’s way in the tree of files more easily » that interested me the most, and that led me to the development of « Sorts ».

For those who want to have a look at the details of the survey, we have published the anonymized results, as well as a synthesis of the different subjects I have discussed in order to refine the subject of the workshop (it is probably easier to digest than the spreadsheet of raw results).

[Framasoft’s note: You can find the results of the survey at the end of the article]

So, you decided to create the Nextcloud application « Sorts ». But… what does this plugin actually do?

The idea behind Sorts is to help people find the files they are looking for and to understand how the folders and files have been organized by the collective they are part of.

To solve the first problem we took advantage of all the information about each file that Nextcloud was already storing (modification date, weight, « tagging » of the file by the user, …) and I coded an interface that allows users to perform a search mixing these different attributes. For example « Find me all the files in the folder « Grant » and its subfolders that are marked as important, and that are in PDF format ».

 

Recherche par filtres dans Sorts
Search by filters in Sorts

 

To solve the second problem we decided to present the folders, subfolders and files in a way that was not yet present in Nextcloud: in a tree list. That is to say that when you click on a folder, instead of « entering » this folder and seeing only its direct content, the folder is « expanded » and you see its content as well as the folders and files which are « next to » it. This tree-like list takes up more space than a simple list but it allows you to understand where you are in the folders, which helps you to understand how they are arranged.

 

Navigation par arborescence
Tree navigation: clicking on a folder opens the contents of that folder in tree form.

 

Technically, did you encounter any issues?

Yes, like in any development process. I think one of the big challenges was to find out which part of the Nextcloud APIs to use, what were its limitations and how to deal with it. The Nextcloud current search feature is designed around a « grouped » search (« unified search ») where the user searches for a string of characters, and Nextcloud returns everything that matches this string among the various resources (files, todos, events, emails, conversations, …). This is not at all what we wanted to do: search among files only according to several conditions, some of which are not strings (dates, numbers, …). But, fortunately for us, there was another search API specific to files. This other API looked very promising because it was already thought to allow combining search conditions on file-specific attributes. However, this API was quite old and not widely used, which sometimes gave me a bit of trouble.

Moreover, I realized quite lately that the API did not take into account two of the different file attributes: « tags » and file sharing information. This information is managed in totally separate APIs. So I faced this dilemma: either I rewrite an API that does the database queries itself with all the attributes, or I complete the existing API, or I cobble together something where I do 3 database queries per search and combine the results. The first solution would have taken too much time and the second solution would have been rejected by Nextcloud GmbH (you don’t change Nextcloud APIs so easily), so I cobbled something together, and so much for the performance of the application.

Did you have contacts with the Nextcloud community or its editor (Nextcloud Gmbh), and if so, how did it go ?

Yes of course, when we started to have a clear idea of what we wanted to do with Sorts I wrote a note of intent with a link to a prototype on the Nextcloud plugin development forum. This led to some exchanges with Nextcloud’s employed developers who were interested in the project and sent me some constructive feedback. We even had a video meeting with them to discuss the plugin but also the wider project, but with everyone’s schedules this meeting took place quite late in the development of Sorts and it didn’t impact the plugin much.

And now, the nagging question: is Sorts really working?

Well YES ! 🎉 Sorts offers an « unfolding » file tree view and already allows combined searches on a good variety of characteristics that files can have!

However, this is a Beta version and it has some limitations… I had to make some accommodations with the technical issues mentioned in the previous question, and while the current version works on small Nextcloud instances, it will likely have trouble to scale when working with real instances counting hundreds of users and thousands of files.


Nextcloud Sorts 0.1.0-beta feature demo video (source)

Features of Nextcloud Sorts 0.1.0-beta (source)

 

What’s next? What do you think is next, and when?

Sorts is available on https://packages.framasoft.org and on the Nextcloud app store in beta version !

We want to continue to maintain this application and to process and accept all possible contributions, but neither I nor Framasoft have plans to develop it full time at the moment. Sorts is now entering the world of community/voluntary development, which means that the developments carried by Framasoft and myself will be done according to our desires and availabilities, without any particular agenda (which also means that we won’t announce any « release date »).

We are coming to the end of this interview. Would you like to share with us a feeling about the work done during this workshop?

Summarize an internship in one emotion? That’s a tough one! Developing a program goes from frustration when it doesn’t work, to the excitement of investigating why it doesn’t work, to the satisfaction of seeing the feature work when you’ve found it.

No, more seriously, there were some frustrations like not having much time to develop or not finding as much time and motivation as I would have liked to complete the project after the internship, but I am satisfied. Satisfied to have made something that works but especially to have been able to design this plugin from almost the beginning to almost the end, taking the time to identify what could be useful, to think about what it should look like, and then to think about how to realize it technically.

Last question, recurrent in our interviews: what is the question you would have liked to be asked, and what would be your answer?

Why didn’t you publish Sorts earlier?

That’s my big regret! And I think that the people who were interested in the application during the note of intent also asked themselves that question. But my associative and personal life was quite busy after the internship and didn’t leave me much time to take care of Sorts, that’s also what volunteer development is about.

Thank you Romain! And to all the people who made this work possible, especially by answering the questionnaire!

Reminder of the different links mentioned in the article :




D’autres technologies pour répondre à l’urgence de la personne ?

« Ce dont nous avons besoin, c’est le contraire de la Big Tech. Nous avons besoin de Small Tech – des outils de tous les jours conçus pour augmenter le bien-être humain, et non les profits des entreprises. »

Ce n’est pas une théorie complotiste : le profilage et la vente de données privées font, depuis des années, partie intégrante du modèle économique de la plupart des entreprises du numérique. Dans cet article traduit par Framalang, Aral Balkan (auquel nous faisons régulièrement écho) suggère qu’il est urgent de s’éloigner de ce modèle qui repose sur les résultats financiers pour gagner en indépendance et explique pourquoi c’est important pour chacun d’entre nous.

 

Article original : In 2020 and beyond, the battle to save personhood and democracy requires a radical overhaul of mainstream technology

Traduction Framalang : FranBAG, goofy, wisi_eu, gangsoleil, Khrys – Mise en forme :

En 2020 et au-delà, la bataille pour sauver l’identité individuelle et la démocratie exigera une révision radicale des technologies dominantes

par Aral Balkan

Un jeune garçon pilotant un canot sur un lac, durant les grands incendies australiens. Crédit photo: Allison Marion.

 

Alors que nous entrons dans une nouvelle décennie, l’humanité est confrontée à plusieurs urgences existentielles :

  1. L’urgence climatique1
  2. L’urgence démocratique
  3. L’urgence de la personne

Grâce à Greta Thunberg, nous parlons sans aucun doute de la première. La question de savoir si nous allons vraiment faire quelque chose à ce sujet, bien sûr, fait l’objet d’un débat.2

De même, grâce à la montée de l’extrême droite dans le monde entier sous la forme de (entre autres) Trump aux États-Unis, Johnson au Royaume-Uni, Bolsonaro au Brésil, Orban en Hongrie et Erdoğan en Turquie, nous parlons également de la seconde, y compris du rôle de la propagande (ou « infox ») et des médias sociaux dans sa propagation.

Celle sur laquelle nous sommes les plus désemparé·e·s et partagé·e·s, c’est la troisième, même si toutes les autres en découlent et en sont les symptômes. C’est l’urgence sans nom. Enfin, jusqu’à présent.

L’urgence de la personne

On ne peut pas comprendre « l’urgence de la personne » sans comprendre le rôle que la technologie de réseau et numérique grand public joue dans sa perpétuation.

Votre télé ne vous regardait pas, YouTube si.

La technologie traditionnelle – non numérique, pas en réseau – était un moyen de diffusion à sens unique. C’est la seule chose qu’un livre imprimé sur la presse Gutenberg et votre téléviseur analogique avaient en commun.

Autrefois, quand vous lisiez un journal, le journal ne vous lisait pas aussi. Lorsque vous regardiez la télévision, votre téléviseur ne vous regardait pas aussi (à moins que vous n’ayez spécifiquement permis à une société de mesure d’audience, comme Nielsen, d’attacher un audimètre à votre téléviseur).

Aujourd’hui, lorsque vous lisez le journal The Guardian en ligne, The Guardian – et plus de deux douzaines d’autres parties tierces, y compris la Nielsen susmentionnée – vous lit également. Quand vous regardez YouTube, YouTube vous regarde aussi.

Il ne s’agit pas d’une théorie de la conspiration farfelue, mais simplement du modèle d’affaires de la technologie actuelle. J’appelle ce modèle d’affaires « l’élevage d’êtres humains ». C’est une partie du système socio-économique, dont nous faisons partie, que Shoshana Zuboff appelle le capitalisme de surveillance.3

Et pis encore : Alphabet Inc, qui possède Google et YouTube, ne se contente pas de vous observer lorsque vous utilisez un de leurs services, mais vous suit également sur le Web lorsque vous allez de site en site. À lui seul, Google a les yeux sur 70 à 80 % du Web.
Mais ils ne s’arrêtent pas là non plus. Les exploitants d’êtres humains achètent également des données auprès de courtiers en données, partagent ces données avec d’autres exploitants et savent même quand vous utilisez votre carte de crédit dans les magasins ayant pignon sur rue. Et ils combinent toutes ces informations pour créer des profils de vous-même, constamment analysés, mis à jour et améliorés.

Nous pouvons considérer ces profils comme des simulations de nous-mêmes. Ils contiennent des aspects de nous-mêmes. Ils peuvent être (et sont) utilisés comme des approximations de nous-mêmes. Ils contiennent des informations extrêmement sensibles et intimes sur nous. Mais nous ne les possédons pas, ce sont les exploitants qui les possèdent.

Il n’est pas exagéré de dire qu’au sein de ce système, nous ne sommes pas en pleine possession de nous-mêmes. Dans un tel système, où même nos pensées risquent d’être lues par des entreprises, notre identité et le concept même d’autodétermination sont mis en danger.

Nous sommes sur le point de régresser du statut d’être humain à celui de propriété, piratés par une porte dérobée numérique et en réseau, dont nous continuons à nier l’existence à nos risques et périls. Les conditions préalables à une société libre sont soumises à notre compréhension de cette réalité fondamentale.
Si nous nous prolongeons en utilisant la technologie, nous devons étendre le champ d’application légal des droits de l’homme pour inclure ce « Moi » prolongé.

Si nous ne pouvons définir correctement les limites d’une personne, comment pouvons-nous espérer protéger les personnes ou l’identité d’une personne à l’ère des réseaux numériques ?

Aujourd’hui, nous sommes des êtres fragmentés. Les limites de notre être ne s’arrêtent pas à nos frontières biologiques. Certains aspects de notre être vivent sur des morceaux de silicium qui peuvent se trouver à des milliers de kilomètres de nous.

Il est impératif que nous reconnaissions que les limites du moi à l’ère des réseaux numériques ont transcendé les limites biologiques de nos corps physiques et que cette nouvelle limite – le « Moi » prolongé ; la totalité fragmentée du moi – constitue notre nouvelle peau numérique et que son intégrité doit être protégée par les droits de l’homme.

Si nous ne faisons pas cela, nous sommes condamné·e·s à nous agiter à la surface du problème, en apportant ce qui n’est rien d’autre que des changements cosmétiques à un système qui évolue rapidement vers un nouveau type d’esclavage.

C’est l’urgence de la personne.

Un remaniement radical de la technologie grand public

Si nous voulons nous attaquer à l’urgence de la personne, il ne faudra rien de moins qu’un remaniement radical des technologies grand public.

Nous devons d’abord comprendre que si réglementer les exploitants d’humains et les capitalistes de la surveillance est important pour réduire leurs préjudices, cette réglementation constitue une lutte difficile contre la corruption institutionnelle et n’entraînera pas, par elle-même, l’émergence miraculeuse d’une infrastructure technologique radicalement différente. Et cette dernière est la seule chose qui puisse s’attaquer à l’urgence de l’identité humaine.

Imaginez un monde différent.

Faites-moi le plaisir d’imaginer ceci une seconde : disons que votre nom est Jane Smith et que je veux vous parler. Je vais sur jane.smith.net.eu et je demande à vous suivre. Qui suis-je ? Je suis aral.balkan.net.eu. Vous me permettez de vous suivre et nous commençons à discuter… en privé.

Imaginez encore que nous puissions créer des groupes – peut-être pour l’école où vont nos enfants ou pour notre quartier. Dans un tel système, nous possédons et contrôlons tou·te·s notre propre espace sur Internet. Nous pouvons faire toutes les choses que vous pouvez faire sur Facebook aujourd’hui, tout aussi facilement, mais sans Facebook au milieu pour nous surveiller et nous exploiter.

Ce dont nous avons besoin, c’est d’un système en pair à pair qui établisse une passerelle avec le réseau mondial existant.

Ce dont nous avons besoin, c’est le contraire de la « Big Tech » (industrie des technologies). Nous avons besoin de « Small Tech » (technologie à petite échelle) – des outils de tous les jours pour les gens ordinaires, conçus pour augmenter le bien-être humain, et non les profits des entreprises.

Étapes concrètes

À la Small Technology Foundation, Laura et moi avons déjà commencé à construire certains des éléments fondamentaux d’un pont possible entre le capitalisme de surveillance et un avenir radicalement démocratique, entre pairs. Et nous continuerons à travailler sur les autres composantes cette année et au-delà. Mais il y a des mesures pratiques que nous pouvons tou·te·s prendre pour aider à faire avancer les choses dans cette direction.

Voici quelques suggestions pratiques pour différents groupes :

Les gens ordinaires

1. Ne vous culpabilisez pas, vous êtes les victimes. Quand 99,99999 % de tous les investissements technologiques vont aux « exploitants d’humains », ne laissez personne vous dire que vous devriez vous sentir mal d’avoir été obligé·e·s d’utiliser leurs services par manque d’alternatives.

2. Cela dit, il existe des alternatives. Cherchez-les. Utilisez-les. Soutenez les gens qui les fabriquent.

3. Prenez conscience que ce problème existe. Appelez des responsables et défendez ceux qui le font. À tout le moins, n’écartez pas les préoccupations et les efforts de ceux et celles d’entre nous qui tentent de faire quelque chose à ce sujet.

Les développeurs

1. Cessez d’intégrer les dispositifs de surveillance d’entreprises comme Google et Facebook dans vos sites Web et vos applications. Cessez d’exposer les gens qui utilisent vos services au capitalisme de surveillance.

2. Commencez à rechercher d’autres moyens de financer et de construire des technologies qui ne suivent pas le modèle toxique de la Silicon Valley.

3. Laissez tomber la « croissance » comme mesure de votre succès. Construisez des outils que les individus possèdent et contrôlent, et non votre entreprise ou organisation. Créez des applications Web pour utilisateur unique (dont chaque personne sera l’unique propriétaire). Soutenez des plateformes libres (comme dans liberté) et décentralisées (sans nager dans les eaux troubles de la blockchain).

L’Union Européenne

1. Cessez d’investir dans les start-ups et d’agir comme un Département de recherche et développement officieux de la Silicon Valley et investissez plutôt dans les « stayups » (entreprises durables, PME ou micro-entreprises matures).

2. Créez un domaine de premier niveau (DPN) non commercial ouvert à tous, où chacun peut enregistrer un nom de domaine (avec un certificat Let’s Encrypt automatique) pour un coût nul avec un seul « appel API ».

3. Appuyez-vous sur l’étape précédente pour offrir à chaque citoyen·ne de l’Union Européenne, payé par l’argent du contribuable européen, un serveur privé virtuel de base, doté de ressources de base pour héberger un nœud actif 24h/24 dans un système pair-à-pair qui le détacherait des Google et des Facebook du monde entier et créerait de nouvelles possibilités pour les gens de communiquer en privé ainsi que d’exprimer leur volonté politique de manière décentralisée.

Et, généralement, il est alors temps pour chacun·e d’entre nous de choisir un camp.

Le camp que vous choisissez décidera si nous vivons en tant que personnes ou en tant que produits. Le côté que vous choisissez décidera si nous vivons dans une démocratie ou sous le capitalisme.

Démocratie ou capitalisme ? Choisissez.

Si, comme moi, vous avez grandi dans les années 80, vous avez probablement accepté sans réfléchir la maxime néolibérale selon laquelle la démocratie et le capitalisme vont de pair. C’est l’un des plus grands mensonges jamais propagés. La démocratie et le capitalisme sont diamétralement opposés.

Vous ne pouvez pas avoir une démocratie fonctionnelle et des milliardaires et des intérêts corporatifs de billions de dollars et la machinerie de désinformation et d’exploitation des Big Tech de la Silicon Valley. Ce que nous voyons, c’est le choc du capitalisme et de la démocratie, et le capitalisme est en train de gagner.

Avons-nous déjà passé ce tournant ? Je ne sais pas. Peut-être. Mais on ne peut pas penser comme ça.

Personnellement, je vais continuer à travailler pour apporter des changements là où je pense pouvoir être efficace : en créant une infrastructure technologique alternative pour soutenir les libertés individuelles et la démocratie.

L’humanité a déjà mis en place l’infrastructure du techno-fascisme. Nous avons déjà créé (et nous sommes toujours en train de créer) des éléments panoptiques. Tout ce que les fascistes ont à faire, c’est d’emménager et de prendre les commandes. Et ils le feront démocratiquement, avant de détruire la démocratie, tout comme Hitler l’a fait.

Et si vous pensez que «les années 30 et 40 c’était quelque chose», rappelez-vous que les outils les plus avancés pour amplifier les idéologies destructrices de l’époque étaient moins puissants que les ordinateurs que vous avez dans vos poches aujourd’hui. Aujourd’hui, nous avons le « Machine Learning » (Apprentissage machine) et sommes sur le point de débloquer l’informatique quantique.

Nous devons nous assurer que les années 2030 ne reproduisent pas les années 1930. Car nos systèmes centralisés avancés de saisie, de classification et de prévision des données, plus une centaine d’années d’augmentation exponentielle de la puissance de traitement (notez que je n’utilise pas le mot « progrès »), signifient que les années 2030 seront exponentiellement pires.

Qui que vous soyez, où que vous soyez, nous avons un ennemi commun : l’Internationale nationaliste. Les problèmes de notre temps dépassent les frontières nationales. Les solutions le doivent également. Les systèmes que nous construisons doivent être à la fois locaux et mondiaux. Le réseau que nous devons construire est un réseau de solidarité.

Nous avons créé le présent. Nous allons créer le futur. Travaillons ensemble pour faire en sorte que cet avenir soit celui dans lequel nous voulons vivre nous-mêmes.


Discours d’Aral Balkan au Parlement européen, fin 2019, lors de la rencontre sur l’avenir de la réglementation de l’Internet.  Merci à la Quadrature du Net et à sa chaîne PeerTube.