Multiple Small Plugins vs 1 Large Core?

Status
This thread has been locked.

VapingPenguin

Der Führer
Premium
Feedback score
3
Posts
221
Reactions
86
Resources
0
I've always heard this debate but haven't really gotten an answer on it.

Is it easier and better to have 1 large core of features rather than separating those into multiple smaller plugins, examples can be faction cores with misc features.

To me it just seems easier to have multiple smaller plugins as it may make it easier to diagnose problems relating to lag since it isn't all combined into one.

This also makes it easier to take out certain plugins that are causing issues so that you can test privately, off the live server.

However, I have no development experience, just experience within diagnosing lag related server issues.
 
PebbleHost
High performance, consistent uptime and fast support. Minecraft hosting that just works.

Ally

gσ∂∂єѕѕ σƒ мαтнѕ αη∂ мєℓσηѕ χσ
Supreme
Feedback score
37
Posts
2,043
Reactions
2,194
Resources
0
To me it just seems easier to have multiple smaller plugins as it may make it easier to diagnose problems relating to lag since it isn't all combined into one.
This would be exactly my line of thinking. It's why you don't put multiple projects into a single executable (in the case of general development) and keep them spread out across DLLs and other libraries. However there are probably inherent advantages such as accessibility and the manipulation of certain Minecraft mechanics.
 

Polarbears

Supreme
Feedback score
2
Posts
596
Reactions
241
Resources
0
I always felt like as a Server Owner it's always nice to have a well developed core. Simply, it helps with staying organized and consistent. There is no need to jump between plugins to find out the permission nodes or configuration files. BUT if you are using one main core type plugin, it must be well done to replace the smaller ones.
 

VapingPenguin

Der Führer
Premium
Feedback score
3
Posts
221
Reactions
86
Resources
0
I always felt like as a Server Owner it's always nice to have a well developed core. Simply, it helps with staying organized and consistent. There is no need to jump between plugins to find out the permission nodes or configuration files. BUT if you are using one main core type plugin, it must be well done to replace the smaller ones.
While yes it can help with being organized, when exposed to a live large player count and a part of the core has a memory leak for example, it's simply impossible to fix this issue on the fly without removing the core and stripping all content within, where as if it's separated you can simply remove that plugin, same issue with diagnosing lag.

I think the issue is substantially different if you are talking about a casual server to a high populated server that's been invested in.
 

MyNameIsAres

Software developer && computer assembler.
Supreme
Feedback score
5
Posts
183
Reactions
104
Resources
0
There is no standard answer for this because the motivation behind software architecture can be found in different aspects of an organization (or server). It depends how you want to connect different features and components of your server. Are you connecting player information from a quest plugin and updating that players custom rank? Are you maintaining that information in a database?

It depends on the situation and there are many different approaches. A ''core'' plugin can be interpreted and utilized differently by servers and developers.
A core could be a single plugin. It is also logical to assume in software development that a core is a collection of plugins (packages, modules) bundled together.

In many situations it isn't desirable to have everything in one plugin. Should something fail, the other components of that plugin (or core) could be affected; rendering your plugin useless and possible lead to an unplayable server. This can be prevented by good, clean architecture.

An example:
A ''core'' plugin could (or would) lay the foundations of your server. It would contain standard features to make the server playable. It could (or would) also allow other plugins to be connected and share data (this is optional). It could also do something entirely different. Again, this all depends on a N amount of factors.

Independent features that can be sandboxed or run and (or) fail independently of other plugins without affecting the playability of the server could (or should) be its own plugin, but can be connected through API's to share relevant.

Most plugins have this default behavior already. If my quest plugin connecting to my custom rank plugin should fail, it doesn't mean the custom rank system is now unusable.

In this scenario however the core and other plugins should be scalable to allow for changes in the organization to have little consequences on the server, player experience, performance, etc.

========
That is just one example out of many. However I do believe most developers would agree that scalability is important in designing a clean architecture for your plugins in most situations.

This is just my two cents and humble opinion.
 
Last edited:

VapingPenguin

Der Führer
Premium
Feedback score
3
Posts
221
Reactions
86
Resources
0
There is no standard answer for this because the motivation behind software architecture can be found in different aspects of an organization (or server). It depends how you want to connect different features and components of your server. Are you connecting player information from a quest plugin and updating that players custom rank? Are you maintaining that information in a database?

It depends on the situation and there are many different approaches. A ''core'' plugin can be interpreted and utilized differently by servers and developers.
A core could be a single plugin. It is also logical to assume in software development that a core is a collection of plugins (packages, modules) bundled together.

In many situations it isn't desirable to have everything in one plugin. Should something fail, the other components of that plugin (or core) could be affected; rendering your plugin useless and possible lead to an unplayable server. This can be prevented by good, clean architecture.

An example:
A ''core'' plugin could (or would) lay the foundations of your server. It would contain standard features to make the server playable. It could (or would) also allow other plugins to be connected and share data (this is optional). It could also do something entirely different. Again, this all depends on a N amount of factors.

Independent features that can be sandboxed or run and (or) fail independently of other plugins without affecting the playability of the server could (or should) be its own plugin, but can be connected through API's to share relevant.

Most plugins have this default behavior already. If my quest plugin connecting to my custom rank plugin should fail, it doesn't mean the custom rank system is now unusable.

In this scenario however the core and other plugins should be scalable to allow for changes in the organization to have little consequences on the server, player experience, performance, etc.

========
That is just one example out of many. However I do believe most developers would agree that scalability is important in designing a clean architecture for your plugins in most situations.

This is just my two cents and humble opinion.
Appreciate the incite, pretty much all I was looking for.
 

Orf

Premium
Feedback score
0
Posts
5
Reactions
4
Resources
0
Its always to have many small plugins instead of one large plugin UNLESS the large plugin lets you enable and disable all of the features individually
 
Status
This thread has been locked.
Top