Skip to content

Roadmap

AliSoftware edited this page Nov 26, 2015 · 25 revisions

This page helps us discuss about the RoadMap of Dip, whether we plan to include some features or not, if some features deserve their own dedicated repository or will be integrated in Core, and if there is an rough date estimation on them

TL;DR: Jump to the Roadmap paragraph below

How we manage Dip's RoadMap on GitHub

GitHub Issues & Labels

For features that are planned even if we haven't started developing them yet, there should be a GitHub issue to define that we plan to do that later

  • Each GitHub issue should be flagged with the Enhancement label to show that it's a feature and not a bug
  • Each GitHub issue will also be eventually flagged with either the Core or Dedicated Repo label to indicate if that feature will be implemented in the AliSoftware/Dip repo and pod directly or as a separate repo.

The idea is that we don't want Dip to grow too big and become a huge machinery with tons and tons of stuff that not everybody might need, so we prefer to split huge extensions in dedicated pods/frameworks/repositories.
For example, Dip extensions for UIKit or AutoInjection mechanisms are examples of stuff that might be implemented in a dedicated pod/framework/repo instead of bloating the main repo.

GitHub Milestones

We'll try to use GitHub Milestones to give an idea of the prioritization of the features and issues, especially a milestone by version. For example this will be used to tell in which version we expect to address each issue.

(Milestones dates might be given too, but in Open Source projects like Dip where people only contribute on their free time and when they have time, those dates are only informal, so don't rely too much on it)

The Roadmap

Version 4.0.0

New features

  • circular dependencies (#11)
  • named first runtime argument in resolve methods (#18)
  • throwing errors instead of fatalError (?)
  • registering/removing definitions (#11)

Deprecations

  • register(tag:instance:)
  • resolve(tag:_:) and other resolve methods without named first runtime argument

Obsoleted

none

Version 4.1.0

New features

  • auto-injection
  • multi-injection (#14)
  • default implementations with tags (#20)
  • TagConvertible protocol (?)

Deprecations

none

Obsoleted

  • register(tag:instance:)
  • resolve(tag:_:) and other resolve methods without named first runtime argument