A Web Stack Special Interest Group?

245 views
Skip to first unread message

aditya....@gmail.com

unread,
Oct 24, 2024, 4:47:03 AM10/24/24
to Clojure
Hello, thoughts about the Clojurish web stack have been bouncing around in my head for a while now. In recent months, I've noticed an uptick in conversations about the same. Maybe it's recency bias. Maybe not. The "boring business web app" is where the money is, after all.

I wonder if people would like to put heads together to come up with something general-purpose that helps people understand + construct + apply web things built by community members over the years.

Personally, I'm not convinced that a One True Framework is the solution. However there might be opportunity to out-framework all the framework-heavy communities by making a way to construct one's own framework.

The "constructor" might spit out a "standard recipe" that could be: "Ring + Compojure" or "Ring + Reitit" or "Kit" or "Duct" or "Sitefox" or "Donut" or "Pedestal" if the user feeds in well-specified requirements that match one or more of said framework/library collection. Or, it might run us through a decision tree to incrementally expand requirements into a project on disk (a clj-new template, but created incrementally).

AND, as m'colleague Kapil insists (and I agree) it should be a "full system" system... have us covered from parts assembly to production deployments.

/Explanations/ would be a key feature of such a constructor; Why this and not that? How to wire X and Y together? What are some example use cases? The explanations would be sourced from source repos.

Basically, this thing would respect and support the diversity and inventiveness of the Clojure web ecosystem /while making it accessible/ to the masses. The innovation is distributed, but the composition is centralised. This sort of thing is definitely in userspace and not language maintainerspace. IMHO, SciCloj is a great example of a special interest group that's doing yeoman service.

I'm not sure if I'm making any sense, but I'm sure smarter people that I have struggled enough to have had ideas of their own and if they come together, they might conjure up a very creative solution. What I am confident about, is that this is a complicated task, but not a complex one.

Anyway, I just wanted to put this out into the clojureverse and see what happens.

May The Source be with us,
- Adi

aditya....@gmail.com

unread,
Oct 24, 2024, 7:06:46 AM10/24/24
to Clojure
P.S. I'm sorely tempted to cite names / references that have informed and inspired me, but that will put people on the spot.

So whomever is interested in this line of thinking may self-identify by replying to this thread, with their current state of the art thinking (videos, essays, books, frameworks etc.).

Here's some of my stuff on these lines, for example:

Fabio Dias Francisco

unread,
Oct 24, 2024, 9:20:40 AM10/24/24
to Clojure
I know what you mean, in terms of web framework, idk, but I had to go just that route and build myself my own data processing framework. There was nothing for that purpose that was truly native, so I used my knowledge of many frameworks like that, and built my own.

aditya....@gmail.com

unread,
Oct 31, 2024, 2:17:09 PM10/31/24
to Clojure
X-linking to some chatter over at r/Clojure, where I X-posted this email.

aditya....@gmail.com

unread,
Nov 8, 2024, 8:16:55 AM11/8/24
to Clojure

They appear to be doing this very thing, but for the data + science ecosystem!

I wonder if the web ecosystem can steal their playbook.

Daniel Slutsky

unread,
Nov 8, 2024, 11:09:53 AM11/8/24
to Clojure
Hi!

Thanks for mentioning Noj.
I'd be glad to discuss it if you have any questions or ideas.

Basically, it is collecting a stack of libraries with documentation and integration tests.
We approach it by generating tests from documentation. This way, we verify the docs are correct (and also enjoy a way to write some kind of literate tests).

aditya....@gmail.com

unread,
Nov 15, 2024, 11:48:10 PM11/15/24
to Clojure
On Friday, November 8, 2024 at 9:39:53 PM UTC+5:30 Daniel Slutsky wrote:
Hi!

Thanks for mentioning Noj.
I'd be glad to discuss it if you have any questions or ideas.

Thanks for all the hard work (often thankless!) of not only organising a niche community, but also driving/helping projects like noj.
 
Basically, it is collecting a stack of libraries with documentation and integration tests.
We approach it by generating tests from documentation. This way, we verify the docs are correct (and also enjoy a way to write some kind of literate tests).

Yes, I noticed. It's a good idea worth stealing!

I'll pop into the SciCloj Zulip for noj-specific questions. Right now I'm on the hammock, just letting thoughts swirl in my head.

RDF / open-graph style metadata has been on my mind [1] for a while, especially to make LLMs reliably useful for pattern-matching / grunt work tasks. I'm so glad for Luke VanderHart's recent Conj talk [2]. Now I can point people to an actual expert who knows what he's talking about!
 
[1] Riffed about in "Mycelium Clj" https://www.evalapply.org/posts/mycelium-clj/
    In a world of concrete objects, steel frameworks bring sense and order. In a forest of composable tools, libraries and open-ended schemas, it would be the mycelia. A frustrated yet optimistic man muses "Might such a thing come to be?".
    ... ... ...
    What I can't tell is if all this boils down to "Oh look, yet another internet rando witlessly reverse-engineered a cheap knock-off of RDF and the semantic web.". Or if it is something practicable within the little village (relatively speaking) of Clojureland.
    ... ... ...
    (And then some specific properties of the hypothetical mycelium-clj, and some use-cases similar to "Please Mx. LLM, help me make a data stack for X, Y, Z purpose".)

