The navigator in the Clojure ecosystem: start quickly with the Clojure development
#clojure #clojurescript
I want it to become a Google for Clojure libraries
-- Artem Barmin, Clojure Garden creator
clojure.garden is a content curation platform intended to be used within the Clojure ecosystem to find the best practices for your case easily and quickly.
It helps figure out the Clojure ecosystem much easier without wasting time while reading libs updates and going into context.
During 2020-21 years we’ve conducted several surveys and gathered a number of insights from Clojure developers. We collected and analyzed practitioners' opinions about Clojure's benefits and issues for understanding community challenges.
One of the most common pain points was the ‘multitude of libraries/tooling’ that results in wasting time while choosing the right tool and reading updates. So the main idea was to find a way to improve Clojure ergonomics and remove such friction points as wasting time on library choosing and decision-making about what architecture to use.
Only by removing friction points in a developer’s Customer journey
map we can make Clojure more popular
-- Freshcode team
Usually, developers need to check around 10 resources (Slack, GitHub, Twitter, Reddit, Clojure Deref, Stack Overflow, etc) to decide what library to choose. And there is still no solution for convenient data storage that allows quick and simple analysis. The path from search to choosing libs is extremely complicated and resource-intensive.
So, the main 'enemies' we are going to fight with are so-called friction points during the Clojure developer journey map.
Among the negative factors influencing the developer's journey map, we consider the following:
- Insufficient context level of libs usage
- System's fragmentation due to many influencers
- Lack of a unified knowledge base
- Data is provided in streaming form
- Creating a unified knowledge base
- Moving from stream-based information feeds to the structured
comprehensive system of navigation (Data Fluidity VS Accumulation) - Solving problem of choosing libraries, decision making, searching, and benchmarking
- Introduce an “observability standard” for the Clojure ecosystem
- Transforming clojure.garden into a focal point within the language ecosystem
- Increasing Clojure awareness
- Improving learning curve that newcomers must undergo
Sure, clojure.garden will come in handy for a wide range of users, but the main
segments whose needs we want to cover are:
- newcomers
- developers who start their first pet project and are not active community members
We want to fast-track the Clojure onboarding process and make it enjoyable and seamless.
- Create a database that will make it easier to find so-called social signals about each Clojure library and all
contextual information regarding it (case uses, mentions on forums, etc.): - Introduce LibRank ranking system based on social mentions and open-source/closed-source project.clj’s
- Implement the metric “Clojure Ecosystem Health Score”:
- Create a “template” for documentation that will help authors to prepare docs easier and better
- Outreach library authors to write documentation according to our standards
- Provide human resources(developers and tech writers) for helping authors with documentation
- Collect project.clj stats across industry
- Create a mechanism for crowdsourcing info based on Slack/GitHub:
- Allow submitting anonymous data for improving LibRank data quality
- Allow improving library docs and examples by encouraging community members to fulfill predefined template
- clarity
- ease of navigation
- reduction of entropy
clojure.garden context
clojure.garden container
clojure.garden dependencies
Repository CI/CD
- Bootstrap the project & the backend module
- [devops] Configure local deployment
- [backend] Create a GitHub API client to collect starts, number of contributors,
issues, releases, etc. - [backend] Create a Clojars API client to collect the artifacts data
- [backend] Create the ER diagram for the backend database
- [backend] Write database migrations
- [backend] Create a feed crawler for Clojars
- [devops] Setup Metabase
- Create basic charts in Metabase
- [backend] Migrate to deps.edn
- Write a good README
- [devops] Configure GitHub actions
- [frontend] Bootstrap the project frontend module
- [backend] Create a Slack API client to collect Clojure library mention context
- [backend] Create a Twitter API client to collect Clojure library mention context
- [backend] Create an orchestrator for the data loading modules
- [backend] [frontend] Create custom library grouping by tags
- [frontend] Create basic charts and tables
- [frontend] [backend] Implement library search
- [backend] [frontend] Implement of custom library ratings
- [backend] [frontend] implement a personal account with the ability to create your own charts and subscriptions
Please see the contributing guide.
See a list of companies and individual developers using clojure.garden. Are you using clojure.garden in your company or personal projects? Let us know here.
An overview of Сlojure Garden concepts on re:Clojure 2021 presentation:
Artem Barmin
Inna Kovalenko
Anastasia Gretchenko
Ilshat Sultanov
Gleb Yeliseev
Volodymyr Pavliuk
The MIT License (MIT)
Copyright © 2021-2022 Freshcode LTD