si-frame
A fork of Re-frame, with the reactivity provided by Signaali
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.1%) to scientific vocabulary
Keywords
Repository
A fork of Re-frame, with the reactivity provided by Signaali
Basic Info
Statistics
- Stars: 24
- Watchers: 4
- Forks: 0
- Open Issues: 0
- Releases: 2
Topics
Metadata Files
README.md
Si-frame
This project is a fork of Re-frame v1.4.3 where
the reactivity is implemented using Signaali
without Reagent.
It was created: - to battle-proof Signaali's API before its release, - to demonstrate how Signaali could be used in future versions of Re-frame, - for Re-frame users who already use another React wrapper than Reagent and who want to try Signaali.
Project status: experimental.
How well does it work?
- The fork is working fine when tested on our own projects and on the port of Re-frame's examples.
- The fork passes all the unit tests in the same way than the original, except for one test in
re-frame.flow.alpha-test. Because this feature is still "alpha", I didn't bother investigate but I suspect that the difference is due to the expectation from Re-frame that the Reagent atoms are run eagerly while Signaali's reactive nodes are run lazily.
Ported Re-frame library
The namespaces were not modified, keep using it as if it was the original Re-frame project.
What's different in the library:
- Reagent was removed.
- Some small changes were needed in re-frame.interop to making it work with Signaali.
- re-frame.interop/after-render won't work exactly in the same way, but most apps don't use it.
How to use it in your Re-frame project
In your deps.edn, replace the re-frame dependencies with:
clojure
fi.metosin/si-frame {:mvn/version "1.4.3.0-no-siagent"}
This lib should work for you if you don't use Reagent in your code base.
UIx interop
We provide the extra namespace re-frame.uix for UIx users who need to use the subscriptions as React hooks.
Example: ```clojure (ns my-namespace (:require [re-frame.uix :refer [use-subscribe]] [uix.core :as uix :refer [$ defui]]))
Will this be maintained?
Yes.
The change compared to the Re-frame codebase is so small that it will probably be very easy
to make a new release of this fork for any official release of Re-frame after the current v1.4.3.
However, I do hope that in the future Re-frame can offer a customization mechanism for its reactivity such that no project fork is needed.
Feedback
Your feedback is greatly appreciated and needed. Please let us know how was your experience with our fork
in
Below this line is the original content of Re-frame's README.md.
Derived Values, Flowing
This, milord, is my family's axe. We have owned it for almost nine hundred years, see. Of course, sometimes it needed a new blade. And sometimes it has required a new handle, new designs on the metalwork, a little refreshing of the ornamentation ... but is this not the nine hundred-year-old axe of my family? And because it has changed gently over time, it is still a pretty good axe, y'know. Pretty good.
-- Terry Pratchett, The Fifth Elephant
reflecting on identity, flow and derived values (aka The Ship of Theseus)
Overview
re-frame is a ClojureScript framework for building user interfaces. It has a data-oriented, functional design. Its primary focus is on high programmer productivity and scaling up to larger Single-Page applications.
Developed in late 2014, and released in 2015, it is mature and stable. It is used by both small startups and companies with over 500 developers, and it has delivered into production applications which are 40K lines of code and beyond.
Across the last 6 years, it has outlasted multiple generations of Javascript churn - just imagine your team's productivity if you didn't have to contend with technical churn, and have new magic burn your fingers every two years. Brand new, exciting concepts like recoiljs (in the React world), have been a regular part of re-frame from the beginning.
re-frame is lucky enough to enjoy an unfair advantage - ClojureScript is a Lisp. Alan Kay once described Lisp as "Maxwell's equations of software". Paul Graham described how Lisp was a competitive advantage for his startup. When we use Lisp, we get to leverage 50 years of foliated excellence from the very best minds available. And then there's also a thriving ClojureScript community which delivers modern ideas and best-in-class tooling.
Although re-frame leverages React (via Reagent), it only needs React to be the V in MVC, and no more. re-frame takes a different road to the currently-pervasive idea that Views should be causal (colocated queries, ComponentDidMount, hooks, etc). In re-frame, events are causal, and views are purely reactive.
Documentation
The re-frame documentation is available here.
The Current Version
For full dependency information, see the Clojars page
Getting Help
Licence
re-frame is MIT licenced
Owner
- Name: Metosin
- Login: metosin
- Kind: organization
- Location: Tampere, Helsinki, Finland
- Website: http://www.metosin.fi
- Repositories: 107
- Profile: https://github.com/metosin
The high-touch software studio
Citation (CITATION.md)
To cite re-frame in publications, please use:
[](https://doi.org/10.5281/zenodo.801613)
Thompson, M. (2015, March). Re-Frame: A Reagent Framework For Writing SPAs, in Clojurescript.
Zenodo. http://doi.org/10.5281/zenodo.801613
@misc{thompson_2015,
author = {Thompson, Michael},
title = {Re-Frame: A Reagent Framework For Writing SPAs, in Clojurescript.},
month = mar,
year = 2015,
doi = {10.5281/zenodo.801613},
url = {https://doi.org/10.5281/zenodo.801613}
}
GitHub Events
Total
- Release event: 4
- Watch event: 13
- Delete event: 3
- Push event: 1
- Create event: 6
Last Year
- Release event: 4
- Watch event: 13
- Delete event: 3
- Push event: 1
- Create event: 6
Committers
Last synced: 8 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Vincent Cantin | v****t@4****i | 4 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 7 months ago
All Time
- Total issues: 0
- Total pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- clojars 40 total
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 2
- Total maintainers: 1
clojars.org: fi.metosin/si-frame
A fork of Re-frame, with the reactivity provided by Signaali via Siagent
- Documentation: https://cljdoc.org/d/fi.metosin/si-frame/
- License: MIT
-
Latest release: 1.4.3.0-no-siagent
published 12 months ago
Rankings
Maintainers (1)
Dependencies
- 252 dependencies
- karma ^6.4.2 development
- karma-chrome-launcher 3.1.0 development
- karma-cljs-test 0.1.0 development
- karma-junit-reporter 2.0.1 development
- shadow-cljs 2.25.2 development
- karma-puppeteer-launcher ^1.0.4
- react ^18.2.0
- react-dom ^18.2.0
- 253 dependencies
- karma ^6.4.2 development
- karma-chrome-launcher 3.1.0 development
- karma-cljs-test 0.1.0 development
- karma-junit-reporter 2.0.1 development
- shadow-cljs 2.25.2 development
- karma-puppeteer-launcher ^1.0.4
- react ^18.2.0
- react-dom ^18.2.0
- 253 dependencies
- karma ^6.4.2 development
- karma-chrome-launcher 3.1.0 development
- karma-cljs-test 0.1.0 development
- karma-junit-reporter 2.0.1 development
- shadow-cljs 2.25.2 development
- karma-puppeteer-launcher ^1.0.4
- react ^18.2.0
- react-dom ^18.2.0
- 266 dependencies
- karma 6.4.1 development
- karma-chrome-launcher 3.1.1 development
- karma-cljs-test 0.1.0 development
- karma-junit-reporter 2.0.1 development
- karma-puppeteer-launcher 1.0.4 development
- shadow-cljs 2.20.7 development
- @nextjournal/lang-clojure ^1.0.0
- codemirror ^6.0.1
- react ^18.2.0
- react-dom ^18.2.0
- DeLaGuardo/setup-clojure master composite
- actions/checkout v4 composite
- actions/setup-java v4.7.0 composite
- actions/setup-node v4 composite
- fi.metosin:siagent 0.1.0
- net.cgrand:macrovich 0.2.1
- org.clojure:clojure 1.10.3
- org.clojure:clojurescript 1.10.844
- org.clojure:tools.logging 1.1.0