[2] Hell yes... "RDF and the future of LLMs" by Luke VanderHart

Daniel Slutsky

unread,
Nov 16, 2024, 5:08:08 PM11/16/24
to Clojure
On Saturday, 16 November 2024 at 06:48:10 UTC+2 aditya....@gmail.com wrote:
On Friday, November 8, 2024 at 9:39:53 PM UTC+5:30 Daniel Slutsky wrote:
Hi!

Thanks for mentioning Noj.
I'd be glad to discuss it if you have any questions or ideas.

Thanks for all the hard work (often thankless!) of not only organising a niche community, but also driving/helping projects like noj.
 

That is so kind.
 
Basically, it is collecting a stack of libraries with documentation and integration tests.
We approach it by generating tests from documentation. This way, we verify the docs are correct (and also enjoy a way to write some kind of literate tests).

Yes, I noticed. It's a good idea worth stealing!

I'll pop into the SciCloj Zulip for noj-specific questions. Right now I'm on the hammock, just letting thoughts swirl in my head.


Perfect, it would be great to have you in those Noj conversations.
 
RDF / open-graph style metadata has been on my mind [1] for a while, especially to make LLMs reliably useful for pattern-matching / grunt work tasks. I'm so glad for Luke VanderHart's recent Conj talk [2]. Now I can point people to an actual expert who knows what he's talking about!
 
[1] Riffed about in "Mycelium Clj" https://www.evalapply.org/posts/mycelium-clj/

Inspiring, thanks for sharing that.

aditya....@gmail.com

unread,
Dec 4, 2024, 3:41:16 AM12/4/24
to Clojure

Fellow Gentlenerds... Help!

One is on the hook to deliver a workshop (late in Jan 2025), a "First Principles" mental model of web stacks; viz. how to construct one from scratch.

Pretty sure I've got this [0], but today's third cup of coffee says why not entice others to influence the workshop?

What better fodder for thought, than everybody's pet peeves and annoyances and WTF moments and gawdawful mistakes and "holy batman, why didn't anyone tell me /this/ three years ago???" table-flips.

So... professional and newbie #Clojure web developers in the haus, please complain.

Reply here, or email my.clojure.web...@evalapply.org . Do it for you and I, as much as for others. So that not-you may selfishly learn from you and improve our lives, while you feel heard and seen... A win win situation, as they used to quip in B-School.

Needless to say, I will publish everything I can, for community use; such as blog post(s) [1], repo(s) [2], slide warez [3], and video recordings [4].

Aside: This is my favourite software engineering methodology; Talk Driven Development, which I know for a fact, many upstanding members of our mighty little community revel in 🤪 [5].

So, fire away please. Help me write everything now, so that I can rewrite everything at the last minute.

May The Source be with us,
- Adi.
References:
[1] Seven thousand words (uh, tokens, including code) already... good grief. https://www.evalapply.org/posts/clojure-web-app-from-scratch/
[2] Commit by commit progressive explanation: https://github.com/adityaathalye/usermanager-first-principles
[5] So many people have unabashedly confessed to step no. 10: https://www.evalapply.org/posts/how-to-give-a-conference-talk/

aditya....@gmail.com

unread,
Jan 13, 2025, 9:49:11 AMJan 13
to Clojure
A "multiproject" style web stack architecture(?) that I've been toying with (which, I suspect. might prove to generalise for any stack - scicloj, fullstack, mobile etc...):


Clone the repo and call `bin/run_cmd.sh` helper utility from the root of the project to try it out.

The commit history thus far should tell the tale of another standalone web app got transplanted into the "multiproject".

It's all very alpha quality, so all critical feedback welcome!

Dustin Getz

unread,
Jan 14, 2025, 7:18:02 AMJan 14
to Clojure
We have a "multi project" monorepo setup at Hyperfiddle called electric-fiddle, it's how we deploy our demos (with merged or isolated classpaths) while developing on a merged dev classpath, and with common deployment/build scripts. We've been incubating it for about two years and been through a few revisions, pretty happy with the current approach. We haven't published it yet but DM me and I can send you a private link

aditya....@gmail.com

unread,
Jan 16, 2025, 12:55:00 PMJan 16
to Clojure
On Tuesday, January 14, 2025 at 5:48:02 PM UTC+5:30 Dustin Getz wrote:
We have a "multi project" monorepo setup at Hyperfiddle called electric-fiddle, it's how we deploy our demos (with merged or isolated classpaths) while developing on a merged dev classpath, and with common deployment/build scripts. We've been incubating it for about two years and been through a few revisions, pretty happy with the current approach. We haven't published it yet but DM me and I can send you a private link

Yes; the Adrian "Monk" department of my brain sends delighted thanks for the offer! DM'd you.

Luckily, my brain also has a Grug Crood department. He hereby declares the "multiproject" sketch "done", so we can all move on with life ("For now.", says Monk)...

It has just enough structure and moving parts to cover Grug dept.'s requirements. The repo is updated, so is the README (with a quickstart, and even a rationale!): https://github.com/adityaathalye/clojure-multiproject-example ... Hopefully someone else finds it useful!
Reply all
Reply to author
Forward
0 new messages