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 Clojure Tooling
Search
Bozhidar Batsov
September 01, 2019
Programming
0
190
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
270
Ruby 3.0 Redux (Spark Academy, Jan 2021)
bbatsov
1
230
Ruby 3.0 Redux (Pivorak 4.0)
bbatsov
0
410
The Elements of Programming Style (HackConf 2019)
bbatsov
0
160
The Groundhog Day Development Method (HackConf 2019)
bbatsov
0
240
Ruby 3.0: Redux (Saint P RubyConf 2019)
bbatsov
0
220
Ruby 3 Redux
bbatsov
0
330
nREPL Redux (DCD 2019)
bbatsov
1
480
Brewing CIDER: It Starts with an Orchard
bbatsov
3
170
Other Decks in Programming
See All in Programming
雑に思考を整理する技術と効能
konifar
60
29k
Site Reliability Engineering for GMO
pyama86
8
1k
エンターテイメント業界で利用されるAWS
demuyan
0
210
Fragment Composition of GraphQL
quramy
7
1k
Node.js v22 で変わること
yosuke_furukawa
PRO
9
3.5k
Code Reviews
bkuhlmann
4
890
TCAとKMPを用いた新規動画配信アプリ 「ABEMA Live」の設計
tomu28
1
110
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
380
大規模UIKitベースアプリへのTCAの段階的導入/gradual-adoption-of-tca-in-a-large-scale-uikit-based-app
takehilo
1
180
はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts
mizdra
7
940
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
680
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
110
Featured
See All Featured
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Into the Great Unknown - MozCon
thekraken
10
1k
RailsConf 2023
tenderlove
4
540
What's in a price? How to price your products and services
michaelherold
237
11k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Building Applications with DynamoDB
mza
88
5.6k
Ruby is Unlike a Banana
tanoku
96
10k
Rails Girls Zürich Keynote
gr2m
91
13k
A better future with KSS
kneath
231
16k
The Power of CSS Pseudo Elements
geoffreycrofte
60
5k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
What's new in Ruby 2.0
geeforr
337
31k
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