Both ProseMirror and the newer version of CodeMirror have a pretty elegant solution to this: each modification to the document is modeled as a step that keeps track of indices instead of node/text identities, and uses a data structure called a "position map" that the buffered steps can be mapped through to create steps with updated positions, which are then applied to your document.
In practice, it works quite well. Here's more info:
Github's https://primer.style/product/getting-started/ does a good job of making a cohesive design language that works just as well for server-rendering Ruby views and "upgrading" parts of the ui to React views when you need more interactivity. That's a constraint that I wish more of the Rails ecosystem design tooling would attempt to solve for.
You're not alone. There's been an effort to transparently update the UI to a React implementation over the past year or two, and while I understand the benefits to that approach, they have introduced some flakiness in moving away from a the server-rendered pjax/html-pipeline/simple web components approach that was so cohesive and battle tested over the decade before it.
The convention on desktop and mobile is not to have a submission at all. If you click one of these "mercury" buttons, you can always have up-to-date state.
Forms and submissions are mostly a web convention. I too think that's more natural, but there are a lot of existing contexts like settings where the expectation is that making the selection doesn't require an explicit "save" step.
I'm not very excited about the product itself, but if you are at all interested in spatial computing, it's worth reading through Apple's design and developer resources:
While I don't think there will be a mass adoption by people willing to put on goggles throughout the day, it's clear that a lot of Apple's ecosystem is being directed toward environmental and situational computing, and the SDK backs that up. Using gaze detection to focus on more than one device in a room, surfacing certain interactions in specific rooms, and low-lag screen mirroring from devices are all pretty high-cost investments that are likely to find uses in other products. I look forward to what kinds of "continuity" type features this tech introduces.
For instance, with Diagram Maker, application developers can enhance the experience for end customers by enabling them to intuitively and visually build cloud resources required by cloud services such as Workflow Engines (AWS Step Functions) or Infrastructure as Code (AWS CloudFormation) to get the relationships and hierarchies working.
Does this mean that Step Functions and CloudFormation will adopt this library? Both already have similar visualizations.
Do you envision any extension points to the way engines are implemented that could better enforce boundaries? In our engines, there was nothing that referenced another engine's resources, leaving the main application to handle route mapping and ActiveRecord associations between app models and engine's models.
I feel like the use-case for engines has long been around supporting framework like functionality (Devise, Spree, etc), but I wonder if there are changes to be made that better support modularization for large apps.
A number of years ago, I worked on a team (~20 engineers in total) that successfully carved off two relatively independent portions of a large Rails app using engines. I'm happy to see that Shopify is also using that strategy.
I'm curious to know more what sorts of challenges they have around managing dependencies across engines — I think what we were doing was fairly vanilla Rails, and we didn't have the opportunity to run into those sorts of issues.
Webpack-based projects are heavy. A Rails app comes with a Webpack-based Javascript scaffold out-of-the-box.
I wonder if something like Rollup or NCC could be used to create a single-file Javascript dependency in the general case that is only used for vanilla Webpacker builds, and relying on the individual packages could be something left for when you need to customize the Webpacker build.
Judging by some of the Hey developments, it's possible we could see a much more lightweight JS integration in Rails in the future:
I gotta say, the "installing" workflow is pretty opaque and confusing. Why do I need to both authorize GitHub _and_ install a GitHub app? If I elect to only authorize it for specific repos (instead of read/write access to all of my repos), why do I need to install it first for some empty project before GitHub can create the repo for the course I'm trying to access?
It would seem that https://github.com/atom/atom-languageclient is still under active development. Hopefully this means that the core Atom team will continue to work on language server features.
There's https://github.com/google/zoekt which provides a pretty straight-forward and memory-efficient implementation. Their design document goes a bit into what makes it fast:
- Collected media https://the-next.eliterature.org/collections/2
- A catalog introducing this software to a print audience https://archive.org/details/voyager-360-catalog/mode/2upa