Skip to content

[Website] Add blog post on Python UnboundedSource and Watch - #40091

Open
Eliaaazzz wants to merge 9 commits into
apache:masterfrom
Eliaaazzz:website-gsoc-2026-python-streaming
Open

[Website] Add blog post on Python UnboundedSource and Watch#40091
Eliaaazzz wants to merge 9 commits into
apache:masterfrom
Eliaaazzz:website-gsoc-2026-python-streaming

Conversation

@Eliaaazzz

@Eliaaazzz Eliaaazzz commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Adapt the GSoC final report into a concise blog post about the Python UnboundedSource API and Watch transform. Cover their design, runner validation, and local benchmarks, with a link to the full report.

Validation: checked against the report and current APIs; Hugo 0.117.0 production build, browser preview, and git diff --check passed.

@Eliaaazzz Eliaaazzz changed the title [Website] Add GSoC 2026 Python streaming blog post [Website] Introduce Python unbounded sources and continuous polling Sep 10, 2026
@Eliaaazzz Eliaaazzz changed the title [Website] Introduce Python unbounded sources and continuous polling [Website] Add blog post on Python UnboundedSource and Watch Sep 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Assigning reviewers:

R: @damccorm for label website.

Note: If you would like to opt out of this review, comment assign to next reviewer.

Available commands:

  • stop reviewer notifications - opt out of the automated review tooling
  • remind me after tests pass - tag the comment author after tests pass
  • waiting on author - shift the attention set back to the author (any comment or push by the author will return the attention set to the reviewers)

The PR bot will only process comments in the main thread (not review comments).

@damccorm damccorm left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks - adding @Abacn as a reviewer who is closer to the work here

email: dhalperi@apache.org
twitter:
eliaaazzz:
name: Elia Liu

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Are you comfortable including an email? In general, we try to have at least that information so that people can reach out if they have thoughts or questions (admittedly this is rare)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Happy to include it. Added elialiulzy@gmail.com to the author entry.

limitations under the License.
-->

The Apache Beam Python SDK now includes an `UnboundedSource` API for custom

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

In your intro, I think it would be nice to mention that this is a Google Summer of Code project - I think it both gives useful context and highlights your contribution a little bit better

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Also, it would be nice to address the "why?" here - what problem(s) were you trying to address

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good idea, thank you. The opening paragraph now says I built both APIs during my Google Summer of Code 2026 project with Beam, mentored by Yi Hu.

@Eliaaazzz Eliaaazzz Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thank you, Danny. I've updated the PR to explain the problems I was trying to solve.

Name the Google Summer of Code project in the intro and add a motivation
section describing the gaps the two APIs fill. Describe what the
MatchContinuously refactor changed about its per-file state. List a contact
email on the author entry.
@Eliaaazzz

Eliaaazzz commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Thank you for the quick review, Danny, and for bringing in Yi Hu. All three comments are addressed.

Say what the two APIs let a Python developer build: a source for their own
message queue or database change feed, and reusable polling for an input that
keeps growing. Credit the splittable DoFn support that already existed, and
note that checkpoint finalization is best effort.
An unbounded splittable DoFn could already do this. UnboundedSource exists so
a source author does not have to learn restrictions, resumption, and watermark
estimators first.

@Abacn Abacn left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! This LGTM, just had one comment


<!--more-->

This post describes the implementation on Beam's `master` branch as of September

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

blog audiences of blog post are mainly current or provisional Beam users. Consider phrase it as

This post describes the status up-to-date as of Beam 2.77.0

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Makes sense, thanks. Changed it to "This post describes both APIs as of Beam 2.77.0".

Readers track Beam releases, so name 2.77.0 instead of the master branch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants