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
220
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
Weird Ruby (RubyDay 2024, Verona)
bbatsov
0
83
Sustainable OSS (Balkan Ruby 2024, Sofia)
bbatsov
0
81
Ruby's Creed (RubyDay 2023, Verona)
bbatsov
0
5
Victims of Complexity
bbatsov
0
290
Ruby 3.0 Redux (Spark Academy, Jan 2021)
bbatsov
1
240
Ruby 3.0 Redux (Pivorak 4.0)
bbatsov
0
420
The Elements of Programming Style (HackConf 2019)
bbatsov
0
160
The Groundhog Day Development Method (HackConf 2019)
bbatsov
0
250
Ruby 3.0: Redux (Saint P RubyConf 2019)
bbatsov
0
230
Other Decks in Programming
See All in Programming
Patched fetch did not work
quramy
4
400
Why Prism?
kddnewton
4
1.7k
Modular Monolith Go Server with GraphQL Federation + gRPC
110y
1
590
What is Parser
yui_knk
9
4.1k
いまから追い上げる、Jetpack Compose トレーニング
nyafunta9858
0
600
サーバーレスで負荷試験!Step Functions + Lambdaを使ったk6の分散実行
shuntakahashi
6
1.6k
Debugging: All you need to know (for simultaneous interpreting)
jmatsu
2
860
What you can do with Ruby on WebAssembly
kateinoigakukun
0
170
【TID2024】模擬講義:プログラマと一緒にゲームをデザインしてみよう!
akatsukigames_tech
0
660
はじめてみよう量子プログラミング
itokoichi01
0
220
『ドメイン駆動設計をはじめよう』中核の業務領域
masuda220
PRO
5
1k
Go1.23で入った errorsパッケージの小さなアプデ
kuro_kurorrr
2
390
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
167
14k
From Idea to $5000 a Month in 5 Months
shpigford
379
46k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.3k
Web Components: a chance to create the future
zenorocha
309
42k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
123
18k
Docker and Python
trallard
39
3k
Designing Experiences People Love
moore
138
23k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
Writing Fast Ruby
sferik
623
60k
Imperfection Machines: The Place of Print at Facebook
scottboms
263
13k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
278
13k
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