|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Supporting new users" |
| 4 | +--- |
| 5 | + |
| 6 | +During the last few months, a lot of work has been done to help other kernel |
| 7 | +developers, and stabilize the current solution. It was really time to focus on |
| 8 | +supporting new users and application developers. Read on to find out more about |
| 9 | +what happened in April! |
| 10 | + |
| 11 | +<!--more--> |
| 12 | + |
| 13 | +## MPTCP case |
| 14 | + |
| 15 | +Like many consequent projects modifying the Linux kernel, the development of the |
| 16 | +MPTCP Linux Upstream project has been mainly supported by companies, for their |
| 17 | +specific use-cases. |
| 18 | + |
| 19 | +Because using multiple paths at the same time is still not common these days, |
| 20 | +most OS's need to be configured to let MPTCP use different paths, and the apps |
| 21 | +need to ask to use MPTCP. Companies working on the Linux implementation already |
| 22 | +know about MPTCP, and how to configure it. Their clients have also certainly |
| 23 | +been told what it is and how to use it in their product. But it has never been a |
| 24 | +priority to have good documentation for the community. Of course, we were, and |
| 25 | +still are, open to answer questions about MPTCP, but not everybody is curious |
| 26 | +enough to find out what MPTCP is, how to configure it, and/or to ask questions |
| 27 | +if something is not clear. That's a shame because attracting new users, |
| 28 | +generally also means new contributors (bug reports, fixes, features, etc.), and |
| 29 | +a better solution at the end. |
| 30 | + |
| 31 | +This situation is now changing thanks to the [NLnet |
| 32 | +project](https://nlnet.nl/project/MPTCP-deployability) I'm participating to, |
| 33 | +funded through [NGI0 Core](https://nlnet.nl/core). |
| 34 | + |
| 35 | +## New website |
| 36 | + |
| 37 | +[mptcp.dev](https://www.mptcp.dev) has been completely rewritten and published |
| 38 | +in April. |
| 39 | + |
| 40 | +Before, the documentation about MPTCP in the Linux kernel was available in |
| 41 | +different places: |
| 42 | +- [mptcp.dev](https://www.mptcp.dev) was a summary of the wiki page, and assumed |
| 43 | + people already knew about MPTCP -- see the previous version |
| 44 | + [here](https://github.com/multipath-tcp/mptcp.dev/blob/531801e/README.md). |
| 45 | +- The [wiki](https://github.com/multipath-tcp/mptcp_net-next/wiki) had some |
| 46 | + info, but it was also redirecting to info from different sources, including |
| 47 | + talks and articles, and out of date info -- see the previous version |
| 48 | + [here](https://github.com/multipath-tcp/mptcp_net-next/wiki/Home/34ba2883e2a30b15a149df94a941b446eb51e1d6). |
| 49 | +- The documentation attached to the kernel only contained info about the |
| 50 | + [MPTCP sysfs variables](https://docs.kernel.org/networking/mptcp-sysctl.html), |
| 51 | + and recently about the |
| 52 | + [`mptcp_pm` Netlink API](https://docs.kernel.org/networking/netlink_spec/mptcp_pm.html). |
| 53 | +- A [website](https://mptcp-apps.github.io/mptcp-doc/mptcp.html) has been |
| 54 | + initiated by the community, but never finished. |
| 55 | +- RedHat has [documentation](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/configuring_and_managing_networking/index#getting-started-with-multipath-tcp_configuring-and-managing-networking), |
| 56 | + but centred around RHEL. |
| 57 | + |
| 58 | +When helping Maxime Durov, Dorian Craps, and Olivier Bonaventure to add native |
| 59 | +MPTCP support to apps like |
| 60 | +[lighttpd](https://github.com/lighttpd/lighttpd1.4/pull/132) and |
| 61 | +[curl](https://github.com/curl/curl/pull/13278) as part of a project linked to |
| 62 | +the UCLouvain, we realized it was urgent to have a website dedicated to new |
| 63 | +users and apps developers, regrouping all required info about MPTCP, what it is, |
| 64 | +how to configure it, use it, and more. With their great help, the website has |
| 65 | +been updated, and announced on [social media](https://social.kernel.org/mptcp). |
| 66 | +It even appeared at the top of [Hacker News](https://news.ycombinator.com/), |
| 67 | +bringing thousands of visitors! So far, we got positive feedback: the new |
| 68 | +website seems to be answering questions from new users, and app developers, and |
| 69 | +even brought new contributors! |
| 70 | + |
| 71 | +## What's next? |
| 72 | + |
| 73 | +Various works have been started recently: adding missing features that are |
| 74 | +important for some apps and libs which want to support MPTCP natively, a new lib |
| 75 | +for MPTCP in Rust, a test service, adapting the packet scheduler API to support |
| 76 | +new use-cases, and improving some corner cases, etc. That's quite a bit of work |
| 77 | +in parallel, but that's coming "soon"! |
| 78 | + |
| 79 | +But before, it is also time to wrap up all new but mature enough features to |
| 80 | +send upstream for the inclusion in the future v6.10 version. It looks like we |
| 81 | +have up to the 2nd week of May to have them accepted in the 'net-next' tree. |
| 82 | +Check a [previous post]({% post_url 2024-03-04-backports %}) to know more about |
| 83 | +the kernel development cycle. |
| 84 | + |
| 85 | +## Team work |
| 86 | + |
| 87 | +As always, it is important to note that what I presented here so far is mostly |
| 88 | +what I was working on. But I'm not alone in this project. For example, Geliang |
| 89 | +finished supporting the 'last time' fields in `MPTCP_INFO`, and did some |
| 90 | +refactoring in the BPF selftests to reduce duplicated code ; Paolo fixed issues |
| 91 | +reported by Christoph thanks to SyzKaller ; Mat helped with the code and website |
| 92 | +reviews ; Gregory (new contributor!) is doing some experimentation with the |
| 93 | +packet scheduler API, and fixing bugs along the way ; Dorian and Maxime |
| 94 | +continued to add native MPTCP support in userspace apps. |
| 95 | + |
| 96 | +A great community! |
0 commit comments