Skip to content

Conversation

paulfitz
Copy link
Member

@paulfitz paulfitz commented Oct 6, 2025

Context

This is a WIP for fleshing out the "crowdsourcing" idea in #1837 and #1829

In short, you can chose to collect "proposed changes" for a document by setting a flag. If you do so, then anyone can fork your document, make some changes, and propose those changes to you by clicking a button. All proposed changes to a document are visible on a special "proposed changes" page on the document. You can click to merge changes you like. BE AWARE that for now only very unambitious changes are mergeable (changes to strings and numbers), though we hope to iterate on that quickly if the feature proves useful.

How to try out the preview

See the fly.dev link posted by a bot at the end of this PR thread.

First, you must visit a document and append ?experiment=proposedChangesPage to the URL. When you do this, then on document settings you will see ... ANOTHER separate flag for enabling proposals. This flag will exist even when the feature matures. I added a flag for this because we're planning to let everyone see proposals made to a public doc, and it might be annoying if proposals could be added without you being aware of the possibility.

Screenshot from 2025-10-06 19-39-31

Once you've set this flag, there is a new "Proposed Changes" page, initially empty.

Screenshot from 2025-10-06 19-44-40

If someone makes a fork of your document, they see a "Proposed Changes" page, which shows the changes they have made relative to your document, and lets them "Propose" that to you.

Screenshot from 2025-10-06 19-49-05

When they Propose, they see some status information.

Screenshot from 2025-10-06 19-49-45

And this is what you see on your "trunk" document:

Screenshot from 2025-10-06 19-50-55

The rendering of differences will need to improve! That isn't in the scope of this PR though, it is separate work. The data needed to make better differences is available, you can see more context if you click the little arrow near the table name:

Screenshot from 2025-10-06 19-52-33

You can choose to click "Apply" and have the changes show up in your doc (ctrl-Z to undo):

Screenshot from 2025-10-06 19-54-08

This isn't new, but you can click in cells in the difference to be brought to where they are in your document (in simple cases). Here I click on Gibson:

Screenshot from 2025-10-06 19-54-47

(These screenshots are out of date, just showing the first working pass through.)

Summary:

  • Visit the fly.dev link near the end of this thread (https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev/).
  • Click "log in" to log in as default fake user.
  • Make a document with a table with some content.
  • Go to "settings" in toolbox on left.
  • Add ?experiment=proposedChangesPage to URL, accept the experiment.
  • Then check the box on the settings page to accept proposals.
  • There should be a new "proposed changes" page that is initially basically empty. Everyone with access to the doc will see this, they don't need to use the experiment URL.
  • In the share menu, click on "Work on a copy".
  • Make a small data change in that copy (nothing fancy yet! change a few string/number cell values, or add/delete a row or some rows).
  • In "proposed changes" page, see the changes you made, then click "Propose".
  • Now if you go back to the original doc, you should see the proposal on the "proposed changes" page.
  • You should be able to apply it, and see that the change happens in your doc. You can hit undo to remove it.

Related issues

Has this been tested?

Please don't look at the code yet, it is full of printfs and placeholders, I'll be embarrassed. Just putting this up to get a preview to show around as it matures.

TODO

  • 👍 yes, I added tests to the test suite
  • 💭 no, because this PR is a draft and still needs work
  • 🙅 no, because this is not relevant here
  • 🙋 no, because I need help

Implementation details

Not much new is added to Grist. This is built on the existing forking mechanism. An extra table is added in the home db called proposals. Each row stores the kind of results the /compare endpoint gives for a pair of documents, serialized in json. (This could get big for big changes! That would be bad. Future option: don't store content of big changes, compute it on need, or store externally). This makes the proposals page quick and easy to render. A few flags are added to docs.options in the home db.

Since proposals aren't part of the doc, undo/redo doesn't work naturally for change operations (dismissing, retracting etc). Applying proposals can be and is made undoable through the built in mechanism, but isn't well integrated with the proposals page.

@paulfitz paulfitz force-pushed the paulfitz/proposed-changes branch from ae4c698 to b03d326 Compare October 6, 2025 18:51
@paulfitz paulfitz added the preview Launch preview deployment of this PR label Oct 6, 2025
Copy link
Contributor

github-actions bot commented Oct 6, 2025

Deployed commit 316ec8dfda3055a88cca72bab810bd4c770acc03 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-05T19:47:32.140Z)

