Hi, Personally, I had no specific need in mind for foundationdb to address, I'm well served by the current storage atop ZFS, so I mostly see downsides in adding any storage that adds new restrictions, non-portable dependencies, or puts groups of features into silos. I.e. foundationdb's requirement for avx was a headache for me as I have some older x86 as well as Arm, where avx2neon seemed experimental. Several host local DBs like RocksDB and Sqlite seem like they might provide a modest benefit while less likely to create a split somewhere between anyone using couch for embedded, anyone building a modest cluster and anyone building a full scale cloud DB service. So if there is an interest in continuing to develop an alternative to the current storage, I would prefer investigations into the benefits of a direct/local RocksDB storage engine rather than having a portion of the community invest more time into continuing a CouchDB-FDB project.
-Will Am Mo., 14. März 2022 um 12:19 Uhr schrieb Robert Newson <rnew...@apache.org>: > > Hi, > > That already happened. “Pluggable storage engine” was introduced in 2016 > (https://github.com/apache/couchdb/commit/f6a771147ba488f80a7d29491263d19088d0eefb). > > No alternative backends have yet been contributed. > > B. > > > On 13 Mar 2022, at 16:27, Chintan Mishra from Rebhu <chin...@rebhu.com> > > wrote: > > > > As a user, my team and I were keenly looking forward to CouchDB v4 with > > FoundationDB. > > > > Given the current situation, it is only reasonable to come up with a best > > alternative. > > > > How about refactoring CouchDB to work with multiple storage engines? > > > > The default CouchDB will support whatever the PMC agrees upon. Whereas the > > community can tinker with different backend storage engines. So, the > > FoundationDB can be one of the backing engines that get used with CouchDB. > > Other storage engines can be RocksDB, Apache Derby, etc. > > > > Thank you. > > > > -- > > Chintan Mishra > > > > On 13/03/22 17:09, Robert Newson wrote: > >> Thank you for this feedback. > >> I think it’s reasonable to worry about tying CouchDB to FoundationDB for > >> some of the reasons you mentioned, but not all of them. We did worry, at > >> the start, at the lack of a governance policy around FoundationDB; > >> something that would help ensure the project is not beholden to a single > >> corporate entity that might abandon the project or take it in places that > >> make it unsuitable for CouchDB in the future. There hasn’t been much > >> progress on that, but likewise the project has stayed true to form. > >> CouchDB is critically dependent on Erlang/OTP, among other components, > >> which similarly lack the kind of governance or oversight that Apache > >> projects themselves work within. At no point have I feared the "project > >> will end up in FoundationDB integrating CouchDB rather than the other way > >> around”. FoundationDB is not a database, it is explicitly only > >> foundational support to build databases on top of. > >> "If even you guys weren't treated as a priority, I doubt that my feature > >> requests and other input will matter even one bit as a user.” - I’m not > >> sure who you refer to with “you guys”, but I remind everyone that the > >> CouchDB contributors from IBM Cloudant are the main contributors to > >> CouchDB 2.0 and 3.0, have been so for years and are in, many cases, either > >> CouchDB committers or PMC members. They are “us” as much as any other > >> contributor. That the Cloudant team has moved focus from CouchDB 4.0 (as > >> it would have been) to 3.0 is a re-establishment of the status quo ante. > >> "I doubt that my feature requests and other input will matter even one bit > >> as a user.” — I strongly disagree here. Community contributions are hugely > >> valuable and valued, the rewrite of the lower layers of CouchDB would not > >> have changed that significantly. CouchDB-FDB is still written in Erlang, > >> the http layer is largely the same code as before. The parts that interact > >> with FoundationDB are confined to a single library application (erlfdb) > >> which exposes the C language bindings as Erlang functions and data > >> structures. Unless you are working at that level you can mostly ignore it. > >> Finally, while I don’t think we’ve explicitly described it this way, > >> CouchDB-FDB effectively _is_ a “layer” on top of FDB in the same sense > >> that their “document layer” (which is mongo-like) is. > >> B. > >>> On 13 Mar 2022, at 11:17, Reddy B. <redd...@live.fr> wrote: > >>> > >>> Hello! > >>> > >>> Thanks a lot for this update and overview of the situation. As users (our > >>> company has been using couchdb since 2015 circa as the main database of > >>> our 3 tier web apps), I feel it may be preferable to move the couchdb-fdb > >>> work to a separate project having a different name. As Janh has > >>> mentioned, the internals and daily management of FDB may with certain > >>> regards be at odds with the philosophy and user experience that couchdb > >>> wants to provide. > >>> > >>> Moving this effort to a different project would give people interested in > >>> this effort more flexibility to introduce breaking changes and > >>> limitations taking full advantage of the philosophy of FDB. I feel the > >>> idea that: if you have outscaled CouchDB, move to couchdb-fdb (or > >>> another more specialized DB) is the right idea. Couchdb-fdb advantage > >>> compared to alternative would simply be that it implements both the > >>> replication protocol and the HTTP API. > >>> > >>> This project may/should even "simply" become something under the umbrella > >>> of the FoundationDB layer similar to the MongoDB-compatible document > >>> layer of FoundationDB [1]. > >>> > >>> And this fact is also the cause of the unease I personally have this > >>> FoundationDB migration: it looks like CouchDB will have much less control > >>> over its destiny and even philosophy. This is different from say an > >>> encrypted messaging app deciding to replace its home-made encryption with > >>> an established and more robust open-source solution. From day 1, I feel > >>> like this project will end up in FoundationDB integrating CouchDB rather > >>> than the other way around. I even suspected that maybe the dev team was > >>> no longer interested in CouchDB and wanted to find it a new home. > >>> > >>> My friendly feedback as a user is that I trust the Apache governance > >>> model much more than I trust Apple, especially when the welcome meal they > >>> have offer me is that features will be removed and limitations > >>> introduced. The political background and what I would call "corporate > >>> risk" (key capabilities not implemented by upstream, change in priority > >>> or vision, difficulty to affect the roadmap of upstream etc...), is also > >>> a key factor when choosing a DB solution as a user. > >>> > >>> If even you guys weren't treated as a priority, I doubt that my feature > >>> requests and other input will matter even one bit as a user. And I would > >>> have zero chance of having the expertize required to modify the FDB core > >>> myself and get my changes approved to make my CouchDB Layer- related > >>> request possible. While right now I get can get my hands dirty and > >>> eventually get something done if I really want to. The governance here is > >>> very friendly, welcoming and inspiring trust. > >>> > >>> So to summarize, I feel that to realize the full potential of this vision > >>> rather than settling on compromises not satisfying anyone, it may be > >>> better to treat it as a separate project and let CouchDB remain CouchDB. > >>> I also feel that the project would lose too much control and sovereignty > >>> with such a migration, especially in light of the facts reported. > >>> > >>> The scaling challenges and limitations that motivated this effort may > >>> probably be addressed differently with a fresh outlook. For example, > >>> nowadays, there are even application-level middleware libraries like > >>> Microsoft Orleans being able to coordinate ACID distributed transactions > >>> from the application layer. My point is, challenges may be able to be > >>> overcome overtime by approaching things in a creative manner. > >>> > >>> Users may be able to workaround some of them by adjusting the topology of > >>> their clusters (using single writer, huge single node with distributed > >>> file systems etc...), for other challenges application-layer solutions > >>> may exist, or the solution may simply be shipping extremely user friendly > >>> graphical management tools making for example things such as conflict > >>> resolution a breeze for the admin. > >>> > >>> My 2 cents > >>> > >>> [1]: https://github.com/FoundationDB/fdb-document-layer > >>> > >>> > >>> > >>> 12 mars 2022 10:26:35 Jan Lehnardt <j...@apache.org>: > >>> > >>>> Thanks Bob for passing this along. > >>>> > >>>> I’m looking forward to renewed interest in the 3.x codebase :) > >>>> > >>>> For our 4.x plans, we’ll have to discuss here what we want to do with it > >>>> and I’m looking at everyone for input here. Even if you’ve never spoken > >>>> up on this list before, I’d lie to hear from you. > >>>> > >>>> * * * > >>>> > >>>> First off, as a project, CouchDB is not obliged to follow IBMs lead and > >>>> abandon the FDB-CouchDB effort. At the same time, it is not obliged to > >>>> take what they leave behind and finish it. > >>>> > >>>> I know for some the 4.x release is highly anticipated and we as a > >>>> project hoped to make a generational jump for our underlying storage and > >>>> distribution technologies. During initial discussions about FDB-Couch > >>>> and during its development, we anticipated certain developments on the > >>>> FDB side (especially allowing longer transactions for consistent > >>>> _changes responses with their new Redwood storage engine). It is my > >>>> understanding that these developments have not materialised in the way > >>>> we would like them. The consequence is that there are certain API > >>>> guarantees that 3.x CouchDB gives (consistent full-database snapshots in > >>>> _changes) are not possible to build with native FDB features. — I can’t > >>>> speak to the very specifics of this, and I hope we can dig into all this > >>>> together in this thread, but my takeaway from this is that *if* we > >>>> continue with FDB-Couch, I think we will have to reevaluate its > >>>> compatibility story, as we had hoped to make it mainly a seamless (but > >>>> better) API upgrade from 3.x. > >>>> > >>>> We also learned that operating a FDB cluster is a significant effort > >>>> that somewhat goes against CouchDB’s mostly “just works” nature. We had > >>>> asked the IBM team to share their operational FDB learnings with the > >>>> CoucHDB project, so we can build up community knowledge around this, but > >>>> this has not materialised either. > >>>> > >>>> I’m personally still excited about the opportunities we have with > >>>> FDB-Couch, but as a project, we might have to come up with a more > >>>> realistic positioning of FDB-CouchDB. Less a “new and improved drop-in > >>>> replacement” and maybe more a “if you exceed the scale/capacity of 3.x > >>>> CouchDB, you can upgrade to FDB-CouchDB at the expense of a few API > >>>> differences and higher operational cost”. This might be worth a > >>>> trade-off for large users of CouchDB and thus it might be worth having > >>>> both of these codebases live alongside each other. > >>>> > >>>> However, that comes with a number of consequences: > >>>> > >>>> - The 3.x/4.x naming doesn’t quite work if these are meant to continue > >>>> alongside each other. > >>>> > >>>> - Maybe FDB-Couch gets its own separate project name and versioning, > >>>> with a clear delineation between them. > >>>> > >>>> - We would have to maintain two projects complete with release > >>>> management, vulnerability management, the lot. At the moment, CouchDB > >>>> has just about enough folks contributing to move forward at a reasonable > >>>> pace. Doubling that effort might be tricky. While we had an influx of > >>>> contributors recently, this would probably need more dedicated planning > >>>> and outreach. > >>>> > >>>> - New API features would have to be implemented twice, if we want to > >>>> keep a majority API overlap. This is not a fun proposition for folks who > >>>> add features, which is hard enough, but now they have to do it twice, > >>>> onto two different subsystems. Some features (say > >>>> multi-doc-transactions) would only be possible in one of the projects > >>>> (FDB-Couch), what would our policy be for deliberate API feature > >>>> divergence? > >>>> > >>>> - probably more that elude me at the moment. > >>>> > >>>> While there are non-trivial points among these, they are not impossible > >>>> tasks *if* we find enough and the right folks to carry the work forward. > >>>> > >>>> * * * > >>>> > >>>> For myself, I still see a lot of potential in the 3.x codebase and I’m > >>>> looking forward to renewed roadmap discussions there. I know I have a > >>>> long list of things I’d like to see added. > >>>> > >>>> From my professional observation, the thing that our (Neighbourhoodie) > >>>> customers tend to run into the most is the scaling limits of the > >>>> database-per-user pattern. We have a proposal for per-doc-authentication > >>>> that helps mitigate a subset of those use-cases, which would be a great > >>>> help overall. I have worked on a draft PR of this over the years, but it > >>>> mostly stalled out during the pandemic. I’m planning to restart work on > >>>> this shortly. If anyone wants to contribute with time and/or money, > >>>> please do get in touch. > >>>> > >>>> The other major issue with 3.x as reported by IBM is _changes feed > >>>> rewinds when nodes are rotated in and out of clusters. We already fixed > >>>> a number of changes rewind bugs relatively recently. I don’t know if we > >>>> got them all now, or if there are theoretical limits to how far we can > >>>> take this given our consistency model, but it’d be worth spending some > >>>> time on at least getting rid of all rewind-to-zero cases. > >>>> > >>>> * * * > >>>> > >>>> I’m also looking forward to all your input on the discussion here. I’m > >>>> sure this will explode into a lot of detailed discussions quickly, so > >>>> maybe as a guide to come back to when get closer to having to make a > >>>> decision, here are three ways forward that I see: > >>>> > >>>> 1. Follow IBM in abandoning FDB-Couch, refocus all effort on > >>>> Erlang-Couch (3.x). > >>>> > >>>> 2. Take FDB-Couch development over fully, come up with a story for how > >>>> FDB-Couch and Erlang-Couch can coexist and when users should choose > >>>> which one. > >>>> > >>>> 3. Hand over the FDB-Couch codebase to an independent team that then can > >>>> do what they like with it (if this materialises from this discussion). > >>>> > >>>> * * * > >>>> > >>>> Best > >>>> Jan > >>>> — > >>>> > >>>> > >>>>> On 10. Mar 2022, at 17:24, Robert Newson <rnew...@apache.org> wrote: > >>>>> > >>>>> Hi, > >>>>> > >>>>> For those that are following closely, and particularly those that build > >>>>> or use CouchDB from our git repo, you'll be aware that CouchDB embarked > >>>>> on an attempt to build a next-generation version of CouchDB using the > >>>>> FoundationDB database engine as its new base. > >>>>> > >>>>> The principal sponsors of this work, the Cloudant team at IBM, have > >>>>> informed us that, unfortunately, they will not be continuing to fund > >>>>> the development of this version and are refocusing their efforts on > >>>>> CouchDB 3.x. > >>>>> > >>>>> Cloudant developers will continue to contribute as they always have > >>>>> done and the CouchDB PMC thanks them for their efforts. > >>>>> > >>>>> As the Project Management Committee for the CouchDB project, we are now > >>>>> asking the developer community how we’d like to proceed in light of > >>>>> this new information. > >>>>> > >>>>> Regards, > >>>>> Robert Newson > >>>>> Apache CouchDB PMC > >>>>> >