Consider enabling --independent-goals by default
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
#4481 exposed the --independent-goals flag but set the default to false. It may be better to change the default to true to handle projects that contain packages that are setup dependencies or build tools for other packages within the project. Without --independent-goals, all targets are forced to have consistent versions for their dependencies. See issue #4295 for an example of a project that needs --independent-goals.
There are also disadvantages to enabling --independent-goals:
- Removing the requirement of consistent versions for targets' dependencies could cause more packages to be built.
- It would increase solver run time, since the solver would need to choose versions for dependencies under more qualifiers.
- It would increase the complexity of package qualifiers, which would affect solver error messages and constraints.
- It could increase the complexity of install plans.
Contributor guide
Research direction
Start by tracing the --independent-goals flag through Cabal's option handling and dependency solver. Compare the behavior with the example in issue #4295, then evaluate whether making it true by default preserves acceptable solver time, package qualifiers, error messages, and install plans.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- build-system
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100