Thanks Yifan for bringing this topic up.
Around April of 2017 (a bit after
sbt new integrated with Giter8) I reorganized the Wiki page from a flat list to the current style. Until then, the template list was a mix bag of new and outdated since Giter8 has been around since 2010.
Official or third-party (done)
At the very top level, the list is split into two major categories:
- Templates from official sources (and are up to date)
- Third-party and/or old templates
It’s kind of obvious in the hindsight, but Giter8 templates that are maintained by the official maintainers (for example Akka, Play, Scala Native, Unfiltered) have a pretty good chance of doing the right thing, and kept up to date.
Group by the main library (done)
Within the top two categories, I’ve introduced a grouping such as Akka, Play, Scala.js, and Base templates. This too helps to narrow down the list into what the users may be looking for.
Filter out older templates (done)
Template requires constant upkeep, so if there has not been commits for some time, the template is likely no longer useful. When I did the cleanup in 2017, I used 2014 as the cutoff date, so 3 years. If there hasn’t been a commit since 2014, the template is displayed at the bottom with the year included in the description.
So whatever we do in the new list, I think we should keep these things in mind, and not revert back to the old flat list of everything.
Ideas: Sort by GitHub Stars
Nothing is perfect, but GitHub star is a good signal of quality/popularity. There are GitHub issue Improper search results, Improve search relevance, “relevant” results aren’t where this has been suggested to Scaladex, but thus far it has not been the default.
So why is that relevant here? Let’s click on the first “topic” on the front page of Scaladex, which says akka (91).
I have no idea how the search index is scored, but “akka/akka” the project that contains the word “akka” in both organization name and the repo name doesn’t show up until page 3. Compare and contrast with sorting by GitHub stars, which Scaladex already implements but not by default.
Similarly for Giter8 templates, I think it makes sense to sort by GitHub stars within the category. I’ve also used GitHub stars as a metrics while migrating sbt plugins it worked really well.
Ideas: Embrace occasional manual curation
This applies for any search results, but especially for Giter8 templates, I think we should be ok with occasional manual curation as “featured”. As long as there’s a transparency around it (for example, small icon indicating “featured”, “promoted”, or “editor’s picks”), that can correct some biases around GitHub stars, which can pick up not-so-relevant result or favor older projects.
For example, in case of “akka” topic, akka/akka, akka/akka-http, and akka/alpakka should just be hard-coded as the top 3 results for now.
Ideas: Encourage engagement with GitHub repos
Another metrics that might be useful is the number of GitHub issues (
flatMap , if possible). If Saladex can surface the number of open issues, that could also be a good signal to filter out outdated or unmaintained templates.
Combining this with the idea of using GitHub star as the default sorting, we should encourage users to hit stars from the Scaladex UI, and also link to GitHub issues to report problems.
Promo: Get Started with Lightbend Technologies
In addition to integrating Giter8 into
sbt new, Lightbend Tooling team also made a web UI called Project Starter on our developer portal. See Project Type: Play for example. This runs Giter8 on server and creates a zip file containing the generated source, sbt distribution, and Gradle launcher. Using that, you pick a topic you want to work on, and hit download.