Because we are close to finishing core functionality it is time to think about features not all need. The best way to do this is to implement plugin system. The easiest way is to use Qt plugin system. But maybe Python plugins will be better idea.
For example this can be working with a cloud service, support DVCS, sterile files (not all need this feature), alternative layout generator. That’s what i see as a candidate to be moved to plugins.
Why do we need a plugin? We have the source code. Plugin or Extension capabilities are usually for 3rd parties to develop add-ons to a program. There’s no need for 3rd party development as this is open source. Why create more work by having to develop a plugin spec & interface? Want to add new functionality just build it into the program.
IMO, If it doesn’t fit within the program’s framework it should be a separate app anyways… where the program’s files specs are made public. Also I think it’s important to concentrate on what LibreFashion is suppose to do- and do it very well - and not water that down and try to be one tool that does everything - just ok.
I can see your point, but what plugins do is allow anyone to add a feature to a program without dealing with the entire project. There are a number of open-source projects that use plugins, and the list is growing all of the time. (GIMP, Libre/OpenOffice, Blender, Notepad++, WordPress, and Chromium spring immediately to mind.) It decreases the load on the main dev team while at the same time opens up the possibility of niche features -which would otherwise not be implemented- being available. …and that does allow our devs to ‘concentrate on what LibreFashion is supposed to do -and do it very well- and not water that down and try to be one tool that does everything’; they just need to focus on the core and let others create non-essentials. More to the point, some of those plugins will end up being so useful that they will be added to the core, just as in other projects.
One important consideration is that switching to supporting plugins will probably mean backing up and redoing a substantial amount of the code, as it is probably monolithic. (OTOH, plugins definitely foster a collaborative environment.) Fortunately, the idea of plugins/extensions has been around long enough that if you Google ‘plugin SDK’, you will find thousands of examples of ‘best practices’.
(For those who are feeling a little lost right now, here is a nontechnical explanation of how plugins can work in a project.)