Copy link
Contributor

github-actions bot commented Oct 6, 2025

Deployed commit 9f68d58e4c6deba07d8137682d499d1f82c2f360 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-05T22:13:07.266Z)

Copy link
Contributor

github-actions bot commented Oct 7, 2025

Deployed commit cd268c963ac14cd1d7ca83475633ad3c708de9ac as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-06T00:12:24.929Z)

Copy link
Contributor

github-actions bot commented Oct 7, 2025

Deployed commit 6d03ed33033266588e81ffea340037a8f8cda581 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-06T17:52:50.555Z)

Copy link
Contributor

github-actions bot commented Oct 7, 2025

Deployed commit 583546c831e4cde3aad95c4aa61bb4a2c430b75a as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-06T18:17:19.554Z)

Copy link
Contributor

github-actions bot commented Oct 7, 2025

Deployed commit 7a9d358f4abd29bfbfb0aeeb954cad91371a97c6 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-06T18:34:56.195Z)

Copy link
Contributor

github-actions bot commented Oct 7, 2025

Deployed commit 9989278aef38d3f010b14058d83d077382e6ddf0 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-06T18:55:38.071Z)

Copy link
Contributor

github-actions bot commented Oct 7, 2025

Deployed commit 2fe2a8dad57f44d7cfd66cd42495b2e150587372 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-06T19:47:55.030Z)

Copy link
Contributor

github-actions bot commented Oct 7, 2025

Deployed commit 2105071934c1ef698dddad083523cd5070ebca5b as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-06T20:38:53.137Z)

Copy link
Contributor

github-actions bot commented Oct 8, 2025

Deployed commit e69de744719a9406424ecd183b92bc00f555f858 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-07T13:40:36.706Z)

Copy link
Contributor

github-actions bot commented Oct 8, 2025

Deployed commit e0861978c7d3b156e8266398e22df0a998637de2 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-07T18:06:34.992Z)

Copy link
Contributor

github-actions bot commented Oct 8, 2025

Deployed commit 08b66a8f58c830b0a017e4a2bc1ac8daf1216ee2 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-07T20:39:05.240Z)

This is a WIP for fleshing out the "crowdsourcing" idea in
#1837
and
#1829

Please don't look at the code yet, it is full of printfs and
placeholders, I'll be embarrassed. Just putting this up to get
a preview to show around as it matures.
@paulfitz paulfitz force-pushed the paulfitz/proposed-changes branch 2 times, most recently from 4a815f3 to 9faaf3e Compare October 9, 2025 15:23
Copy link
Contributor

github-actions bot commented Oct 9, 2025

Deployed commit 9faaf3ea41604f0426d89b6a646501ca2eab1e69 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-08T15:40:30.052Z)

Copy link
Contributor

github-actions bot commented Oct 9, 2025

Deployed commit c9e63f3d6f25d7796c16102a90e591a42637db3d as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-08T15:47:43.841Z)

Copy link
Contributor

github-actions bot commented Oct 9, 2025

Deployed commit 754de45baa2440b8dd50caea9f6422649f9cbb1e as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-08T15:59:26.280Z)

Copy link
Contributor

github-actions bot commented Oct 9, 2025

Deployed commit 92080d1ac39178491a871e55e136065095387a72 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-08T20:50:39.771Z)

Copy link
Contributor

Deployed commit fa243942dd9d1c60b2e7685945b1d4167f1cf34c as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-09T15:13:26.451Z)

Copy link
Contributor

Deployed commit 99d05d5558eb8e8e551f6186da2f7cfa3f8578e2 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-09T15:52:08.592Z)

Copy link
Contributor

Deployed commit 3ca481711dd331d7fdec94be4f67b0ec6e4906e1 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-09T16:16:40.808Z)

Copy link
Contributor

Deployed commit b5dc03ebb846bb287e12fbf9102ab27159176dbf as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-09T20:07:42.906Z)

Copy link
Contributor

Deployed commit 807456f9129eba3eaf5c57fa4c774f1390893a0c as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-09T20:37:35.710Z)

Copy link
Contributor

Deployed commit 4c6aea0748060571e53fe76a59a47bf03a7d9d08 as https://grist-gristlabs-grist-core-paulfitz-proposed-changes.fly.dev (until 2025-11-09T21:25:49.637Z)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

preview Launch preview deployment of this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant