<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

# List Of Documents Submitted To dev@beam.apache.org In 2025
| No. | Author | Subject | Date (UTC) |
|---|---|---|---|
| 1 | Kenneth Knowles | [Apache Beam Release Acceptance Criteria - Google Sheets](https://docs.google.com/spreadsheets/d/1qk-N5vjXvbcEk68GjbkSZTR8AGqyNUM-oLFo_ZXBpJw) | 2025-01-13 10:54:22 |
| 2 | Danny McCormick | [Apache Beam Vendored Dependencies Release Guide](https://s.apache.org/beam-release-vendored-artifacts) | 2025-01-13 15:00:51 |
| 3 | Danny McCormick | [Beam Python & ML Dependency Extras](https://docs.google.com/document/d/1c84Gc-cZRCfrU8f7kWGsNR2o8oSRjCM-dGHO9KvPWPw) | 2025-01-27 15:33:36 |
| 4 | Danny McCormick | [How vLLM Model Handler Works (Plus a Summary of Model Memory Management in Beam ML)](https://docs.google.com/document/d/1UB4umrtnp1Eg45fiUB3iLS7kPK3BE6pcf0YRDkA289Q) | 2025-01-31 11:56:59 |
| 5 | Shunping Huang | [Improve Logging Dependencies in Beam Java SDK](https://docs.google.com/document/d/1IkbiM4m8D-aB3NYI1aErFZHt6M7BQ-8eCULh284Davs) | 2025-02-04 15:13:14 |
| 6 | Ahmed Abualsaud | [Iceberg Incremental Source design](https://s.apache.org/beam-iceberg-incremental-source) | 2025-03-03 14:52:42 |
| 7 | Kenneth Knowles | [[PUBLIC] Timers, Watermark Holds, Loops, Batch and Drain](https://s.apache.org/beam-timers-and-drain) | 2025-03-11 14:00:00 |
| 8 | Robert Bradshaw | [Apache Beam YAML testing](https://s.apache.org/beam-yaml-testing) | 2025-03-17 14:00:00 |
| 9 | Jack McCluskey | [[Design Doc] Generic Remote Model Handlers for RunInference](https://docs.google.com/document/d/17A_oHJ7s3ol4TGCUpKeYc6iozkcTwN_e4H_J3kRlgPM/edit?usp=sharing) | 2025-03-24 14:00:00 |
| 10 | Robert Bradshaw | [Beam YAML Unknown Schemas](https://s.apache.org/beam-yaml-unknown-schema) | 2025-03-26 14:00:00 |
| 11 | Derrick Williams | [Beam Yaml Integration Tests Gap Assessment and Proposal](https://s.apache.org/beam-yaml-it) | 2025-04-11 10:08:00 |
| 12 | Jack McCluskey | [Beam Python Yapf Version upgrade](https://s.apache.org/beam-python-yapf-upgrade) | 2025-05-01 16:30:00 |
| 13 | Kenneth Knowles | [Beam Element Extended Metadata - CDC Metadata](https://s.apache.org/beam-cdc-metadata) | 2025-05-02 14:05:13 |
| 14 | Charles Nguyen | [Beam YAML, Kafka and Iceberg User Accessibility (GSoC 2025)](https://docs.google.com/document/d/1m7AKZYkTf_cuJKU1eCh8oX25lOxwixnVUblEj16aSDU/edit?usp=sharing) | 2025-05-24 11:11:14 |
| 15 | Minbo Bae | [Beam Protobuf Schema (Java)](https://docs.google.com/document/d/1euOq_Uu4sycT-AiN6MQxJmsOgInyABiFSwW-U3kpwlk/edit?tab=t.0#heading=h.xzptrog8pyxf) | 2025-05-27 00:43:08 |
| 16 | Mohamed Awnallah | [[Proposal][GSoC 2025] Milvus Vector Enrichment Handler for Beam](https://docs.google.com/document/d/1lzoSGSblrFtf7YK9n5p9BEBw8jRhKeOOKqy0FP1urvg/edit?usp=sharing) | 2025-05-29 17:55:11 |
| 17 | Ahmed Abualsaud | [Introducing Catalogs to Beam SQL](https://docs.google.com/document/d/16P0JrcJ28KSoMMpLYExWPZaala7CE4Ezen-jC_ly3M4/edit?tab=t.0) | 2025-06-11 08:38:55 |
| 18 | Enrique Calderon | [[GSoC 2025] Git based Privilege Management System](https://summerofcode.withgoogle.com/programs/2025/projects/QRKMhW67) | 2025-06-11 11:14:54 |
| 19 | Chen Canyu | [[GSoC 2025] Proposal: Enable pip-based installation for Beam JupyterLab SidePanel](https://summerofcode.withgoogle.com/media/user/a0dca52853b4/proposal/gAAAAABojNSkDnSn0L_3Y8TRLRvPS99439gBLcsrk5beUZHCj3bGBredej4j0i0A3AppWrm6KBCO2THzaNliJ55wJ3ksKFcqto3En2h74H-UQPo8j846W3k=.pdf) | 2025-06-23 11:04:36 |
| 20 | Jack McCluskey | [The Current State (and Future) of Beam Python Type Hinting](https://s.apache.org/beam-python-type-hinting-overview) | 2025-06-26 10:12:03 |
| 21 | Danny McCormick | [[Proposal] Beam ML containers](https://docs.google.com/document/d/1JcVFJsPbVvtvaYdGi-DzWy9PIIYJhL7LwWGEXt2NZMk/edit?usp=sharing) | 2025-06-30 15:07:04 |
| 22 | Mohamed Awnallah | [[Proposal][GSoC 2025] Milvus Vector Sink I/O Connector for Beam](https://docs.google.com/document/d/1agpFq9dy8_7ptMxTET0X7AmGIbDeY0_hGUq-5GNVDqs/edit?usp=sharing) | 2025-07-16 16:18:57 |
| 23 | Shunping Huang | [Design: Turn-key PTransforms for Time Series Processing in Beam](https://s.apache.org/beam-time-series-processing) | 2025-07-18 20:33:00 |
| 24 | Jack McCluskey | [Evaluating Third-Party Libraries for Use in Beam Python Type Checking](https://s.apache.org/beam-python-third-party-type-checking) | 2025-07-23 10:03:03 |
