virt-v2v
react-elm-components
virt-v2v | react-elm-components | |
---|---|---|
4 | 1 | |
69 | 778 | |
- | 0.1% | |
8.7 | 3.9 | |
9 days ago | 3 months ago | |
OCaml | Elm | |
GNU General Public License v3.0 only | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
virt-v2v
-
Two Years of OCaml
In virt-v2v we eventually enforced that every module file also has a corresponding interface file: https://github.com/libguestfs/virt-v2v/blob/master/check-mli...
-
Why and How We Retired Elm at Culture Amp
You can look at the project yourself: https://github.com/libguestfs/virt-v2v I've been writing OCaml for 20+ years and C for 40 years.
-
Multicore OCaml: April 2021
I develop in OCaml from time to time, and it's pretty practical. Separate compilation, makes small-ish binaries that most people wouldn't know weren't written in C/C++, easily call out to C if you need to. We steer clear of the more complex language features like functors because they confuse most programmers.
Here's an example of one very widely used production application: https://github.com/libguestfs/virt-v2v/tree/master/v2v
-
Traversing nested data-structures in various languages
XPath is the real killer feature for XML. I don't think it's possible to use it in this particular example, but in the more generally useful cases where you want to pull (eg) all subnodes with key matching a particular string, XPath is great.
Here's it being used in real code (search for "xpath_"):
https://github.com/libguestfs/virt-v2v/blob/master/v2v/parse...
https://github.com/libguestfs/virt-v2v/blob/master/v2v/parse...
react-elm-components
-
Why and How We Retired Elm at Culture Amp
They were considered, I was on the team that considered them. (I work at Culture Amp and at one point was leading the Design System team).
To be clear: embedding Elm in React is easy (we host the main NPM library for doing so: https://github.com/cultureamp/react-elm-components). But embedding React in Elm is harder, as Elm doesn't give any easy "escape hatches" to interact with native JS code.
The main opportunity is to use Web Components. Elm knows how to render any HTML component, including `x-my-custom-button`, which could render using React or something else. We looked into options for this, including prototyping https://www.npmjs.com/package/backstitch as a way to embed our React components as Web Components for consumption in Elm. (No open source packages existed to do this at the time).
We also did quite a deep dive on using Stencil, which has a React-like API, to create web components for both React and Elm - even including publishing new plugins for the ecosystem to generate Elm bindings for your web components. Kevin went into some of the detail for this in the post if you're interested.
What are some alternatives?
eioio - Effects-based direct-style IO for multicore OCaml
react-children-utilities - Extended utils for ⚛️ React.Children data structure that adds recursive filter, map and more methods to iterate nested children.
ocaml-multicore - Multicore OCaml
reactfire - Hooks, Context Providers, and Components that make it easy to interact with Firebase.
nested-data-structure-traversal
elm-react-component
specter - Clojure(Script)'s missing piece
react-on-rails - Integration of React + Webpack + Rails + rails/webpacker including server-side rendering of React, enabling a better developer experience and faster client performance.
loom - Concurrency permutation testing tool for Rust.
react-famous - React bridge to Famo.us
ocaml-aeio - Asynchronous effect based IO
react-media - CSS media queries for React