This is an interesting thread. When I first joined this community, I realized that the best way to figure out what packages that I should use is to just ask the community Usually, someone drops in immediately and tells me where to start Let me provide some of my thoughts and opinions below.
Discoverability
Do I want to just read a curated document somewhere? Maybe, but only if the document is up to date and answer the exact same question I have. I have seen and tried to use R’s Task View before although I didn’t really like it that much. It only serves as a starting point but gives no guidance about which packages are more mature or more maintainable than others, which are some of the important factors that I consider.
To me, adding tags only serves as a beginning point as well. So, if we are going to provide more meta-information about packages, then let’s put more context around each package. I would propose:
-
Life cycle: experimental, growing, mature, deprecated
-
Maintenance: none, occasional, active
-
Test coverage: none, low, medium, high
-
Performance: not considered, basic tuning, highly optimized
-
Security: not considered, basic assessments, highly scrutinized
-
Production Readiness: none, few deployments, widely deployed
- etc.
Package authors should be able to assess based on some community driven guideline.
Package Guides
I think another thing that can really help users is domain-specific guides to Julia packages.
Taking time series analysis as an example, it would be nice if there’s a web page that talks about the various packages, how they relate to each other (if any), and how they differ. Package authors can probably come together and contribute the the same guide.
How many topics? I don’t know. But this could be community/user-driven. When there’s a need (more questions asked) about a topic then one of the package authors can step up and initiate a new guide.
Redundancy
Personally, I don’t think redundancy is a bad thing. Nothing is going to be perfectly aligned unless we start consolidating packages together, which is going to be a very expensive proposition in terms of time and effort.
As a user, I can get feature X from package A and feature Y from package B, I would not care too much if they both implement several other common features.
As a package author, we may build something redundant only because we want to do so, but so that we can innovate and try to do the same thing better or address a problem more comprehensively.
I would think consolidation will just happen organically. Up until a point where packages become popular, package authors can just come to JuliaCon and hack something out together!