Plug-in based software design
- by gekod
I'm a software developer who is willing to improve his software design skills. I think software should not only work but have a solid and elegant design too to be reusable and extensive to later purposes.
Now I'm in search of some help figuring out good practices for specific problems.
Actually, I'm trying to find out how to design a piece of software that would be extensible via plug-ins.
The questions I have are the following:
Should plug-ins be able to access each others functionality? This would bring dependencies I guess.
What should the main application offer to the plug-ins if I want to let's say develop a multimedia software which would play videos and music but which could later on get functionality added over plug-ins that would let's say be able to read video status (time, bps, ...) and display it. Would this mean that the player itself would have to be part of the main program and offer services to plug-ins to get such information or would there be a way to develop the player as a plug-in also but offer in some way the possibility to other plug-ins to interact with it?
As you see, my questions are mainly for learning purposes as I strive to improve my software development skills.
I hope to find help here and apologize if something is wrong with my question.