You are reading content from Scuttlebutt
@mikey %5soBjMJs1oDmmQDm0ojBlGRdw8fUuk+3OxYI41ee+KQ=.sha256
Re: %eOgrGRIfP

TLDR: I'm a fan of kiss (no, not the band).

my approach already does this, in a more general way.

i'm going to ramble a bit, for my own sake and in case anyone finds this worthwhile, feel free to ignore. :blush:

so far i've learned simple systems are a balance of cohesion and decoupling. if you are too cohesive (i.e. a monolith), then to extend is expensive. if you are too decoupled (i.e. many micro-modules), then to glue is expensive.

i'm extremely guilty of being the one to implement the most general system possible. what i'm trying to learn is YAGNI, as in, to focus on the problem we're solving rather than potential future problems.

also, the Scuttlebutt project has been guilty of over-modularizing. we made a big mistake with using depject for everything in Patch{core, work, bay}. turns out, you should only use a pluggable module system for plugins, or functionality you want to be extended, not the core functionality.

yes it's true that the most minimal system doesn't need to include declarative plugin management, plugin introspection, etc; yes we could defer those bits to a plugin. but i think if we did bake that into core, where every plugin declared their "manifest" (i mean as a general concept of declarative plugin metadata, not as a muxrpc manifest), where the server started every plugin process using that information, and where then the server provided introspection, that would be less complex overall than the everything-is-a-plugin approach. as in, baking functionality into core (cohesion) means less glue. it's easier if the plugins don't have to worry about how to start themselves (and manage their process in case of failure), how to make sense of connecting to other plugins, etc.

the question is really: will the ability to declare, manage, and introspect plugins be a fundamental feature of our core system?

said another way, is it reasonable to expect that if we don't bake it in to core, we will include a core plugin for that feature.

not to mention, there's an upside to making plugins pay with declarative metadata, yes it is a more restrictive box but also the restrictions allow you to have more clarity of focus inside the box.

it's like that old saying, "bondage sets you free". :wink:

Join Scuttlebutt now