Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CIDER Distilled: A Common Foundation for Clojur...
Search
Bozhidar Batsov
September 01, 2019
Programming
0
290
CIDER Distilled: A Common Foundation for Clojure Tooling
Slide deck from my Clojure/south 2019 presentation.
Bozhidar Batsov
September 01, 2019
Tweet
Share
More Decks by Bozhidar Batsov
See All by Bozhidar Batsov
Clojure: The Bad Parts
bbatsov
0
50
Weird Ruby (RubyDay 2024, Verona)
bbatsov
0
140
Sustainable OSS (Balkan Ruby 2024, Sofia)
bbatsov
0
140
Ruby's Creed (RubyDay 2023, Verona)
bbatsov
0
18
Victims of Complexity
bbatsov
0
310
Ruby 3.0 Redux (Spark Academy, Jan 2021)
bbatsov
1
260
Ruby 3.0 Redux (Pivorak 4.0)
bbatsov
0
450
The Elements of Programming Style (HackConf 2019)
bbatsov
0
180
The Groundhog Day Development Method (HackConf 2019)
bbatsov
0
280
Other Decks in Programming
See All in Programming
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
140
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
16
5.7k
はじめてのWeb API体験 ー 飲食店検索アプリを作ろうー
akinko_0915
0
150
顧客の画像データをテラバイト単位で配信する 画像サーバを WebP にした際に起こった課題と その対応策 ~継続的な取り組みを添えて~
takutakahashi
4
1.3k
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1.2k
Startups on Rails in Past, Present and Future–Irina Nazarova, RailsConf 2025
irinanazarova
0
270
MySQL9でベクトルカラム登場!PHP×AWSでのAI/類似検索はこう変わる
suguruooki
1
130
Jakarta EE Meets AI
ivargrimstad
0
120
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
13k
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
530
What's new in AppKit on macOS 26
1024jp
0
150
RailsGirls IZUMO スポンサーLT
16bitidol
0
200
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
GraphQLとの向き合い方2022年版
quramy
49
14k
A designer walks into a library…
pauljervisheath
207
24k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Become a Pro
speakerdeck
PRO
29
5.4k
Code Reviewing Like a Champion
maltzj
524
40k
Site-Speed That Sticks
csswizardry
10
710
Producing Creativity
orderedlist
PRO
346
40k
We Have a Design System, Now What?
morganepeng
53
7.7k
Transcript
None
M-x
Bom dia!
Божидар
Bozhidar
Bozhidar
Bojidar
None
Bug cool
Sofia, Bulgaria Sofia, Bulgaria
None
Top 10 Bulgarian “White” Hackers
#NRALeaks
None
Expert in cyber security
Expert in the following programming languages: Unix, Emacs, Perl and
Ruby
The Don Juan of IT in Bulgaria
None
None
First time in Brazil!
Second time in Brazil!
None
None
None
First time in São Paulo!
First time at a conference in Brazil!
Cultural Exchange
None
None
None
None
None
None
None
None
None
None
Population of São Paulo: 12 (22) million
Population of Bulgaria: 7 million
Artur Malabarba
None
None
@bbatsov
metaredux.com
emacsredux.com
slide intentionally left blank
Cider?
None
None
Clojure Interactive Development Environment that Rocks
… for Emacs
CIDER Distilled: Beyond emacs
CIDER’s Architecture
None
None
None
None
CIDER’s Orchard
Orchard?
None
noun 1. a piece of enclosed land planted with fruit
trees. an apple orchard 2. (in the context of Clojure) a fertile ground for Clojure tooling. CIDER’s Orchard
None
Created especially for REPL- powered tooling
Extremely flexible
Transports •bencode (default) •tty (built-in) •http(s) (via Drawbridge) •transit (via
Fastlane) •EDN (coming in nREPL 0.7)
Extendable
Piggieback (ClojureScript Support)
shadow-cljs (ClojureScript Support)
cider-nrepl
None
Common functionality for interactive programming environments
Thin wrapper around (many) nREPL-agnostic libraries
Fundamental Tooling Approaches •REPL-driven (runtime state inspection) •Static analysis based
(parses and analyses the code)
unrepl prepl nREPL
orchard (swiss army knife)
compliment (code completion)
cljs-tooling (too hard to explain)
thunknyc/profile (self-explanatory)
fipp & puget (pretty printing)
•cljfmt •tools.namespace •tools.trace •tools.reader
REPL-powered tooling runs alongside your application code
Mr. Anderson (dependency inlining)
There’s a lot going on here!
And we haven’t mentioned a single Emacs library…
But wait, there’s more!
sayid (debugging tool)
weasel (ClojureScript REPL)
refactor-nrepl
None
None
None
The Lay of the Land
Calva (VS Code)
Calva -> Calvados
None
Calvados is distilled from cider.
Calva is distilled from CIDER.
vim-fireplace
vim-iced
acid.vim
CCW (Eclipse)
Proto REPL (Atom)
Non-nREPL tools
Chlorine (Atom, prepl)
Conjure (vim, prepl)
vimpire (vim, unrepl)
Cursive (IntelliJ, static analysis)
clojure-lsp (cross-editor, static analysis)
•cider-nrepl -> orchard-nrepl •cljs-tooling -> orchard-cljs
Naming is hard!
cljs-tooling compliment orchard
Clojure’s Orchard
Case Study: Improving ClojureScript code completion for everyone
cljs-tooling => compliment
clj-suitable
None
slide intentionally left blank
Language Server Protocol
None
LSP or nREPL?
•You can run them side by side •You can implement
LSP in terms of nREPL •You can proxy nREPL requests to an LSP server •You can implement LSP in terms of the same underlying libraries*
None
The State of Affairs
The Challenges
25% 5% 70% Yes Maybe I already have Notepad No
Do you want great Clojure development tools?
69% 25% 5% 1% Yes Maybe I already have Notepad
No Are you willing to work on Clojure development tools?
Few maintainers, many libraries
Areas of Interest •sayid •refactor-nrepl
ClojureScript
Areas of Interest •Piggieback •cider-nrepl •orchard •compliment •weasel
Where’s my hammock time?
Inconsistent APIs
Documentation
cljdoc
https://docs.cider.mx
https://nrepl.org
AsciiDoc + Antora
Funding
None
2013-2017 (estimated) •$5000 in donations •~3000 hours of work on
the projects
Definition of Work •Writing code •Reviewing code •Discussing ideas •Educating
myself so I can write/review code and discuss ideas •Supporting end users via Slack, email, etc •Collaborating with other tool authors
2018 •$4000 (OpenCollective) •$5400 (Clojurists Together)
2019 (projected) •$18,000 (OpenCollective) •$9,000 (Clojurists Together)
2,250/month
Little support from Clojure companies
Development tools are a high leverage investment
Clojurists Together
opencollective.com/cider
opencollective.com/nrepl
GitHub Sponsors
Future of the Orchard
Sustainable
Stable
Community Driven
Community Supported
Open Source is not about You
CIDER’s Orchard is all about YOU!!!
Help Clojure’s Orchard…
…to help yourselves
Felina
Resources • https://metaredux.com/posts/2018/10/29/nrepl-redux.html • https://metaredux.com/posts/2018/11/09/ciders-orchard- the-heart.html • https://metaredux.com/posts/2018/11/11/ciders-orchard- the-periphery.html •
https://www.youtube.com/watch?v=4X-1fJm25Ww
One more thing…
CIDER 0.22 (Lima) is out!
CIDER 0.22 (São Paulo)
None
None
Credits twitter: @bbatsov github: @bbatsov https://metaredux.com https://emacsredux.com Clojure/south São Paulo,
Brazil 01.09.2019