Skip to content

Conversation

@mwbrooks
Copy link
Member

@mwbrooks mwbrooks commented May 12, 2025

CHANGELOG

Added the experiment --experiment bolt-install to enable creating, installing, and running Bolt projects that manage their app manifest on app settings (remote manifest).

Summary

This pull request adds the --experiment bolt-install to begin work on creating, installing, and running Bolt projects that manage their app manifest on app settings (remote manifest).

The following changes were made:

  • Added the BoltInstall experiment name
  • Cast the BoltFramework experiment as Experiment instead of String, causing updates to tests
  • Added bolt-install to the experiment documentation

Reviewers

@zimeg @lukegalbraithrussell @technically-tracy How should we document the --experiment bolt-install?

We learned from the bolt experiment that it was difficult to track changes across multiple releases and especially hard to write a nice "Bolt Support" CHANGELOG when the experiment was removed. I think this is a chance for us to improve, especially since the docs are now part of the repo. A few ideas:

  1. Release Notes would auto-generate an "Experiment" section, so that experiment PRs are separate from the normal release notes.
  2. We can updates the experiments.md to document the new experiment (this PR has done it)
  3. It would be nice to have a place to document the current features of the experiment, since it's an evolving work-in-progress the description in experiments.md is the vision rather than the current state. One idea is to add sub-bullet points under the experiment in experiments.md to document what's available. This could become a go-to source for the release that announces the removal of the experiment (e.g. "Bolt Support").

Requirements

@mwbrooks mwbrooks added this to the Next Release milestone May 12, 2025
@mwbrooks mwbrooks self-assigned this May 12, 2025
@mwbrooks mwbrooks added enhancement M-T: A feature request for new functionality experiment Experimental feature accessed behind the --experiment flag or toggle semver:patch Use on pull requests to describe the release version increment labels May 12, 2025
@codecov
Copy link

codecov bot commented May 12, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 63.17%. Comparing base (dede31d) to head (77421b4).
Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #88   +/-   ##
=======================================
  Coverage   63.16%   63.17%           
=======================================
  Files         210      210           
  Lines       22186    22186           
=======================================
+ Hits        14013    14015    +2     
+ Misses       7087     7084    -3     
- Partials     1086     1087    +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Member Author

@mwbrooks mwbrooks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few comments to help guide the kind reviewers!

cf.SDKConfig.WorkingDirectory = "."
cm.AddDefaultMocks()
cm.Config.ExperimentsFlag = append(cm.Config.ExperimentsFlag, experiment.BoltFrameworks)
cm.Config.ExperimentsFlag = append(cm.Config.ExperimentsFlag, string(experiment.BoltFrameworks))
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: Side effect of updating BoltFrameworks to be an Experiment.

You will then be prompted to choose between **Bolt for JavaScript** or **Bolt for Python**. Choose your favorite flavor.

