This past year I have launched a WordPress SaaS product and as I have been adding features and adding to it I keep finding myself asking the same question. Should I build each feature as a separate plugin or group them together in larger plugins?
Based on feedback I received from a few people on Twitter earlier this year, I am under the impression that as long as everything is coded properly there is no performance benefit necessarily from either option. Functionality being the same as well, I am looking at this question purely from an organizational, ease of development, and project management perspective.
I determined early on that I didn’t want the entire product in a single plugin because it is hard to organize tasks and track the development of each feature. Right now, I have features grouped by common functionality. For example, I have one plugin that has all of my dashboard related features in it, such as modifying roles and capabilities, tweaking the editor, modifying image uploads, etc. As I start looking to integrate third-party plugins, such as Jetpack and Gravity Forms, into my product, I plan to make one plugin to house all code needed to integrate all third-party plugins.
Taking my current structure and breaking it down one step further, I could build each as a separate plugin. For example have individual plugins for roles and capabilities, the editor, the media library, Jetpack integration, Gravity Forms integration, etc. My gut tells me that this level of granularity would be overkill, but I keep asking myself the question.
With this post, I am hoping to gather feedback, recommendations and opinions from others in the WordPress development world on how they have, or would, approach this and why. While the product I am working on right now is fairly small, I expect it to grow to be quite large over the coming years and am trying to set myself up for the future and make long-term development and maintenance more efficient.
If you have a few minutes and wouldn’t mind leaving me your thoughts in the comments, I would greatly appreciate it. Thank you in advance!