On Fri, 27 Jun 2025 at 11:43, Daniel Sahlberg <daniel.l.sahlb...@gmail.com> wrote:
> Hi, > > I'm very happy to see the rekindled interest in Serf development and the > recent work by Brane on the user-defined-authn branch and by Graham on the > OpenSSL "certificate by URI" PR. I'm planning on reviewing those things > during the weekend. When these are merged (and it doesn't only depend on > me, it is of course a team effort reviewing and merging!) we should start > thinking about a new release. > > I don't think it makes sense to backport to 1.3 - they would add new APIs > that require a version bump. > > The existing 1.4.x branch was created in 2018 and received a few backports > the same year but it lacks significant work from trunk, for example > Evgeny's OpenSSL3 work in 2022 that led up to the release of 1.3.10. > > I'm proposing to drop the current 1.4.x branch and create a new one based > on trunk. Alternative option to drop 1.4.x completely and instead name the > new release 1.5. > > As far as I understand trunk contains a bunch of HTTP 2-work, but according > to Brane earlier on dev@ some is hidden behind #ifdefs that will only > expose it if released as Serf 2. Would it make sense to get this released > as well? In that case, should we instead aim for Serf 2.0? Alternative > option to remove the #ifdefs and declare it stable in Serf 1. I'd like to share an alternative perspective (my two cents) on this topic. In short, I believe there are strong, practical reasons to merge Serf directly into Subversion: 1. Based on publicly available information, Subversion is the only actual user of Serf. I checked major Linux distributions (Ubuntu, Debian, CentOS, OpenSUSE) and Subversion is consistently the only dependency listed for libserf: - Ubuntu: https://ubuntu.pkgs.org/25.04/ubuntu-universe-amd64/libserf-1-1_1.3.10-3ubuntu1_amd64.deb.html - Debian: https://debian.pkgs.org/12/debian-main-amd64/libserf-1-1_1.3.9-11_amd64.deb.html - CentOS: https://centos.pkgs.org/10-stream/centos-appstream-x86_64/libserf-1.3.10-7.el10.x86_64.rpm.html - OpenSUSE: https://opensuse.pkgs.org/15.6/opensuse-oss/libserf-1-1-1.3.9-150600.16.2.x86_64.rpm.html 2. Some popular package managers like Homebrew don't even offer libserf as a separate package, also indicating its lack of independent adoption. 3. While I appreciate Serf's internal design and implementation, I think there are no compelling reasons to choose it for a new project over alternatives like libcurl. For example, libcurl offers comprehensive support for: - Authentication types (SSPI, CRAM, SASL, OAuth2, Kerberos, etc.) - TLS implementations (OpenSSL, Schannel, BearSSL, GnuTLS, Mbed TLS, Rustls, wolfSSL) - Modern protocols (HTTP/2, HTTP/3) Serf's primary advantage, which I believe is in how it handles asynchronous multiplexing, doesn't appear to be a widely demanded feature for most users. 4. Subversion is already developing new features that rely on unreleased Serf APIs and capabilities. This demonstrates a deep interdependency between the two projects. 5. Almost all Serf committers are also Subversion committers. This means that the actual development community is shared, rather than diverse. 6. Merging Serf into Subversion would eliminate the need to reinvent various patterns in Serf, such as svn_error_t. This could allow reusing existing common primitives within Subversion. With these points in mind, merging Serf into Subversion could be a logical step. It would simplify new feature development, allowing more focus on features and less on API and build dependencies. -- Ivan Zhakov