Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove obsolete warning from README #678

Closed
wants to merge 1 commit into from
Closed

Conversation

perlun
Copy link

@perlun perlun commented May 29, 2017

This is a fresh new try on #595. (I wondered about the reasons when reading that sentence in the README, and started looking through the issues/PRs mentioning the subject)

Credits to @panozzaj who did the original PR. @conf has also contributed to the discussion.

This is a fresh new try on ddollar#595. (I wondered about the reasons when reading that sentence in the README, and started looking through the issues/PRs mentioning the subject)

Credits to @panozzaj who did the original PR. @conf has also contributed to the discussion.
Copy link

@conf conf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@ddollar
Copy link
Owner

ddollar commented Jun 18, 2018

The warning still stands. Foreman has its own dependencies and they should be independent from the dependencies of your project (thor is the main one that usually comes to mind)

@ddollar ddollar closed this Jun 18, 2018
@perlun
Copy link
Author

perlun commented Jun 18, 2018

Thanks for the feedback @ddollar

The warning still stands. Foreman has its own dependencies and they should be independent from the dependencies of your project (thor is the main one that usually comes to mind)

I'm sorry, but I fail to see your point here. If a project likes to add foreman and its dependencies (like thor and others), why is this such a big problem? And in what way does it differ from any other Rubygem? You add a dependency, leaf dependencies get added to the dependency graph. That's pretty much how the ecosystem works, and while I do agree that an excessive dependency graph certainly has its flaws, I don't think that such strong language as is in the README.md right now is warranted.

If you have strong feelings about this (which is perfectly fine), it would be great to get some of these thoughts into the documentation, to avoid me and others suggesting this change over and over again. Right?

Maybe something "Please don't add foreman to your project's Gemfile, because of X, Y and Z". It doesn't have to be long, as long as it's intelligible.

As you wrote in #573:

Please install foreman at the system level and use it as a general development tool. Getting it into the mix of your dependencies in your Gemfile is unsupported.

Sure, "unsupported" in a Microsoft/Apple sense of the word. But it works perfectly fine for many of us, and judging by the number of "thumbs up" on the "can you explain why?" question posted in that thread, I'm not the only one who does not understand this.

Sorry to be bugging you about this. It's just that foremans sentiment about this is radically different to practically all other gems I know of. That's why me and I think also some of the others react to this.

@ddollar
Copy link
Owner

ddollar commented Jun 18, 2018

why is this such a big problem?

Because Ruby has a global dependency graph all projects used together in the same interpreter space must share dependencies. This means that all of foreman's dependencies need to mesh with any project where you include foreman as a dependency.

See e.g. #688

It seems unnecessary to bump dependency versions in foreman simply because Rails has done so potentially introducing bugs or backwards-incompatibility. Foreman should update its dependencies when necessary to fix bugs, introduce desired new functionality, or address security vulnerabilities.

Foreman is not a library, it is not imported by the code of your application, and it doesn't make sense to include it in your Gemfile just because it's written in Ruby. Think of it more like a system utility like curl or make, both of which you also would not include into your project's Gemfile. A Gemfile is meant to list the library dependencies of your project. In fact, if you're just putting gem "foreman" in your Gemfile, you're loading foreman code into memory of your application which seems like a waste of resources at best.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants