Please let me use this topic to share some ideas I have/had that could help improving the ISPConfig development/workflow and the ISPConfig software quality in general.
I'm totally aware of the fact that most of the following tips are rather radical, e.g. you are a fan of this-way or you aren't...that's fine. It might then however still be good to see what could be done (regardless if it's useful in your view).
1. Refactor Releases
Refactor releases are meant to clean up code, e.g. improve the code quality. Refactor releases will never add new functionality or focus on bug fixing - the goal is just to improve existing code and make it easier, more reusable etc.
Since the release cycle of ISPConfig is rather slow (which is good) I would recommend to make every 3th or 4th release a refactor release. This may feel like lost time, but it isn't. In the end it can safe a lot of further work/time when refactoring often and good.
What would be typical refactoring works:
2. Testing / CI Builds
- complete phpDoc
- apply global coding standard (e.g. CheckStyle)
- try to remove duplicate content by better organizing the code
- write tests for things that don't have any..
As far as I've seen ISPConfig has no tests (unit tests etc.). I know writing tests is pure pain and it does work without - but it would for sure be better to have test integration.
Why are tests so good?
As more and more people work on the code, chances are big that updating one part (e.g. fixing a bug there) may lead to other bugs in other parts of the software. Without tests, it's hard to detect such problems.
But imagine you could run the test suite and see: "Ah, I've destroyed something over there...bad me". That would be great, wouldn't it?
Tests could then be run e.g. nightly on a CI server.
3. API focused
A lot software projects (Gitlab to name one) built there web interfaces around the software's API. That way, there is one central "core" (the API) that needs to be updated (and is always the most up-to-data version (where the API gets often forgotten elsewhere)). This allows great flexibility...but please read more about this concept yourself as this one is absolutely a radical one.
There might of course be more such guides/ideas that could improve ISPConfig - but that are the ones that came to my mind. Please add your's as well if you have any.
PS: This topic is not about critic, telling something is bad or something other negative. It's just about
: "Hey, wouldn't this be a good idea to further improve the development process?"
& love to hear what you think