Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Brewing CIDER: It Starts with an Orchard

Brewing CIDER: It Starts with an Orchard

Slide-deck from my presentation at ClojureX 2018 in London.

Bozhidar Batsov

December 04, 2018
Tweet

More Decks by Bozhidar Batsov

Other Decks in Programming

Transcript

  1. M-x

    View Slide

  2. M-x greet-audience

    View Slide

  3. Clojure 1.10-RC3

    View Slide

  4. async-require ->
    serialized-require

    View Slide

  5. View Slide

  6. 4

    View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. Clojure X 2015

    View Slide

  11. View Slide

  12. Божидар

    View Slide

  13. Bug
    cool

    View Slide

  14. View Slide

  15. View Slide

  16. We’re not hiring!

    View Slide

  17. View Slide

  18. View Slide

  19. @bbatsov

    View Slide

  20. The CIDER Guy

    View Slide

  21. View Slide

  22. Clojure
    Interactive
    Development
    Environment that
    Rocks

    View Slide

  23. … for Emacs

    View Slide

  24. View Slide

  25. View Slide

  26. metaredux.com

    View Slide

  27. emacsredux.com

    View Slide

  28. The nREPL Guy

    View Slide

  29. A Good Year for CIDER

    View Slide

  30. View Slide

  31. ClojureX
    Clojurists Together

    View Slide

  32. CIDER 0.17
    (Andalucia)

    View Slide

  33. • Display images in the REPL
    • Support for shadow-cljs
    • Support for the clojure-cli tools (clj/deps.edn)
    • Support for test selectors (run a subset of tests)
    • A brand new profiler (M-x cider-profile-toggle)
    • cider-eval-last-sexp-in-context

    View Slide

  34. CIDER 0.18
    (Saigon)

    View Slide

  35. New connection management
    system

    View Slide

  36. https://github.com/vspinu/sesman

    View Slide

  37. Session Manager

    View Slide

  38. Massive overhaul of CIDER’s
    internals

    View Slide

  39. Hasta la vista,
    cider-interaction.el!

    View Slide

  40. Massive overhaul of
    keybindings

    View Slide

  41. C-c M-j -> C-c C-x j j

    View Slide

  42. View Slide

  43. C-c C-x j j
    C-c C-x j s
    C-c C-x j m
    C-c C-x c j
    C-c C-x c s
    C-c C-x c m
    C-c C-x s j
    C-c C-x s s

    View Slide

  44. Decoupled CIDER releases from
    cider-nrepl releases

    View Slide

  45. CIDER 0.19

    View Slide

  46. View Slide

  47. An Amazing Year for nREPL

    View Slide

  48. Start of migration
    out of Clojure Contrib

    View Slide

  49. nREPL 0.4

    View Slide

  50. •New artefact id (org.clojure/tools.nrepl -> nrepl/nrepl)
    •New namespace (clojure.tools.nrepl.* -> nrepl.*)
    •Support for hot-loading dependencies
    •Support for clj
    •Many bug-fixes

    View Slide

  51. https://metaredux.com/posts/2018/10/29/nrepl-redux.html

    View Slide

  52. nREPL 0.5

    View Slide

  53. https://nrepl.xyz

    View Slide

  54. View Slide

  55. •Native support for pretty-printing results
    •Global and local configuration files
    •Improved built-in REPL experience
    •Many bug-fixes

    View Slide

  56. slide intentionally
    left blank

    View Slide

  57. 25%
    5%
    70%
    Yes Maybe
    I already have Notepad No
    Do you want great Clojure development tools?

    View Slide

  58. 69%
    25%
    5%
    1%
    Yes Maybe
    I already have Notepad No
    Are you willing to work on Clojure development tools?

    View Slide

  59. View Slide

  60. View Slide

  61. View Slide

  62. Brewing cider:
    It starts with an
    ORCHARD

    View Slide

  63. CIDER’s Architecture

    View Slide

  64. View Slide

  65. View Slide

  66. View Slide

  67. View Slide

  68. Heart of the Orchard

    View Slide

  69. nREPL

    View Slide

  70. View Slide

  71. Created especially for REPL-
    powered tooling

    View Slide

  72. Extremely flexible

    View Slide

  73. Transports
    •bencode (default)
    •tty (built-in)
    •http(s) (via Drawbridge)
    •transit (via Fastlane)
    •EDN (coming soon)

    View Slide

  74. Piggieback

    View Slide

  75. cider-nrepl

    View Slide

  76. Middleware for interactive
    programming environments

    View Slide

  77. Thin wrapper around (many)
    nREPL-agnostic libraries

    View Slide

  78. compliment

    View Slide

  79. orchard

    View Slide

  80. cljs-tooling

    View Slide

  81. •cider-nrepl -> orchard-nrepl
    •cljs-tooling -> orchard-cljs

    View Slide

  82. Naming is hard!

    View Slide

  83. Mr. Anderson

    View Slide

  84. There’s a lot going on here!

    View Slide

  85. And we haven’t mentioned a
    single Emacs library…

    View Slide

  86. View Slide

  87. •nREPL
    •cider-nrepl
    •piggieback
    •compliment
    •orchard
    •cljs-tooling
    •Mr. Anderson

    View Slide

  88. Periphery of the Orchard

    View Slide

  89. cljfmt

    View Slide

  90. tools.reader

    View Slide

  91. profile

    View Slide

  92. java.classpath

    View Slide

  93. tools.namespace

    View Slide

  94. tools.trace

    View Slide

  95. sayid

    View Slide

  96. clj-refactor

    View Slide

  97. refactor-nrepl

    View Slide

  98. squiggly-clojure

    View Slide

  99. View Slide

  100. View Slide

  101. View Slide

  102. • cljfmt
    • profile
    • java.classpath
    • tools.namespace
    • tools.trace
    • tools.reader
    • sayid
    • clj-refactor/refactor-nrepl
    • squiggly-clojure

    View Slide

  103. The Big Picture

    View Slide

  104. CCW
    (Eclipse)

    View Slide

  105. Proto REPL
    (Atom)

    View Slide

  106. Calva
    (VS Code)

    View Slide

  107. vim-fireplace

    View Slide

  108. vim-iced

    View Slide

  109. Cursive
    (IntelliJ)

    View Slide

  110. Clojure’s Orchard

    View Slide

  111. Future of the Orchard

    View Slide

  112. View Slide

  113. View Slide

  114. Hegemony

    View Slide

  115. Hegemony > Monopoly

    View Slide

  116. Sustainable

    View Slide

  117. Community Driven

    View Slide

  118. Funded?

    View Slide

  119. $4000

    View Slide

  120. Consolidation

    View Slide

  121. tools.trace -> sayid

    View Slide

  122. View Slide

  123. Replace Contrib Projects

    View Slide

  124. (or kill
    Clojure Contrib)

    View Slide

  125. Open Source is not about You

    View Slide

  126. CIDER is
    all about YOU!!!

    View Slide

  127. Help CIDER…

    View Slide

  128. …to help yourselves

    View Slide

  129. Felina

    View Slide

  130. 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

    View Slide

  131. Credits
    twitter: @bbatsov
    github: @bbatsov
    https://metaredux.com
    https://emacsredux.com
    ClojureX 2018
    London,
    United Kingdom
    03.12.2018

    View Slide