Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Module System Enhancements #118

Open
5 of 7 tasks
Tracked by #117
rafd opened this issue Jun 1, 2018 · 0 comments
Open
5 of 7 tasks
Tracked by #117

Module System Enhancements #118

rafd opened this issue Jun 1, 2018 · 0 comments
Labels
ongoing-effort A major initiative spanning multiple tasks.

Comments

@rafd
Copy link
Member

rafd commented Jun 1, 2018

Braid's code base is organized around "modules" (more about modules here ). How modules work in Braid has been iterated upon multiple times and will likely continue to evolve.

This issue and related milestone will track the ongoing effort to improve the module system.

Module Wishlist

  • should make use of built-in clojure as much as possible
  • module should not be aware of other modules that are extending it
  • should be clear what is available for use and for extension (what is "public" vs "private")

v0

  • a module can expose functionality ("the provider"), which another module can use ("the consumer")
  • a module can be both a provider and a consumer
  • the provider does not know about the consumers
  • a module can span across client and server

v1

  • a dependency graph can be generated
  • modules can easily spec required inputs/outputs
  • API docs for each module can be generated, ex:
xyz-module
depends on: 
"foo-event", 
"bar-event"
provides: 
"baz-event" params, docstring, expected return value
* [ ] unit tests can be defined per module
* [ ] e2e-tests can be defined per module

### v100
* [ ] modules can be turned on/off (via UI or system config)
* [ ] modules can be defined across repos (ie. for now, it's fine to have everything in a mega-repo)

## Potential Inspiration:
* ring pipeline / middleware
* re-frame events
* robert-hooke library 
* DOM event system
* component 
* mount
* defmulti
* pubsub

This was referenced Jun 1, 2018
@rafd rafd changed the title Re-design Module System Module System Enhancements Jun 5, 2018
@rafd rafd added this to the Module System Enhancements milestone Jun 5, 2018
@rafd rafd added the ongoing-effort A major initiative spanning multiple tasks. label Jun 6, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ongoing-effort A major initiative spanning multiple tasks.
Projects
None yet
Development

No branches or pull requests

1 participant