4 Comments
User's avatar
Claus Polanka's avatar

What a great idea 💡. If your time allows, could you maybe provide an example (in code)?

Expand full comment
David Miller's avatar

In principle I could build such a system with Java and Angular (the platforms my team understands). Each slice gets its own Java package, and Java modularity rules and ArchUnit tests could verify no slice uses a package from another slice. Slices can only use a small kernel of event services. In Angular / TypeScript each slice could have its own library.

My concern with keeping Java and Angular is my team members would keep their old way of thinking. I'm intrigued by the idea of a Linux application: a collection of small binary tools that communicate by pipes. I'm also interested in building this network of functions on a functional platform, like Lisp or Haskell.

Still, sticking with my current tools means not having to reinvent the build pipelines or the packaging scripts. The key thing is to get started; communicate the new ideas and start building something.

Expand full comment
Ralf Westphal's avatar

Sure, you can use Java and Angular. It's a matter how you use the tools. Modules, classes are great technical tools - but they need to be used within a conceptual framework.

No need to switch to Haskell or Clojure or F#. Java is ok (even though I'd prefer C# or Typescript).

Expand full comment