Description
Both Intervals.jl and IntervalSets.jl define a very similar basic API (e.g., AbstractInterval
, inclusivity, set operations). It'd be nice if that basic API could live in one package while many domain specific operations (e.g., math, statistics, time, plotting) lived in others. I like the shorter names in Intervals.jl, but I don't have a strong opinion about where that hierarchy lives. I'd mostly be interested if folks have a view of where the boundary should sit. The merging plan that first comes to mind looks a little like this:
- Extend the Intervals.jl hierarchy to match IntervalSets.jl (defining and subtyping
Domain
) - Strip most of the functionality from Intervals.jl into separate packages (e.g.,
AnchoredIntervals.jl
,IntervalPlots.jl
,TimeIntervals.jl
) - Ensure that all existing Intervals.jl set related operations and syntax are covered by IntervalSets.jl (e.g.,
..
,intersect
,union
) - Update IntervalSets.jl to extend the minimal hierarchy in Intervals.jl, but providing the current set operations.
NOTE: This plan requires more work on the Intervals.jl side, and we wouldn't propose touching IntervalSets.jl till the end, but it'd be good to know if step 4 would be reasonable before working on the other components. Feel free to post alternate plans if you disagree.
In the end, IntervalSets.jl would have one extra dependency on the reduced Intervals.jl package and there might need to be some deprecations/backward compatibility where things don't fully align. The benefit to IntervalSets.jl is that features in Intervals.jl would become PnP and the benefit to Intervals.jl is that we'd get to share the same user- and code-base for feedback and development.