I understood that breaking changes shouldn't go into a point release, but as I dived into the code in the last couple of months I saw a lot's of possibility where the code quality can be improved, which wont add any new shine feature, just helps the poor grumpy developers - like me - to understand what's happening around. I know, lot's of other people have contributed to this project for a very long time, so I would like to know what others think about the project, and what plans do you have ? Because there are lot's of independent development happens around, in plugins, or in custom forks, it's not easy to see what feature do we like to implement, what goals we like to reach.
Currently I have the following list in my head, which are worth considering :
- modularization (or mavenization too)- I know there were some experimental forks where it's implemented. What were the conclusions ? Is there some opposition against ? I think it would be beneficial if we can separate into modules the 'plugin interfaces', the 'core' (which handles the configuration, media library, the folder hierarchy), the 'renderer/player', the 'http server', the 'Swing UI', the 'windows/linux/osx specific code', and the 'plugins'
- migration to a distributed version control system - I'm sure this would help the life of the contributors, and plugin developers. Easy forking and merging streamline the development.
- I consider very bad style, when a class has public instance variables, I would like to eliminate all.
- for me it seems that the DNLAResource contains too much functionality, after my refactorings it still nearly 1500 lines, and have ~30 instance variables. And it still contains code like if (this instanceof RealFile) ..., which is the very opposite what 'object orientation' and good practice should mean, for me, at least So I like to refactor the code, to have a much simpler ancestor objects, which only defines the basic functionalities (like getChildren / discoverChildren / searchByID / etc ), and the descendant objects can add custom functionalities, and not need to suppress inherited functionalities.
- some media library functionality I consider is essential - I would like to see pms-mlx code merged, especially I like it's nice UI for managing the media hierarchy
- I would like to have a full featured http interface for managing the server, it would help the headless installation too.
Any other ideas, plans ? And contributors to help implement these ?
I don't want to force anyone to work on my plan in the next decade Just I want to know, that the other devs think. If noone is interested to cooperate, I will implement which I see it absolutly minimum for my peace of mind