Fork me on GitHub

Hi all! I'm currently researching creating a large extensible local web app with CLJ+CLJS+Fulcro on front and back. I'm most hung up on creating an extension model that would allow plugin creators the most flexibility without drowning myself in abstractions. Are there any good resources on creating extensible architectures available?


This is very interesting to me as well. Also working with Fulcro and looking into building an extensible app

eccentric J15:12:26

A few months back I recall a community member announcing this:


The project looks good, but I'm more looking for architecture level ideas


@UCHV4JZ7A If you don't mind my asking, is the project for you or for a company?


@U5P29DSUS it’s for the new company I’m building. You?


What kind of extensibility are you interested in? Mostly around UI?


with something like responsible for the CRUDL bits?


I'm considering building an oss clojure editor. I tried to edit light table, but after a few hours of research discovered that I would never understand enough about it to make changes.

👍 4

Night code is interesting, as is liquid, but I want more of a playground so I can try out my ideas - code bubbles, auto generated workspace layouts that include the function, tests, a repl, and a notes window. The other bit I want to play around with is a custom impl of vim that works a bit differently so that it combines well with paredit


That’s really interesting. Someday I’d love to build a Salesforce-like product — basically super-extensible business software. That would be easier to do with a nice Clojure editor to use within it


Sounds cool. Currently I'm researching the feasibility of the project. Once I have a solid outline and a minimal baseline of code I'll publish it and make a call for help out here 😉

👍 4

There are so many channels in this Slack workspace. How is this supposed to work? Although I am grateful I can get answers here fast, shouldn't the questions and answers be out in the open? Before I joined this workspace, I had no idea such a vibrant community existed.

Alex Miller (Clojure team)14:12:48

If you have specific questions, asking at is a great place to search for previous questions or ask new ones in a way that can be permanently found. The ask site is the official q&a forum for Clojure and is monitored by the core team.


We have so many topics and Noone knows everything, so if you want the highest chance of someone that knows about the topic reading the appropriate question it's best to have them sorted and filtered which is what channels are for.


Feel free to ask about stuff since the community is pretty welcoming. And if there's a channel that's more on topic or something people will generally point you in the right direction.


Yes, I know. It is a very friendly community. I still wish things were more out in the open. By "open" I mean indexable by search engines.


@hindol.adhya the searchable slack-archive at Clojurians-Zulip might help with discoverability:


This sure helps. Thank you. I still wish more questions and answers were on Stackoverflow and similar sites. Or do we expect everyone interested in Clojure to be on Slack?


There are questions and answers all over the place. Slack, Gitter, Zulip, SO. Slack is probably the most active, <ttps://> is pretty active as well.


BTW looks quite a bit like SO, just more forum-like.

Alex Miller (Clojure team)14:12:07

Ask Clojure is the official q&a site for Clojure, run and monitored by the core team

Denis G23:12:46

Is there a chance that Clojure is going to have static typing/type inference something like Typed Racket in particular, at Rich’s talk Maybe Not, Rich argues that Sum Types in Haskell/OCaml/Scala are not really sum types because even thought types represent a set, they require tagging which makes everything confusing. I agree. Typed Racket doesn’t have this issue. e.g.

> (let ([a-number 37])
    (if (even? a-number)
- : Symbol [more precisely: (U 'no 'yes)]
so here we have a ∪ of yes and no keywords. Isn’t it awesome? why not have lisp on jvm, with type inference? I just think fighting against static typing is ridiculous. idk


@denisgrebennicov There are some external tools / linters available which do some form of type checking. Typed Clojure / core.typed is probably the most advanced, I don't know what the current state of that is, but the author worked together with the Typed Racket folks I believe.

Denis G23:12:11

@borkdude I know you are working on something like this, if I am not mistaken 🙂 yet this is not type inference, right


Another tools is, also not known to me how usable it is.


Then there's more basic stuff like joker and clj-kondo (of which I'm the main author). They can infer things like:

$ clj-kondo --lint - <<< '(let [a "x"] (inc a))'
<stdin>:1:19: error: Expected: number, received: string.


If you want to know more about the "type system" in clj-kondo you can check:


Just a few pointers. I'm afk now.

Denis G23:12:13

awesome, thanks. digging into that

Denis G23:12:27

and thanks for awesome work at clj-kondo 💪

clj-kondo 12

Another last thing that came to my mind: ClojureScript has some form of type inference, but mostly for performance optimizations. I'm not sure if it will also warn about potential errors. @mfikes might be able to tell more about this.

👍 4

Here's a nice blog about static analysis and Clojure: