This new status update attempts to summarize my professional activity for May. I was not very active this month, mostly harvesting the results of previous month's work and enjoying the work of co-workers.
If you lack context, look at the bottom of this page for an introduction to the cited projects, or refer to previous similar reports: January 2024, February, March, April, (May), June, Summer, September.
Not much happened on the teaching front, since my last classes finished this month. We had a very interesting recap on the contributions of my students to the unplugged activities, and I should now merge these contributions to the public git. The feedback on my C++ class is that I went too much into the language pitfalls, with too few time on how it could be used to actually achieve stuff. I agree, that's a good summary of what I did this year, unfortunately. Next term, I'll give a project on the use of encapsulation to actually code a little thing, without having to wait for the advanced lectures on polymorphism. It should solve several issues for once.
I had a lot to do on the administrative front to prepare next year. In particular, I gathered the wishes of each student about next year and made sure that everybody's going somewhere next year, validated what needs to be for the last year students to get their diploma, started recruiting the new students of next year (starting with the ones integrating the curriculum in second year directly), discussed with the colleagues to allocate the lectures to professors, recruited TAs, and several other such exciting things.
On the Mc SimGrid front, Mathieu proposed an algorithm to find the critical transition once a failure is found, i.e. the one transition before which some executions are free of any problem and after which all executions are buggy. This transition is probably very interesting when trying to understand the issue. The algorithm is rather intricate because we want to reuse the information gathered during the initial exploration. Several things complicate that matter. First, the initial exploration uses ODPOR to reduce as much as possible the amount of executions to explore to fully cover the state space, and ODPOR itself is rather intricate. Then, the initial exploration to may be out of order in our case, instead of depth-first. It's rather easy to get lost and miss a corner case with these things. Finally, when the failure is an assertion or a segfault, we cannot explore that execution further, while the ODPOR algorithm does quite a lot of work when backtracking from a final state. Segfaulting states are not final states, and the fate of the transitions we could not execute is not entirely clear yet. The good point is that Mathieu can test his ideas directly in the code, and we have enough regression testing already to find flaws laying in corner cases.
Almost nothing happened on the regular SimGrid this month. Millian opened a new bug on the internals of actor's termination. It's not an easy piece of cake. I'm not sure that many people know the internals enough to fix it, but I'm not sure whether I'll manage to find the time to dig into this one in the near future.
Our paper with Clément and Anne-Cécile got accepted finally. That's very good news since this paper was refused several times before, and got heavily improved since the first version. One of the strong points of this paper is the comparison made by Clément between several Cloud and Fog simulators. I kinda like the resulting discussion. Kudos, Clément!
On the TANSIV front, Léo merged Louis's proposal to fix buffer bloats in 1G communications. It seems effective and now deserves more testing. Léo also continued his work to port TANSIV to the Xen hypervisor, and is now very close to completion. That's very good news. We still target a nice submission about the use of TANSIV to study arbitrary application at EuroSys this fall. Conversely, the student I envisioned last month at the crossing between TANSIV and model checking finally picked another topic with Louis. I guess I'll never go in that direction after all, but that's fully OK. I have too much on my plate.
On the SmolPhone front, Israël (an ENSSAT student) picked our internship on the hardware part. He will devise a workbench to characterize the energy profile of the 4G modems. We currently have one LTE CatM model, but we are not really convinced about it, because it contains a Cortex A7 core while we strive to fit all applications on a Cortex M0. This resource waste is disappointing, but it's very hard to find similar modems with smaller frontends anyway. These beasts are meant to become the central part of a complete device, running all the user applications directly on large cores, without the size limits that we want to explore in our project. Since BroadCom is almost the only maker out there, finding competing designs off the shelf seems near to impossible. Israël's work will help us to quickly assess a given modem despite the traditional lack of documentation about these components.
This will also very nicely complete the work of Aloïs, described in a short paper which was accepted at the 'ICT for sustainability' conference this month. Good news!
The greatest news of this month is certainly that we had all the green lights from Inria, and can now hire the two engineers for September or October! Yuhu! So we wrote job descriptions for the software engineer and the hardware engineer. Please apply! These descriptions are written in French for no good reason, but feel free to use Google Translate for details before applying if you don't speak French. Please apply even if you do speak French! Please apply!
I did not do anything on the frugal computing front this month.
On the open-source front, I released a new version of po4a fixing quite a bunch of bugs. Only to get a few more bugs opened quickly afterward. Maah. The co-maintainer packaged this release for Debian, allowing to discover that the complete revamp of UTF8 handling done a while ago introduced some more bugs. The goobox package fails to build from source (FTBFS) with po4a v0.72. Such FTBFS errors are seen as a huge problem in the Debian community, since they prevent any security fixes that could be needed. Packages with FTBFS are kicked out of the testing distribution after a short while. I must fix these problems before unrelated packages suffer. Widelands is still to be packaged (I did not resize my partition yet). A new upstream release of ns3 came out, but I didn't package it yet either. ns3 is much larger than Widelands, my disk will suffer.
A new version of PLM was uploaded to Debian, to fix a FTBFS due to the upgrade of one of the dependencies. Thanks to Pierre Gruet for this unexpected help, that's always welcome.
Context: The projects I'm working on these days
SimGrid is a simulator of distributed systems developed by a team of friends since 2000. It takes a distributed application (written in C++/C/Python using our dedicated APIs or in C/Fortran using the MPI standard), and it executes the application on a fast but realistic network simulation. It provides timing and energy consumption forecasts, allowing one to prototype, study or profile distributed systems in a wide range of settings, Over the years, it grounded the experimental sections of 630 scientific articles around the globe. This paper gives a somewhat outdated overview of the framework, but the replacement is still under review.
Mc SimGrid is a software model checker (SMC) embedded in the SimGrid framework. It exhaustively tests the applications that can run on top of SimGrid, exploring all possible orders of events to find bugs that only occur after a specific sequence of events. In some sense, it's related to fuzzing that tries to feed the application with random data to find bugs, but instead it exhaustively "randomizes" the events' scheduler. More info in this paper. That's the context of Mathieu Laurent's PhD thesis, co-advised with Thierry Jéron. We work on improving Mc SimGrid to eventually make it a widely usable tool. To that extend, we first aim at finding a wild bug, i.e. a bug that exists out there in an application rather than a synthetic bug that we add to test our tools.
TANSIV is a contraption interconnecting virtual machines with a simulated network to study arbitrary applications. The key difficulty is to synchronize the time of the virtual machines with the simulated one. The first challenge is to precisely pause and restart virtual machines, which is easy in the slow emulated mode but much harder in the fast hardware-accelerated mode. The second challenge is that the simulated time is discrete, but the wall clock of the VMs is naturally continuous. This is the PhD topic of Léo Cosseron, co-advised with Louis Rilling. More details are given in this paper.
SmolPhone is an action research on digital sufficiency as defined in this article. Other relevant keywords are low-tech and empowerment in IT systems. Its practical aspects consist in designing a sort of long-lasting smartphone. The goal is not to optimize a typical smartphone but rather to explore unusual hardware & software architectures. I take this as a journey to reconsider the way we design computing systems. Some more details are given in this short paper. Aloïs Rautureau is a master student working on the quantification of the tiny-small design where we leverage two chips on the same board to finely adapt the energy consumption to the application needs. He's co-advised with Simon Rokicki and Joseph Paturel.
po4a is a free software to ease the maintenance of documentation's translation. It makes it it easy to track the modified parts in the original documents so that translators can update their work when the documentation changes. Largely adopted by the community, it is now a key component of several renowned open source projects including Debian and F-droid. This project is on slow development/maintenance-only mode these days. I try to keep up with the request of the community, but I really need the help of the existing power users to be somewhat reactive.
PLM is the Programmer's Learning Machine. It's a pedagogical platform for the teaching of programming through interactive and graphical exercises. It gathers over 200 challenges, ranging from a complete programming introduction for real beginners to more advanced topics such as recursion or sorting algorithms and to programming brain teasers. Solving all exercises require the learners to write about 3000 lines of code, which can be done in Java, Python or Scala. The whole system is translated to English and French + partially in Brazilian and Italian. This project is on hold right now, and I'm contempling reimplementing it from Java to Rust at some point to revive the project.