powerdns-admin/docs/announcements/project-update-2023-11-25.md

8.3 KiB

PDA Project Update

Introduction

Hello PDA community members,

I know it has been quite awhile since the last formal announcement like this. Things have been quite busy and difficult for me both professional and personally. While I try hard to never make my problems someone else's problems, I do believe it's important to be transparent with the community. I'm not going to go into details, but I will say that I have been dealing with some mental health issues that have been quite challenging. I'm not one to give up though, so I'm pushing through and trying to get back on track.

With that being said, let's jump into the announcements.

Project Maintenance

Granted I haven't been nearly as active on the project as I would like to be, I have been keeping an eye on things and trying to keep up with the maintenance. I know there are a lot of issues and feature requests that have been piling up, and I'm sorry for that. Even if I had been more active in recent months, it would have not changed the true root cause of the issue.

This project was started out of a need for an individual's own use-case. I don't believe it was never intended to be a commercial quality product nor a community project. It did however gain traction quickly and the community grew. This is a great thing, but it also comes with some challenges. The biggest challenge is that the project was never designed to be a community project. This means that the project lacks many of the things that are required to effectively manage a community project. This is not to say that the project is doomed, but many of the fast-paced changes combined with the lack of standards has lead to a difficult situation that makes implementing certain changes incredibly unproductive and quite often, entirely counter-productive.

After many years of accepting contributions from those who are not professional developers, the project has become quite difficult to maintain. This is not to say that I don't appreciate the contributions, but it's important to understand that the state of the code-base for the project is not in a good place. This is not uncommon with projects born how PDA was born, so it's unfortunate but not unexpected.

As of today, there are so many dependencies and a large amount of very poorly implemented features that it's difficult to make any changes without breaking many other pieces. This is further complicated by the fact that the current code base is harder to follow naturally since it largely lacks uniformity and standards. This lack of uniformity has lead to a situation where automated regression testing is not possible. This is a very important aspect of any project that expects to be able to make changes without breaking things. This is also a very important aspect of any project that expects to be able to accept contributions from the community with minimum management resources.

The hard reality is that the majority of stakeholders in the project are not professional developers. This naturally means the amount of people that can offer quality contributions is very limited. This problem is further aggravated by the poor quality feature implementation which is very hard to follow, even for seasoned developers like myself. So many seemingly small issues that have been reported, have lead to finding that the resolution is not as simple as it seems.

New Direction

As I previously stated in my last formal announcement, we would be working towards a total replacement of the project. Unfortunately, this is not a simple task, and it's not something that can be done quickly. Furthermore, with increasingly limited capacity in our own lives to work on this, we are essentially drowning in a sea of technical debt created by the past decisions of the project to accept all contributions. We have essentially reached a point where far too much time and resources are being wasted just to attempt to meet the current demand of requests on the current edition of PDA. This is a tragedy because the efforts that are invested into the current edition, really aren't creating true progress for the project, but instead merely delaying the inevitable.

As I have stated before to many community members, one aspect of taking over management of this project to ultimately save it and keep it alive, would involve making hard decisions that many will not agree with. It's unfortunate that many of those who are less than supportive of these decisions, often lack the appropriate experience to understand the importance of these decisions. I'm not saying that I'm always right, but I am saying that it's not hard to see where this is headed without some drastic changes.

With all of that being said, it's time for me to make some hard decisions. I have decided that the best course of action is to stop accepting contributions to the current edition of PDA. At this point, due to the aforementioned issues that lead to breaking the application with seemingly simple changes, it's just not worth the effort to try to keep up with the current edition. This is not to say that I'm giving up on the project, but instead I'm going to re-focus my efforts on the new edition of PDA. This is the only way to ensure that the project will survive and hopefully thrive in the future.

I will not abandon the current set of updates that were planned for the next release of 0.4.2 however. I have re-scheduled that release to be out by the end of the year. This will be the last release of the current edition of PDA. The consensus from some users is that the current edition is stable enough to be used in production environments. I don't necessarily agree with that, but I do believe that it's stable enough to be used in production environments with the understanding that it's not a commercial quality product.

Future Contributions

For those of you wondering about contributions to the new edition of PDA, the answer for now is simple. I won't be accepting any contributions to the new edition until I can achieve a stable release that delivers the core features of the current edition. This is not to say that I won't be accepting any contributions at all, but instead that I will be very selective about what contributions I accept. I believe this is the only way to ensure that a solid foundation not only takes shape, but remains solid.

It is well understood that many developers have their own ways of doing things, but it's important to understand that this project is not a personal project. This project is a community project and therefore must be treated as such. This means that the project must be engineered in a way that allows for the community to participate in the development process. This is not possible if the project is not engineered in a way that is easy to follow and understand.

Project Enhancements

It should be understood that one of the greatest benefits of this pivot is that it will allow for a more structured development process. As a result of that, the project could potentially see a future where it adopts a whole new set of features that weren't previously imagined. One prime example of this could be integration with registrar APIs. This could make easy work of tasks such as DNSSEC key rotation, which is currently a very manual process.

I am still working on final project requirements for additional phases of the new PDA edition, but these additions won't receive any attention until the core features are implemented. I will be sure to make announcements as these requirements are finalized. It is my intention to follow a request for proposal (RFP) process for these additional features. This will allow the community to participate in the decision-making process for future expansion of the project.

Closing

I hope that by the time you have reached this point in the announcement, that I have elicited new hope for the long-term future of the project. I know that many of you have been waiting for a long time for some of the features that have been requested. I know that many of you have been waiting for a long time for some of the issues to be resolved, for requested features to be implemented, and for the project to be more stable. It's unfortunate that it has taken this long to get to this point, but this is the nature of life itself. I hope that you can understand that this is the only reasonable gamble that the project survives and thrives in the future.