This is an automated email from the ASF dual-hosted git repository.
jimjag pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/openoffice.git
The following commit(s) were added to refs/heads/trunk by this push:
new ad26e2052f commit LLM drafted review/assessment of the differneces
between trunk (45x) and AOO42X for potential backports and general knowledge.
ad26e2052f is described below
commit ad26e2052feb759f8a61fc826e7daf97b53fff59
Author: Jim Jagielski <[email protected]>
AuthorDate: Mon Jun 8 14:33:51 2026 -0400
commit LLM drafted review/assessment of the differneces between trunk (45x)
and AOO42X for potential backports and general knowledge.
---
AOO-trunk.md | 183 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 183 insertions(+)
diff --git a/AOO-trunk.md b/AOO-trunk.md
new file mode 100644
index 0000000000..09e707cf32
--- /dev/null
+++ b/AOO-trunk.md
@@ -0,0 +1,183 @@
+# trunk vs AOO42X — Functional Difference Analysis
+
+**Date:** 2026-06-08
+**Repository:** apache/openoffice
+**Branches compared:** `trunk` (future 4.5.x / "dev") vs `AOO42X` (the 4.2.x
release branch)
+
+---
+
+## 1. Summary
+
+| | trunk | AOO42X |
+|---|---|---|
+| Branch tip | `9d1a529d5e` | `4ccec83d37` |
+| Tip commit subject | *Fix crash, uninitialized-return, and buffer bugs…* |
*(same)* |
+| Common ancestor | `a341bc611d` (2019-01-09) | (same) |
+| Commits ahead of merge-base | 2933 | 2486 |
+| Commits with **no patch-equivalent** on the other side | 711 | 318 |
+| **Python baseline** | **3.10.18** | **2.7.18** |
+| Apple Silicon (arm64) support | yes | yes |
+| Win64 native UNO C++ bridge | **yes** | **no** |
+
+### Headline findings
+
+1. **No functional capability exists in AOO42X that is missing from trunk.**
Every
+ functional AOO42X-only commit was verified to be present in trunk (most
under a
+ different commit hash because of whitespace/pre-commit divergence — see §2).
+ The 318 "AOO42X-only" commits by patch-id are almost entirely
**release-branch
+ bookkeeping** (version/build-number bumps, copyright-year updates, SVN-era
+ `Merge rNNNNN from trunk` backports) plus **spelling / pre-commit
whitespace**
+ commits that were applied to AOO42X in a different order than trunk.
+
+2. **The two branches are functionally very close.** The vast majority of the
711
+ trunk-only commits are **non-functional**: ~270 are
cleanup/typo/spelling/whitespace,
+ plus a large block of README/help/translation/graphics-asset updates and
test-tree
+ reorganization. Most genuinely-functional work (editeng 32-bit paragraph
indices,
+ WebDAV→curl port, dynamic OpenSSL, gbuild port of pyuno/ure, AdoptOpenJDK
detection,
+ frame-toolbar fix) has **already been merged to AOO42X** via squash/merge
commits and
+ is present on both branches. The Python file-editing/embedding base feature
was merged
+ to both branches on the same day (2026-05-24) as parallel commits
(`4bb26738ff` trunk,
+ `c779acf6cb` AOO42X), but trunk has since accumulated ~10 additional
post-merge
+ improvements to that feature that are not yet on AOO42X (see §3a).
+
+3. **The single biggest functional divergence is the platform baseline:**
+ trunk targets **Python 3.10** and ships a **native 64-bit Windows UNO
bridge**
+ (`msvc_win64_x86-64`); AOO42X deliberately stays on **Python 2.7** and has
**no
+ Win64 bridge**. These are intentional release-stability decisions, *not*
missing
+ cherry-picks (cf. the explicit AOO42X commit *"revert the Python 3.10
changes,
+ keep arm64 support"*).
+
+4. A **small set of discrete bug fixes is genuinely trunk-only and is suitable
for
+ cherry-pick** to AOO42X (see §3).
+
+---
+
+## 2. Why the commit counts overstate the divergence
+
+`git cherry`/patch-id reports 711 trunk-only and 318 AOO42X-only commits, but
most are
+*not* real functional gaps:
+
+- **Pre-commit whitespace hooks.** trunk adopted `pre-commit`
end-of-file-fixer,
+ trailing-whitespace, and mixed-line-ending hooks and ran them across the
whole tree
+ (PRs #255–#478). AOO42X ran an equivalent but separately-ordered set. This
reformats
+ thousands of files, so the *same logical change* produces *different
patch-ids* on the
+ two branches and shows up as "unique" on both sides.
+ - Example: the X11 autoscroll-cursor fix (`assw_curs.h`) appears unique to
AOO42X, but
+ the actual hex byte values are **identical** to trunk — only the per-line
formatting
+ (tabs, bytes-per-line) differs.
+
+- **Release bookkeeping (AOO42X side).** Build-number pre-allocation, `Update
copyright
+ year to 2022…2026`, `Bump up revision after tagging DevN`, MSI version
strings, and
+ SVN-era `Merge rNNNNN from trunk` commits dominate the AOO42X-only list.
+
+- **Squash/merge re-landing.** Large features were merged into AOO42X as
single squash
+ commits (e.g. `c779acf6 Merge branch 'python-editing-embedding'`,
+ `08fafdc14b AOO42X: revert the Python 3.10 changes, keep arm64 support`), so
the
+ individual trunk commits that compose them never match by patch-id even
though the
+ resulting source is identical.
+
+### Functional AOO42X-only commits — all verified present in trunk
+
+| AOO42X commit | Verified in trunk as |
+|---|---|
+| WebDAV provider serf/apr → curl (`9646dec`) | `51ba086bf1` (+ follow-ups
`e469ab6`, `f7b97bf`, `88ba7bc`…) |
+| OpenSSL built as dynamic library (`e350def`) | `8eb9a7e66a`, `0ca5b4b7b8` |
+| editeng 32-bit paragraph indices (PR #164) | `d5edfd0976` + full series;
`GetParagraphCount()` returns `sal_uInt32` on both |
+| SpreadsheetML `ss:DateTime` import (`48b860b`) | `195282cf3d` |
+| SpreadsheetML R1C1→A1 column bug (`0f570a5`) | `577fe17932` |
+| ODF `covered-table-cell` / `ss:MergeAcross=0` (`b9aa069`) | `a896732bfc` |
+| icu module parallel build fix (`93c12e1`) | `17604d2661` |
+| APR 1.6.x upgrade / Xcode12 (`316716d`) | `b1dc36c016` |
+| Basic single-line-if comment test #i126272 (`3b5ec47`) | `07758af81c` |
+| Tab function test document (`a1409b3`) | `3b297b4615` |
+| X11 / OS/2 / macOS pointer & cursor corrections | byte-identical in trunk
(whitespace-only diff) |
+| macOS SDK / C++ build tweaks (`0e91ffb`, `3d8a723`) | superseded by trunk's
newer arm64 `configure.ac` |
+| beanshell d.lst path/version (`2aea6da`, `2dbdbb8`) | identical
`bsh-2.1.0.jar` mapping in trunk |
+
+**Conclusion for the "no regression" requirement: PASS.** AOO42X contains
nothing
+functional that trunk lacks.
+
+---
+
+## 3. Trunk-only functionality SUITABLE for cherry-pick to AOO42X
+
+These are discrete, self-contained, low-risk fixes confirmed by file-content
diff to be
+trunk-only (the touched file genuinely differs between the branches), and they
do **not**
+depend on the Python-3 or Win64 baseline.
+
+### 3a. Recommended cherry-picks (bug fixes)
+
+| Area | trunk commit(s) | What it fixes | Risk |
+|---|---|---|---|
+| **Calc / MS Excel 2003 XML import** | `d10bb11432` | Importing references to
**columns 677–702** (and beyond) was wrong: the old XSLT used a `÷26 − 1`
scheme instead of base-26² (676). Touches `spreadsheetml2ooo.xsl`. | Low —
isolated XSLT + test doc |
+| **Calc / Excel 2003 XML export** | `b045a72b`, `3714104178`, `50f8b0f2cf` |
Use the correct `of:`/`ooow:` namespace and R1C1 form when exporting ODF
formulas to Excel 2003 XML; allow exporting ODF <1.2 formulas. | Low–medium |
+| **Win64 portability — file handles** | `5a41e572de` |
`SvStream::GetFileHandle()` returns `sal_uInt32` capped at 32 bits; widen to
support 64-bit Windows. (`tools/inc/tools/stream.hxx`, `strmunx.cxx`) | Low
(also benefits non-Win64) |
+| **Win64 portability — time_t** | `926379c890` | `rsc` preprocessor used a
32-bit-capped `long` for `time_t`; use native `time_t`.
(`rsc/source/rscpp/cpp3.c`) | Low |
+| **i18n unit tests** | `de76a5a`…`cc5c65fb` | New/relocated i18n JUnit API
tests under `test/testuno/source/api` (11 files, absent on AOO42X). | None
(test-only) |
+| **`senddoc.sh` — xdg-email** | `a946b6b` | On \*nix, call `xdg-email` to
send emails when `MAILER` is unset. The 42-line block is entirely absent from
AOO42X's `senddoc.sh` (55-line diff confirmed). | Low — shell script only |
+| **`senddoc.sh` — claws-mail** | `14c7d0b586` | Add claws-mail as a
recognised mailer in `senddoc.sh`. Same file, same low risk as xdg-email entry
above. | Low — shell script only |
+| **Python editor post-merge fixes** | `a7a66e361b`, `8e23be7474`,
`1a9bb40f52`, `1b85a9366d`, `d2cc3a1ab9`, `36f82a9eeb`, `511d7659d6` | ~10
commits improving the Python file-editing/embedding feature landed on trunk
after the parallel 2026-05-24 merge. Includes: fixed-width font in editor,
`pop()`/`del` key-error fix, module-cache reload fix (ZIP timestamp bug),
PythonScriptProvider marked active. | Low–medium (evaluate as a group) |
+
+> Note: the *frame-toolbar-missing-in-Writer* fix (`6bd5b10f`, `1714b106`),
+> AdoptOpenJDK/Java>1.8 detection (`2bf1cfb`, `779db4a`), and the Python
+> file-editing/embedding *base* feature were **checked and are already present
on
+> AOO42X** — do **not** re-cherry-pick those. The `xdg-email`, claws-mail, and
+> post-merge Python fixes listed above are **not** present on AOO42X.
+
+### 3b. Build-system / infrastructure (cherry-pick only if AOO42X wants the
same CI)
+
+| Area | trunk commit(s) | Notes |
+|---|---|---|
+| **gbuild port** of `pyuno`, `ure`, `packimages`, `apple_remote`, `qadevOOo`,
`test`, `testgraphical` | `1c25f25`, `453cfdf`, `147182f`, `e2cbcf0`,
`62e2780`, `19ee18f`… | Large; trunk migrated dmake→gbuild for these modules.
AOO42X already received the pyuno/ure `.mk` files via merge, but the
**JUnit/Ant test migration in `qadevOOo` is the single largest divergence**
(2310 files): trunk moved tests into `test/testuno` + JUnit; AOO42X keeps the
legacy `qadevOOo/objdsc` CSV-driven framew [...]
+| **pre-commit hooks + GitHub Actions linter** | `cc42a29`, `4ae038e`,
`819addb`, `ffa4afe`, `98279f3` | trunk's `.pre-commit-config.yaml`, codespell
word-list, `actions/checkout@v6`, `actions/cache@v5`. AOO42X already backported
an equivalent set (`f30d168 Backport pre-commit and CI configuration from
trunk`). |
+
+### 3c. NOT suitable for cherry-pick (intentional baseline / release-policy
decisions)
+
+| Item | trunk | AOO42X | Why not |
+|---|---|---|---|
+| **Python 3.10 baseline** | `PYMAJOR=3 / 3.10.18` | `PYMAJOR=2 / 2.7.18` |
AOO42X **explicitly reverted** the Py3.10 change (`08fafdc14b`) to keep the
4.2.x release on Python 2.7. Cherry-picking would change the shipped runtime. |
+| **Native Win64 UNO C++ bridge** (`msvc_win64_x86-64/`) | full directory
present | directory **absent** | A whole new architecture target (`b146d3b`,
`b7f28a5`, `4844d31`, `2cf0c06`, `d35e03c`, `8a51f61`…). New platform support
belongs in a feature release, not a maintenance branch. |
+| Boost / `-std=gnu++98` Clang build tweaks (`8ef8ad0`) | applied | n/a | Tied
to trunk's toolchain modernization. |
+| Various version-string / build-number / dev-build branding | trunk = 4.5.x
line | AOO42X = 4.2.x line | Branch-identity, must stay divergent. |
+
+---
+
+## 4. Largest divergence areas (by changed-file count, `git diff trunk AOO42X`)
+
+```
+2310 main/qadevOOo <- test framework migration (trunk: JUnit/Ant;
AOO42X: legacy)
+ 28 main/filter <- mostly whitespace + the SpreadsheetML fixes (§3a)
+ 26 main/jurt <- JUnit test ports
+ 25 main/test <- gbuild/Google-Test port
+ 23 main/bridges <- Win64 bridge (§3c) + whitespace
+ 21 main/forms <- JUnit complex-test cleanup
+ 13 main/connectivity
+ 11 test/testuno <- new JUnit api tests (§3a)
+ 11 main/solenv
+ 10 main/vcl <- pointer assets (whitespace) + Win64
+ 10 main/bean <- Win64 fixes for main/bean
+```
+
+The dominant `qadevOOo` delta is **test-infrastructure modernization**, not
product
+functionality. End-user behavior of the two branches is nearly identical apart
from the
+Python runtime and Win64 availability.
+
+---
+
+## 5. Methodology
+
+1. `git merge-base trunk AOO42X` → common ancestor `a341bc611d` (2019-01-09,
the 4.2.x
+ branch point).
+2. `git cherry -v AOO42X trunk` / `git cherry -v trunk AOO42X` →
patch-id-unique commits
+ in each direction (711 / 318).
+3. Filtered out non-functional commits (cleanup, whitespace, spelling,
pre-commit,
+ copyright/version bumps, merges, README/translation/graphics) → ~434
trunk-only
+ "signal" commits, manually triaged.
+4. For every functional AOO42X-only commit, verified presence in trunk by
**commit
+ message search and by file-content diff** (`git diff -w trunk AOO42X --
<file>`),
+ distinguishing whitespace-only differences from real ones.
+5. Confirmed key baselines directly from source: `main/python/pyversion.mk`
+ (`PYMAJOR` 3 vs 2), `main/bridges/source/cpp_uno/` directory listing (Win64
bridge),
+ editeng `GetParagraphCount()` signature, pyuno gbuild `.mk` presence.
+
+*All commit hashes in this document were resolved against the working tree on
2026-06-08.*