Your app will be cloned from the respective [JavaScript](https://github.com/slack-samples/bolt-js-starter-template) or [Python](https://github.com/slack-samples/bolt-python-starter-template) project template on our Slack Platform Sample Code repository, and its project dependencies will be installed. Then, `cd` into your project folder.
Your app will be cloned from the respective [JavaScript](https://github.com/slack-samples/bolt-js-starter-template) or [Python](https://github.com/slack-samples/bolt-python-starter-template) project template on our Slack Platform Sample Code repository, and its project dependencies will be installed. Then, `cd` into your project folder.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: Editor auto-removed trailing whitespace.

:::

To run your new app, use the `slack run` command with the experiment flag as follows:
To run your new app, use the `slack run` command as follows:
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: I think this was left over from when we had --experiment bolt.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for reviewing these pages as part of this change 👾 ✨

```

You'll be prompted to choose your team/workspace, and then your app should let you know that it's up and running. 🎉
You'll be prompted to choose your team/workspace, and then your app should let you know that it's up and running. 🎉
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: Editor auto-added a newline to end of file.

Comment on lines +9 to +10
* `bolt-install`: enables creating, installing, and running Bolt projects that manage their app manifest on app settings (remote manifest).
* `read-only-collaborators`: enables creating and modifying collaborator permissions via the `slack collaborator` commands.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: How does this look for documenting the new experiment?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like how an overall goal of the experiment is here to start!

One idea is to add sub-bullet points under the experiment in experiments.md to document what's available.

This is also a good idea IMO! Were you thinking of these as copied commit messages or more complete blurbs on the change?

You've been writing nice CHANGELOG notes at the top of PRs and I might lean towards matching that here but am also so curious of other thoughts 📚 ✨

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Keeping all of these notes in experiments.md also might make following changes faster for the wonderful readers.

It's seeming like this experiment will span multiple commands which could be confusing without reading all of the help pages otherwise?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Keeping all of these notes in experiments.md also might make following changes faster for the wonderful readers.

This was my thought as well. The bullet point list written for the developers using the feature will help them follow along and know what's available. We can also link to the PR that implements the features 🤔

When we release the feature, the bullet point list will help us draft a release announcement. If we need extra details, we can find them in the PRs by searching for the experiment label and text (bolt-install)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mwbrooks Oh, wow! Linking to PRs I guess is now an option. I like this idea a lot 😌 🟩

// BoltFrameworks experiment adds CLI support for Bolt JavaScript & Bolt Python.
// These frameworks will be introducing remote function support.
BoltFrameworks = "bolt"
BoltFrameworks Experiment = "bolt"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: Updated to be cast as an Experiment instead of string

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Woah great catch... At first I thought this was an extra space 😴

@mwbrooks mwbrooks marked this pull request as ready for review May 12, 2025 16:36
@mwbrooks mwbrooks requested review from a team as code owners May 12, 2025 16:36
Copy link
Member

@zimeg zimeg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mwbrooks Let's gooo! An experiment releasing makes for excited developments 🧪

With hopes that this one will be around for a few fast releases, the name seems alright to me. Knowing I can keep this in config.json is nice too.

One alternative I was thinking of might be rmrf for "remote manifest run features" but this isn't so clear... Your call on changing this of course 😉

  1. Release Notes would auto-generate an "Experiment" section, so that experiment PRs are separate from the normal release notes.

I like this idea! We can order these notes based on the first matching tag, which might mean forgone enhancement or bug since these find the top of these release notes, but I do think we can keep conventional commit messages to make this clear!

A few other thoughts are in comments below but I'm liking all of the ideas so far and nothing is blocking at all 🚢 💨

Thanks for giving solid thought to how we can improve experiments too. Iterating on these through the eventual conclusion continues to be an interesting exploration, but I'm confident we'll keep improving this!

Comment on lines +9 to +10
* `bolt-install`: enables creating, installing, and running Bolt projects that manage their app manifest on app settings (remote manifest).
* `read-only-collaborators`: enables creating and modifying collaborator permissions via the `slack collaborator` commands.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like how an overall goal of the experiment is here to start!

One idea is to add sub-bullet points under the experiment in experiments.md to document what's available.

This is also a good idea IMO! Were you thinking of these as copied commit messages or more complete blurbs on the change?

You've been writing nice CHANGELOG notes at the top of PRs and I might lean towards matching that here but am also so curious of other thoughts 📚 ✨

Comment on lines +9 to +10
* `bolt-install`: enables creating, installing, and running Bolt projects that manage their app manifest on app settings (remote manifest).
* `read-only-collaborators`: enables creating and modifying collaborator permissions via the `slack collaborator` commands.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Keeping all of these notes in experiments.md also might make following changes faster for the wonderful readers.

It's seeming like this experiment will span multiple commands which could be confusing without reading all of the help pages otherwise?

// BoltFrameworks experiment adds CLI support for Bolt JavaScript & Bolt Python.
// These frameworks will be introducing remote function support.
BoltFrameworks = "bolt"
BoltFrameworks Experiment = "bolt"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Woah great catch... At first I thought this was an extra space 😴

:::

To run your new app, use the `slack run` command with the experiment flag as follows:
To run your new app, use the `slack run` command as follows:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for reviewing these pages as part of this change 👾 ✨

@mwbrooks
Copy link
Member Author

@zimeg Thanks again for the quick review and thoughts! 🙇🏻

I like where we're going with documenting the experiments in experiments.md and linking to the PRs for extra details. It should help both our developers and education team.

We can order these notes based on the first matching tag, which might mean forgone enhancement or bug since these find the top of these release notes, but I do think we can keep conventional commit messages to make this clear!

Thanks for sharing how the release notes are generated. If we're matching the first tag, then perhaps we can hold off on adding the "Experiment" category. If we do, we might want it to be a M-T label so that all experiments are placed under the "Experiments" category.

@mwbrooks mwbrooks added the changelog Use on updates to be included in the release notes label May 13, 2025
@mwbrooks mwbrooks merged commit 6f92582 into main May 13, 2025
6 checks passed
@mwbrooks mwbrooks deleted the mwbrooks-bolt-install branch May 13, 2025 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog Use on updates to be included in the release notes enhancement M-T: A feature request for new functionality experiment Experimental feature accessed behind the --experiment flag or toggle semver:patch Use on pull requests to describe the release version increment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants