The “too many projects” problem of PostgreSQL Cluster was raised and discussed in the PostgreSQL Clustering Developer Meeting at the JPUG Conference.
Nowadays, the PostgreSQL developer community has many clustering/replication projects, but many of them are not production ready. Though, new project is starting, and old project is still unmature.
I think this is one of the biggest challenges of the OpenSource development community.
Why happens this? How can we solve this, and get solutions mature?
What is the problem? And why happens this?
As Josh said, the problem is each project has only few users and few developers. Fewer users and developers make a project difficult to improve faster. So, many projects are not mature, and not ready for production use.
As I explained at the meeting, the most difficult challenge of PostgresForest development was not technical issue, but it was about the development process and the project sustainability.
I think there are three steps of this problem.
- There are several types of clustering requirements.
- PostgreSQL code is very clean, and making new “add-on” is very easy. So someone starts making a solution “XX”.
- But it does not fit other users use (because feature “YY” is missing), so he/she thinks "It’s time to make new one, called ZZ”.
Thinking about the Goal
I was working as a cluster developer, and also working as a cluster user to implement production systems.
From the user’s point of view, the “To-Be” of the clustering project is a manure clustering solution with enough technical information, which can solve your requirements. Also users will attempt to find other production users (or case studies), and some kind of supports (Q&A, fixing bugs, releasing new version).
These make a credibility of the solution, and the credibility makes more users.
How to solve this?
A conclusion of the meeting is sharing information about several solutions. Here is a new PostgreSQL cluster wiki page.
I think the information we should share is:
- Requirements (and/or use cases), which can be covered with the solution “XX”.
- Features, which are implemented, and/or will be implemented in the solution “XX”.
So if you are a cluster developer, please put information on the wiki page. (Of course, I should put my information.)