Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u4pZF-007uKG-5X for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Apr 2025 23:19:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u4pZC-001Gwl-Gn for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Apr 2025 23:19:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u4pZC-001Gwd-6b for pgsql-hackers@lists.postgresql.org; Tue, 15 Apr 2025 23:19:47 +0000 Received: from sss.pgh.pa.us ([68.162.161.243]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1u4pZ9-000IIQ-2w for pgsql-hackers@lists.postgresql.org; Tue, 15 Apr 2025 23:19:46 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.15.2/8.15.2) with ESMTP id 53FNJgNN1798839; Tue, 15 Apr 2025 19:19:42 -0400 From: Tom Lane To: Konstantin Osipov cc: Greg Sabino Mullane , Nikolay Samokhvalov , pgsql-hackers@lists.postgresql.org Subject: Re: Built-in Raft replication In-reply-to: References: Comments: In-reply-to Nikolay Samokhvalov message dated "Tue, 15 Apr 2025 15:27:56 -0700" MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <1798837.1744759182.1@sss.pgh.pa.us> Date: Tue, 15 Apr 2025 19:19:42 -0400 Message-ID: <1798838.1744759182@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Nikolay Samokhvalov writes: > This is exactly what I wanted to write as well. The idea is great. At the > same time, I think, consensus on many decisions will be extremely hard to > reach, so this project has a high risk of being very long. Unless it's an > extension, at least in the beginning. Yeah. The two questions you'd have to get past to get this into PG core are: 1. Why can't it be an extension? (You claimed it would work more seamlessly in core, but I don't think you've made a proven case.) 2. Why depend on Raft rather than some other project? Longtime PG developers are going to be particularly hard on point 2, because we have a track record now of outliving outside projects that we thought we could rely on. One example here is the Snowball stemmer; while its upstream isn't quite dead, it's twitching only feebly, and seems to have a bus factor of 1. Another example is the Spencer regex engine; we thought we could depend on Tcl to be the upstream for that, but for a decade or more they've acted as though *we* are the upstream. And then there's libxml2. And uuid-ossp. And autoconf. And various documentation toolchains. Need I go on? The great advantage of implementing an outside dependency in an extension is that if the depended-on project dies, we can say a few words of mourning and move on. It's a lot harder to walk away from in-core features. regards, tom lane