Skip to content

Conversation

l0rinc
Copy link
Contributor

@l0rinc l0rinc commented Aug 20, 2025

Follow-up to #32406


The release notes claim

[...] marked as deprecated and are expected to be removed in a future release

but the warning itself claims

[...] marked as deprecated. They will be removed in a future version.

To be less aggressive (since some have objected against this version online) - and to unify the deprecation warning with the release notes - I have changed the warning to communicate our expectation in a friendlier way.

Unified the deprecation warning for the recently deprecated datacarrier[size] options to match the phrasing of release-notes-32406.md.
@DrahtBot DrahtBot added the Docs label Aug 20, 2025
@DrahtBot
Copy link
Contributor

DrahtBot commented Aug 20, 2025

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Code Coverage & Benchmarks

For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/33224.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK janb84, Zero-1729, cedwies, jonatack, ryanofsky, hodlinator, ajtowns, w0xlt, kevkevinpal, optout21, achow101

If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

Copy link
Contributor

@janb84 janb84 left a comment

Choose a reason for hiding this comment

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

ACK 2885bd0

Pr changes warning of datacarriersize to a friendlier one. The friendlier text aligns also with the release notes.

Given that deprecation not always results in removal (in this project), I find this warning message a better representation of the reality.

Copy link
Contributor

@Zero-1729 Zero-1729 left a comment

Choose a reason for hiding this comment

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

LGTM

crACK 2885bd0

Good catch; the new message tone is more aligned and communicates the intention better.

@cedwies
Copy link

cedwies commented Aug 20, 2025

ACK 2885bd0

The PR adjusts the -datacarrier/-datacarriersize deprecation warning to be less absolute and better match the release notes.
I think the new wording still communicates deprecation, but without overstating certainty about removal.
Code change is minimal and the functional test was updated accordingly.

Copy link
Member

@jonatack jonatack left a comment

Choose a reason for hiding this comment

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

ACK 2885bd0

@achow101 achow101 modified the milestone: 30.0 Aug 21, 2025
@ryanofsky
Copy link
Contributor

Code review ACK 2885bd0. I don't think it is good for the release notes and the runtime warning message to say two different things. I'd also be happy if release notes were updated to match the runtime warning, instead of vice versa. Whatever is more accurate is better.

Copy link
Contributor

@hodlinator hodlinator left a comment

Choose a reason for hiding this comment

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

ACK 2885bd0

Makes wording consistent with release notes (end of line):

