Re: State of BDB FS backend

Branko Čibej <[email protected]> Fri, 24 Jul 2026 14:06:01 +0200
Newsgroups gmane.comp.version-control.subversion.devel
Organization The Apache Software Foundation
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------22GHdU23spjLQ062crLaw839
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 24. 7. 2026 13:57, Daniel Sahlberg wrote:
> Den fre 24 juli 2026 kl 13:30 skrev Branko Čibej <[email protected]>:
>
>     On 24. 7. 2026 13:23, Branko Čibej wrote:
>>     On 24. 7. 2026 13:20, Ivan Zhakov wrote:
>>>     On Sat, 18 Jul 2026 at 18:27, Nathan Hartman
>>>     <[email protected]> wrote:
>>>     > I'm glad there's a good bit of housecleaning going on around here.
>>>     > We've accumulated so much cruft over the years, it makes my
>>>     > head spin. +1 to axe the ctypes bindings.
>>>
>>>     Speaking of cleanups, another candidate comes to mind: the BDB
>>>     FS backend. I think now would be an appropriate time to remove it:
>>
>>
>>     We can't remove it before 2.0. It doesn't matter that it's
>>     deprecated, it's part of the published 1.0 feature set.
>
>
>     Just to be clear: the existence of the BDB back-end is equivalent
>     to a public API. We have many deprecated public APIs that we can't
>     remove for the same reason.
>
>     -- Brane
>
>
> This was discussed previously [1] and we even received a bug report 
> from FreeBSD that it doesn't work [2]. In the first link Yasuhito 
> Futatsuki was of the opposite opinion: the FS type is not a public 
> API. I tend to side with him but I could be convinced otherwise.
>
> As Yasuhito point out, SVN_FS_TYPE_BDB is a public API which we need 
> to keep. I didn't study details but I assume the code in 
> libsvn_fs_base only implement a filesystem API reachable via the fs 
> loader (this is way over my paygrade so please educate me if I 
> misunderstand something!). In that case, we won't break anyone's code 
> so anything that compiles under 1.14 will still compile under 1.16, 
> but it it would not be able to load the BDB FS backend (just as if you 
> didn't compile it in the first place).
>
> Of course - we would force anyone using a BDB backend to do a 
> dump-and-reload cycle as part of their upgrade.
>
> Provided my understanding above is correct, I'm in favour of removing BDB.


What do we do with older clients that link with libsvn_fs_base when a 
library upgrade makes that go away? At the very least we'd have to keep 
a stub that implements all exported functions, or we break the ABI.

In other words, even if we decide that removing BDB support isn't an API 
violation, we can't do this in 1.15 because it's not a trivial change of 
removing a directory and a couple lines from build.conf.

-- Brane

--------------22GHdU23spjLQ062crLaw839
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">On 24. 7. 2026 13:57, Daniel Sahlberg
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAMHy98NbSyzzA7kAYMaEUYdJCu+s3b1zNyuBsNfQ04MXh4YBGA@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div dir="ltr"><span style="background-color:transparent">Den
            fre 24 juli 2026 kl 13:30 skrev Branko Čibej &lt;<a
              href="mailto:[email protected]" moz-do-not-send="true"
              class="moz-txt-link-freetext">[email protected]</a>&gt;:</span></div>
        <div class="gmail_quote gmail_quote_container">
          <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
            <div>
              <div>On 24. 7. 2026 13:23, Branko Čibej wrote:<br>
              </div>
              <blockquote type="cite">
                <div>On 24. 7. 2026 13:20, Ivan Zhakov wrote:<br>
                </div>
                <blockquote type="cite">
                  <div dir="ltr">On Sat, 18 Jul 2026 at 18:27, Nathan
                    Hartman &lt;<a
                      href="mailto:[email protected]"
                      target="_blank" moz-do-not-send="true"
                      class="moz-txt-link-freetext">[email protected]</a>&gt;
                    wrote: <br>
                    &gt; I'm glad there's a good bit of housecleaning
                    going on around here.<br>
                    &gt; We've accumulated so much cruft over the years,
                    it makes my<br>
                    &gt; head spin. +1 to axe the ctypes bindings.<br>
                    <br>
                    Speaking of cleanups, another candidate comes to
                    mind: the BDB FS backend. I think now would be an
                    appropriate time to remove it:<br>
                  </div>
                </blockquote>
                <br>
                <br>
                We can't remove it before 2.0. It doesn't matter that
                it's deprecated, it's part of the published 1.0 feature
                set.<br>
              </blockquote>
              <br>
              <br>
              Just to be clear: the existence of the BDB back-end is
              equivalent to a public API. We have many deprecated public
              APIs that we can't remove for the same reason.<br>
              <br>
              -- Brane</div>
          </blockquote>
          <div><br>
          </div>
          <div>This was discussed previously [1] and we even received a
            bug report from FreeBSD that it doesn't work [2]. In the
            first link Yasuhito Futatsuki was of the opposite opinion:
            the FS type is not a public API. I tend to side with him but
            I could be convinced otherwise.</div>
          <div><br>
          </div>
          <div>As Yasuhito point out, <span
style="color:rgb(34,34,51);font-family:Selawk,Hack;font-size:13.3px;white-space:pre-line">SVN_FS_TYPE_BDB </span>is
            a public API which we need to keep. I didn't study details
            but I assume the code in libsvn_fs_base only implement a
            filesystem API reachable via the fs loader (this is way over
            my paygrade so please educate me if I misunderstand
            something!). <span style="background-color:transparent">In
              that case, we won't break anyone's code so anything that
              compiles under 1.14 will still compile under 1.16, but it
              it would not be able to load the BDB FS backend (just as
              if you didn't compile it in the first place).</span></div>
          <div><span style="background-color:transparent"><br>
            </span></div>
          <div><span style="background-color:transparent">Of course - we
              would force anyone using a BDB backend to do a
              dump-and-reload cycle as part of their upgrade.</span></div>
          <div><br>
          </div>
          <div>Provided my understanding above is correct, I'm in favour
            of removing BDB.</div>
        </div>
      </div>
    </blockquote>
    <br>
    <br>
    What do we do with older clients that link with libsvn_fs_base when
    a library upgrade makes that go away? At the very least we'd have to
    keep a stub that implements all exported functions, or we break the
    ABI.<br>
    <br>
    In other words, even if we decide that removing BDB support isn't an
    API violation, we can't do this in 1.15 because it's not a trivial
    change of removing a directory and a couple lines from build.conf.<br>
    <br>
    -- Brane<br>
    <br>
  </body>
</html>

--------------22GHdU23spjLQ062crLaw839--