Thanks a lot for a really interesting meetup! This is a short summary of what we have discussed. Please correct me if I’ve made any mistakes.
-
At the beginning @robertdp answered the question and described what is a possible use case and what are the objectives of his purescript-react-basic-hooks-router prototype and how it differs from a much simpler approach used in purescript-react-realworld. I think that we can expect that Robert is going to share this info when the lib reaches full maturity in the docs and possibly during some meetup again
-
@afc sketched a general overview of the libs ecosystem which he is working on. Beside a really valueable d3 DSL and bindings he is also working on the graphiviz / dot related lib. As you can guess this creates an interesting possibility for PureScripters to use these tools together. I hope that we are going to hear even more details on the topic from the Author during the future meetups. Really cools stuff. Thanks Andrew!
-
Through the main part of the meetup we took the opportunity and asked @f-f questions about the PS registry. Fabrizio was kind enough to answer all questions and didn’t expect that we know the spec! The discussion about PS registry was quite dense. I’m only listing here some topics:
- We were able to hear ideas behind overall architecture of the registry:
- it has pull based model
- it caches all packages
- it uses git protocol
- it provides sha and exposes original sources links (so you can fetch from them)
- pulling etc. is implemented in PureScript (!) so every PureScripter is able to help here
- Fabrizio reviled some history behind cooperation / spec proof reading / suggestions from the folks from the github. They are responsible in some part for other registries on the github (npm, Swift lang registry) so this was really valuable feedback.
- We know now that versioning schema will be enforced and that version ordering will be determined by it (and not by publishing date). In other words the latest stable release has the highest version number.
-
@f-f described how he pictures the publishing flow using spago in the future:
-
spago version
is going to generate / upgrade manifest file for the lib, -
spago publish
is going to produce a link to a new issue under registry repo, - a library author have to follow the link and confirm a new issue which will trigger a tarball fetching and finishes the process.
-
- We had a quite dens discussion between @kritzcreek and @f-f about registry storage backends, mirroring (we have pull model here as well vs feeds), consistency (sha is generated only after a successful tarball caching). I wasn’t able to fully comprehend the discussion. Sorry
- Currently the registry stores no additional PS backend (compilation target) specific information. Users should take care of this kind of stuff on its own.
- We have looked into manifest example and its type (yes, the manifest format has its well typed spec!):
- Fabrizio also pointed out that the manifest format should always be backward compatible.
- Next we have a really serious discussion about the trivial problem of naming things in the context of the manifest spec. @kritzcreek said that he prefers
library
overlib
,dependencies
overdeps
and evendevelopment
overdev
(I’m really not sure here?). Fabrizio proposed emoticons usage instead of field names which nicely solves the problem! So finally we are going to have a in the place of alib
and instead of atest
(or the other way around?). This is the last and final backward incompatible change in the manifest spec ever! I’m only not sure if we are going to use this encoding style for library names as well? - We also shortly discussed timeline / next steps of the project:
- settling on the schema of the manifest
- implementation of the source fetching
- migration from bower and possible removal of bower.json manifest (we are going to have two manifest during the initial phase for sure).
Fabrizio, I want to thank you once again for this really informative AMA session!
- We were able to hear ideas behind overall architecture of the registry:
-
During a somewhat accidental and “unofficial” part of the meetup (after the final “bye, bye”) we have a really interesting another AMA session. @Jonas and @robertdp described a bit of history behind realworld-react-basic project. We have discussed some design choices which you can find in the realworld repo like app monad pattern,
useStore
hook, SSR. We have discussed some practical downsides, traps etc. which PureScripters may encounter when they use react.
Additionally we were able to go through some design differences between apiary and other servant like approaches and stability of the library API.
It was a real pleasure to hear your thoughts, ideas and experiences and I hope that we can “reply” some of the parts of this discussion during an “official part” of one of the upcoming meetups!