Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
CIDER Distilled: A Common Foundation for Clojure Tooling
Bozhidar Batsov
September 01, 2019
Programming
0
110
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
Victims of Complexity
bbatsov
0
230
Ruby 3.0 Redux (Spark Academy, Jan 2021)
bbatsov
1
170
Ruby 3.0 Redux (Pivorak 4.0)
bbatsov
0
380
The Elements of Programming Style (HackConf 2019)
bbatsov
0
140
The Groundhog Day Development Method (HackConf 2019)
bbatsov
0
180
Ruby 3.0: Redux (Saint P RubyConf 2019)
bbatsov
0
170
Ruby 3 Redux
bbatsov
0
270
nREPL Redux (DCD 2019)
bbatsov
1
340
Brewing CIDER: It Starts with an Orchard
bbatsov
3
120
Other Decks in Programming
See All in Programming
Pythonで鉄道指向プログラミング
usabarashi
0
130
それ全部エラーメッセージに書いてあるよ!〜独学でPHPプログラミングが上達するたった一つの方法〜
77web
1
150
FargateとAthenaで作る、機械学習システム
nayuts
0
170
2022年のモダンCSS改
tonkotsuboy_com
24
16k
SwiftUI+TCAに挑戦!NewsPicks iOSアプリのリアーキテクチャ/re-architecture-newspicks-ios-app-with-swiftui-and-tca
takehilo
0
400
企業内スモールデータでのデータ解析
hamage9
0
890
話題の AlloyDB は本当に凄いデータベースなのでプレビューを使い倒した #devio2022
maroon1st
0
13k
FutureCon 2022 FlutterアプリのPerformance測定
harukafujita
0
140
OSS貢献を気軽にしたい Let's Go Talk #1
yuyaabo
2
240
ZOZOTOWNにおけるDatadogの活用と、それを支える全社管理者の取り組み / 2022-07-27
tippy
1
3.2k
Register-based calling convention for Go functions
cjamhe01385
0
400
kintoneでランダム取得を作ってみた(imoniCamp 2022-07-27)
shokun1108
0
140
Featured
See All Featured
How to name files
jennybc
40
63k
Designing the Hi-DPI Web
ddemaree
272
32k
Fontdeck: Realign not Redesign
paulrobertlloyd
73
4.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
224
49k
Fireside Chat
paigeccino
13
1.4k
Rails Girls Zürich Keynote
gr2m
87
12k
Gamification - CAS2011
davidbonilla
75
3.9k
Clear Off the Table
cherdarchuk
79
290k
It's Worth the Effort
3n
172
26k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
39
13k
Rebuilding a faster, lazier Slack
samanthasiow
62
7.3k
Designing for Performance
lara
597
64k
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