- `-datacarriersize` is increased to 100,000 which effectively uncaps the limit (as the maximum transaction size limit will be hit first). It can be overridden with -datacarriersize=83 to revert to the limit enforced in previous versions. Both `-datacarrier` and `-datacarriersize` options have been marked as deprecated and are expected to be removed in a future release. (#32406)

@ajtowns
Copy link
Contributor

ajtowns commented Aug 22, 2025

ACK 2885bd0

Unless there's an explicit schedule for the removal (eg -paytxfee is deprecated and will be fully removed in v31.0), this phrasing seems more accurate. Probably the testnet3 deprecation should also either be scheduled or changed to "is expected to be removed" as well.

@fanquake
Copy link
Member

cc @hebasto; given this would change translations after translation string freeze.

Copy link
Contributor

@w0xlt w0xlt left a comment

Choose a reason for hiding this comment

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

ACK 2885bd0

Will the src/qt/bitcoinstrings.cpp file be changed in the GUI repository?

@hebasto
Copy link
Member

hebasto commented Aug 24, 2025

cc @hebasto; given this would change translations after translation string freeze.

The translation workflow on Transifex includes marking translated strings as "Reviewed", which locks them from further changes. Not every translation team uses this feature, but those who do rely on it. Unfortunately, the "opensource" plan used by the Bitcoin organization on Transifex has very limited functionality, and it is not guaranteed that updating the translation source file (as in #33193) won’t reset the "Reviewed" status for other strings.

In short, there must not be any translation source updates after the final translation string freeze.

@hebasto
Copy link
Member

hebasto commented Aug 24, 2025

@w0xlt

Will the src/qt/bitcoinstrings.cpp file be changed in the GUI repository?

It makes no difference.

@l0rinc
Copy link
Contributor Author

l0rinc commented Aug 24, 2025

@hebasto, how can we help with finding a solution?
I personally would be okay with only fixing the English version, if updating the rest is indeed an unsolvable problem.

@kevkevinpal
Copy link
Contributor

ACK 2885bd0

Makes sense to have consistent working with the release note

@achow101
Copy link
Member

Unfortunately, the "opensource" plan used by the Bitcoin organization on Transifex has very limited functionality, and it is not guaranteed that updating the translation source file (as in #33193) won’t reset the "Reviewed" status for other strings.

Can we pay them some money to make that no longer a problem?

@achow101
Copy link
Member

I've done some experimenting with a test project on transifex to see what the actual effects this change would cause, and a potential workaround.

In this test project, I copied over a couple fully translated languages to observe how the translated strings change when the source is updated. After rebasing this PR branch and doing cmake --build build --target translate, I uploaded the resulting modified bitcoin_en.xlf file. This resulted in 122 (~10% of strings) being marked untranslated again in both languages. We can assume that that behavior will appear across all languages, so that means ~10% of all translated strings would need to be retranslated. That's the crux of the problem. Now, Transifex does provide suggestions based on previous translations so those translations can be filled in with the click of a button. But that means someone needs to do that for every single language. I think this issue is why we institute a translation strings freeze.

However, I think there is a workaround to this issue. Ultimately the reason transifex thinks 121 additional strings need to be translated is because the .xlf files contain an id for each string which is based upon the position of a string in the bitcoin_en.ts file which is automatically generated from the source code using lupdate. But if we instead modify bitcoin_en.ts directly as well, lupdate will not change the string order so the generated bitcoin_en.xlf file will contain just the changed string (and some other autogenerated context changes that don't seem to make a difference), which can be uploaded to Transifex. The result is that only this single string needs to be translated and no other strings will be affected.

If this doc change is desired by contributors, and the 9 acks suggested that it is, then I think this workaround of modifying bitcoin_en.ts would be suitable.

@ajtowns
Copy link
Contributor

ajtowns commented Aug 29, 2025

Ultimately the reason transifex thinks 121 additional strings need to be translated is because the .xlf files contain an id for each string which is based upon the position of a string in the bitcoin_en.ts file which is automatically generated from the source code using lupdate

Is this context info useful? Line numbers will change whenever some previous function in the file gets a non-trivial edit... Would it be better to add -locations none to the LCONVERT invocation in translate.cmake? (Post branch-off) Or are there instances where the same english text (in the same source file?) gets multiple different translations in a single language?

EDIT: https://wiki.qt.io/Qt_Localization seems to suggest -locations none is a good idea fwiw. Could also consider switching from tranifex to weblate, seems to be what fedora uses; mumble switched with this rationale after this discussion -- we'd be under the 10k 160k string limit but over the 60 language limit so would presumably need to pay 500 EUR/year and apparently they now offer unlimited languages so that would also be fine; and we could also self-host which is what fedora does. They seem to offer context links back to the source repo, and some degree of github integration for automating pulls/pushes.

@l0rinc
Copy link
Contributor Author

l0rinc commented Aug 29, 2025

I have added a tool which could be useful for making sure edits like this aren't problematic anymore - feedback is welcome on overall direction: #33270

@achow101
Copy link
Member

Is this context info useful? Line numbers will change whenever some previous function in the file gets a non-trivial edit... Would it be better to add -locations none to the LCONVERT invocation in translate.cmake?

I don't think line numbers is the problem. The actual source location of the string can change and the ids in the .xlf won't change. It's the sort order in the .ts file that lupdate generates that seems to cause the id change. It's unclear to me why the sort order would change.

@l0rinc
Copy link
Contributor Author

l0rinc commented Aug 29, 2025

I have checked the problem against the actual Core translations on Transifex and I could reproduce the massive invalidations and #33270 (comment) does fix it successfully so that translators only need to check the modified entries:

@hebasto
Copy link
Member

hebasto commented Sep 1, 2025

I've done some experimenting with a test project on transifex to see what the actual effects this change would cause, and a potential workaround.

In this test project, I copied over a couple fully translated languages to observe how the translated strings change when the source is updated. After rebasing this PR branch and doing cmake --build build --target translate, I uploaded the resulting modified bitcoin_en.xlf file. This resulted in 122 (~10% of strings) being marked untranslated again in both languages. We can assume that that behavior will appear across all languages, so that means ~10% of all translated strings would need to be retranslated. That's the crux of the problem. Now, Transifex does provide suggestions based on previous translations so those translations can be filled in with the click of a button. But that means someone needs to do that for every single language. I think this issue is why we institute a translation strings freeze.

Was "Translation Memory Fillup" enabled then?

@hebasto
Copy link
Member

hebasto commented Sep 1, 2025

If this doc change is desired by contributors, and the 9 acks suggested that it is, then...

... it can be accepted as is, but left untranslated until the version v31.0.

This is acceptable because:

  1. We never promised, nor have we ever delivered, 100% translations for every language.
  2. It's still easy for the user to translate the warning message themself.

I still hesitant about introducing last-minute changes to the translation pipeline / framework. We can revisit all related suggestions, such as dropping locations and ids, right after branching off.

@achow101
Copy link
Member

achow101 commented Sep 1, 2025

Was "Translation Memory Fillup" enabled then?

Only if it is by default. I don't know where that setting is.

Copy link

@optout21 optout21 left a comment

Choose a reason for hiding this comment

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

ACK 2885bd0

Minute details like this in documentation improve the communication of the project.
The change is doc-only, minimal, well isolated.

@achow101
Copy link
Member

achow101 commented Sep 2, 2025

ACK 2885bd0

@achow101 achow101 merged commit 4636958 into bitcoin:master Sep 2, 2025
19 checks passed
@l0rinc l0rinc deleted the l0rinc/datacarriersize-doc-unification branch September 2, 2025 22:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.