elastic / logstash

Logstash - transport and process your logs, events, or other data
https://www.elastic.co/products/logstash
Other
106 stars 3.51k forks source link

Plugins Manager in 5.X and beyond. #5575

Open ph opened 8 years ago

ph commented 8 years ago

We have implemented the plugin manager in logstash in 1.5 more than 2 years ago. With the java changes in the core and our future plan I think its a good time to discuss the state of plugin in logstash and how we handle the dependencies.

I want to see this as an open discussion, package manager / dependency are complex beast but it shouldn't stop us from talking.

First lets summarize the state of the plugins handling.

I understand the question are really open ended.

This was creating following a discussion @talevy and I had.

purbon commented 8 years ago

another example of odd behaviour is https://github.com/elastic/logstash/issues/5580, we should try harder to narrow down the sematic of upates as might be hard to grasp somehow. what do you think?

Paladin commented 8 years ago

If I can toss a few "blue sky" features, as the OP of 5580:

Necessary: whatever the system grows into, it should be able to provide an explanation of why it didn't do what was expected.

Useful: The system should be able to answer the question "What needs updating" at least as well as "gem outdated" does.

Ideal: feedback on what's getting installed and what's left to install. It's the kind of nicety a good UI provides for operations that can potentially take more than a few seconds, just to reassure the user that something is, in fact, getting done. It's not vital, which is why it's down here.

As for the open questions: From what I remember about java, there is no native dependency management system for an end user (all require dev tools like ant or maven to be installed in order to be useful) so the question of "what will it take to create one?" will probably be the major player in the first open question.

As for the second open question, it should be possible to parse the .gemspec file(s -- recursion for dependencies off the dependencies) to create a first pass at the shadow. My initial thought, however, is it's probably not worth it unless it's part of a move towards writing a completely new approach to installing/updating plugins from gems without bundler. IOW, possibly worth it if the future is Gems=yes and Bundler=no, but if either Gems=no or Bundler=yes, then not worth the candle.