While reviewing MDL-65047 it was detected that the subsystem (aka, a component) cron task was being added to the core component instead of the corresponding core_portfolio one. That means, in practice, that all those cron tasks are being added to /lib/classes/task instead of xxxx/classes/task, polluting the core namespace with stuff that, simply, shouldn't be there.
Everything works, yes... but the very same that it's cristal clear that plugins (and subplugins), both being components, have to be 100% self-contained... exactly the same should be applied to subsystem components as much as possible.
This doesn't apply only to tasks but to every other (ab)use of the core namespace by any component (subsystem, plugin or subplugin).
Known exceptions being:
1) subsystems without a base dir.
2) events, when it was (maybe wrongly) decided that we were going to add all events to core.
Other than that, we should aim (IMO) to achieve as much "self-containing" as possible.
Open for discussion, just creating this to have a start point to proceed.
Ciao