RFCs are a way for Atlassian to share what we’re working on with our valued developer community.
It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.
Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
RFC dates:
- Publish: March 4, 2024
- Discuss: March 18, 2024
- Resolve: March 22, 2024
Summary of Project
We’re in the early stages of planning an event filtering and batching feature for Forge apps and we’d like to ask you about your needs and expectations in this area before we start the development.
Event filtering is a functionality which will give apps the ability to create criteria for, what kind of events they should receive. For example: instead of listening to all issue:updated events from the instance, you will be able to listen to events only from specific projects.
Events batching is a functionality which will group product events into batches and invoke a single function for a group of events. For example: instead of 10 invocations, you will receive one invocation with data from 10 events.
Problem
Currently, Forge app developers who listen to product events are running into problems when there is an influx of events on the customer’s site. There is no way of listening to only the events that are needed for their apps, causing costs both on their side and our side. Moreover, it reduces the amount of business logic on the app side and decreases the amount of unnecessary traffic on the product side.
We also believe that introducing batched events it will enable partners to reduce the processing time and increase Forge performance due to the usage of bulk APIs.
Proposed solution
At the moment we do not have a chosen solution although we are considering the following approaches:
- Introduce a completely new way of filtering for Forge apps that won’t be Jira specific.
- Introduce as a first step events filtering for Jira Forge apps only similar to what we have currently in Connect - JQL based or use another filtering method like Jira Expressions.
- Introduce batching by event type with a max events and batching window limits.
Asks
We are still early in the design/proof-of-concept phase and are keen for your feedback. While we would appreciate any feedback, we’re especially interested in learning more about:
Events filtering:
- What use cases do you have for filtering? Which products and fields do you want to filter events by?
- Is the current set of fields that’s been sent in the payload enough to filter events?
- What resources do you anticipate filtering? Are there well-established expression languages for filtering events about those resources?
- Would you prefer static (hard-coded in the manifest) or dynamic (calculated at runtime) filtering? Which one would you use first and why?
Events batching
- What use cases do you have for batching?
- What’s the longest batch window that’d work for you? Are you willing to trade throughput for latency? Why?
- What configuration options do you need for batching?
- Do you have any requirements around minimum/maximum batch size?
Of course, we’d also appreciate it if you would share any other thoughts about event filtering and batching and Connect/Forge webhooks in general.
Thank you.
Update (October 2, 2024)
We have recently added more information to the comment below regarding the events filtering solution. If you have any feedback for our team, please feel free to share. The RFC will remain open for the next two weeks to gather your input (October 2 - 16, 2024).