Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CIDER Distilled: A Common Foundation for Clojur...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Bozhidar Batsov
September 01, 2019
Programming
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CIDER Distilled: A Common Foundation for Clojure Tooling
Slide deck from my Clojure/south 2019 presentation.
Bozhidar Batsov
September 01, 2019
More Decks by Bozhidar Batsov
See All by Bozhidar Batsov
RuboCop 2.0: Where do we go now?
bbatsov
0
88
Clojure: The Bad Parts
bbatsov
0
130
Weird Ruby (RubyDay 2024, Verona)
bbatsov
0
200
Sustainable OSS (Balkan Ruby 2024, Sofia)
bbatsov
0
210
Ruby's Creed (RubyDay 2023, Verona)
bbatsov
0
85
Victims of Complexity
bbatsov
0
360
Ruby 3.0 Redux (Spark Academy, Jan 2021)
bbatsov
1
300
Ruby 3.0 Redux (Pivorak 4.0)
bbatsov
0
530
The Elements of Programming Style (HackConf 2019)
bbatsov
0
230
Other Decks in Programming
See All in Programming
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
Event is what happens
moro
2
1.7k
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
120
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
180
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.7k
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
160
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.8k
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.8k
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
11
9.4k
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
220
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
120
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
280
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
330
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
560
How to make the Groovebox
asonas
2
2.5k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The Curse of the Amulet
leimatthew05
3
16k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
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