Community Interaction
This chapter covers the operational mechanics of communicating with the Apache Tez community
— dev@tez.apache.org, JIRA, and GitHub pull requests. Most of the rules below are not Tez
rules; they are Apache-wide conventions that 25 years of mailing lists have settled into.
Violating them is not a hanging offence, but it marks you as new and spends a little of the
credibility you have not yet earned.
The one thing that makes Tez different from a busy project is traffic. As the section index established, this is a maintenance-phase project with roughly two active committers. That single fact reshapes every interaction below: latency is measured in weeks, a single reviewer sees almost everything, and a contributor who is calm, patient, and self-sufficient stands out immediately.
The Lists
Tez has the standard ASF list set. The addresses are verifiable — the notification routing in
.asf.yaml names commits@tez.apache.org and issues@tez.apache.org directly, and pull
requests are routed to issues@ as well.
| List | Purpose | Who reads |
|---|---|---|
dev@tez.apache.org | Development discussion, design, votes | Contributors, committers, PMC |
user@tez.apache.org | Usage questions, "how do I…" | Users, some committers |
commits@tez.apache.org | Auto-mailed commit notifications | Mostly bots; subscribe to follow trunk |
issues@tez.apache.org | Auto-mailed JIRA and PR notifications | Bots, some committers |
private@tez.apache.org | PMC-only (new-committer votes, security) | PMC only |
Subscribe by sending empty mail to <list>-subscribe@tez.apache.org and confirming the reply.
Unsubscribe via <list>-unsubscribe@tez.apache.org. Default for a new contributor: subscribe
to dev@ and user@; add issues@ once you are actively tracking a JIRA. Note that on this
project issues@ carries both JIRA activity and GitHub PR activity — that is the
.asf.yaml routing (pullrequests: issues@tez.apache.org), and it is how the committers see
your PR at all.
Mail Etiquette: Subject Prefixes
Subject lines on dev@ use ASCII-bracketed prefixes so subscribers can filter. Use them.
| Prefix | When |
|---|---|
[DISCUSS] | Open-ended question or design idea, no vote yet |
[PROPOSAL] | Concrete proposal seeking comment |
[VOTE] | Vote in progress; body states the voting rules |
[VOTE][RESULT] | Closing a vote; tallies the result |
[ANNOUNCE] | One-way announcement (release, new committer) |
[NOTICE] | Infrastructure / branch / policy change |
[jira] / [GitHub] | Auto-prefixed by bots; don't compose these |
Examples of good subjects:
[DISCUSS] Promoting a config default: enabling auto-parallelism by default[VOTE] Apache Tez 0.10.5 RC0[ANNOUNCE] New Tez committer: NAME
Mail Etiquette: Formatting
The ASF lists are plaintext-first. The hard rules:
- Plain text only. No HTML, no rich text. Set "send as plain text" as the default for
*@apache.org. - Inline reply, not top-post. Quote the relevant lines; reply below each.
- Wrap at ~78 columns. Long unbroken lines render badly in the archives.
- Sign off with a first name, not a corporate signature block.
- No attachments over a few KB. Patches go on the JIRA/PR, not the list.
- No images. Diagrams as ASCII or as links.
A good dev@ reply quotes what it answers and adds signal:
On Tue, May 7, 2024 at 10:14 AM, Foo Bar <foo@example.com> wrote:
> Should we bump tez.am.resource.memory.mb default from 1024 to 2048
> to handle large DAGs better?
Agreed for large DAGs, but 2048 doubles the AM footprint for everyone
running small jobs (most CI users). Could we size it off DAGPlan size,
falling back to 1024? I can prototype on a JIRA if there's interest.
--
Jane
What it doesn't have: HTML, a disclaimer, an inline screenshot, or a bare "+1" with no context.
JIRA and PR Etiquette
JIRA is the system of record; the GitHub PR is how code is delivered today. Both have mores.
Don't reassign
The Assignee field belongs to whoever is doing the work. If a JIRA is assigned to someone
else, do not reassign it to yourself, even if it has been idle for a year — and on a
maintenance-phase project, many are idle for years. Comment first:
Hi @ASSIGNEE, I'd like to pick this up if you're not actively working on it. Happy to hand back if you have an in-flight patch. If I don't hear back in a week or two I'll assign it to myself.
After a genuine wait (two weeks is reasonable here, given the pace), then take it. Nobody will be offended; they will more likely be glad someone is moving it.
The current delivery flow: JIRA + GitHub PR
Here is the real, current workflow, reconstructed from recent history rather than from an old wiki page:
- Open (or claim) a
TEZ-NNNNJIRA. GitHub Issues is disabled (.asf.yamlissues: false), so JIRA is the only tracker. - Open a GitHub PR against
apache/tezwhose title starts with the JIRA key, e.g.TEZ-4700: [Cloud] Single image shared between AM and Task. The Yetus/Jenkins integration keys off the^TEZ-[0-9]+$pattern (seedev-support/tez-personality.sh). - CI runs automatically. GitHub Actions (
.github/workflows/build.yml) builds on a matrix of JDK 21/25 × Ubuntu/macOS; a separate Apache Yetus/Jenkins run does the full unit tests and static analysis on every PR (that was the point ofTEZ-4718, "ensure full build and UT run on every PR"). - A committer reviews. On this project that is almost always one of the two active committers. Iterate by pushing more commits to the PR branch.
- Merge is a squash.
.asf.yamlenables only the squash button, so your PR becomes one commit whose message ends(#NNN) (<you> reviewed by <reviewer>). Thatreviewed byline is the permanent record of who vouched for your change.
You will still meet the classic workflow in old JIRAs: attached patch files named
TEZ-NNNN.001.patch, TEZ-NNNN.002.patch, re-rolled each round, with status set to Patch
Available. That is history, not current practice — but "Patch Available" as a status still
signals "ready for review" if you use JIRA workflow states. Don't attach raw .patch files
today; open a PR.
"Patch Available" / "ready for review" semantics
Whatever the mechanism, signalling "ready for review" means all of: the change applies to
current master; you believe tests pass locally; and you are actually requesting review — not
still iterating. If your PR is a draft, mark it a GitHub draft and say so; don't ping a
committer to review something you're still changing.
Interacting With a Low-Traffic, Mature Project
This is the part generic open-source advice gets wrong for a project like Tez. Calibrate your expectations to the real pace:
- Latency is weeks, not days. With ~two active committers, a PR can sit green for a couple of weeks before anyone looks. This is normal and is not a snub. Do not interpret silence as rejection.
- One reviewer sees almost everything. Grep the log —
git log --oneline | grep -c "reviewed by Laszlo Bodor"— and you'll see how concentrated review is. That means your reviewer is chronically time-constrained. Make their job trivial: small PRs, green CI, a clear description, a linked JIRA. A reviewer who can approve in five minutes will; one who has to reverse-engineer your intent will defer it, and "defer" on this project means months. - Self-sufficiency is currency. The most valuable new contributor is the one who needs the least hand-holding. Show your investigation (next section), propose a fix, and make the committer's only job to say "+1."
How to unstick a stalled review, politely
Escalation is legitimate; impatience is not. The cadence for Tez's pace:
- Wait a real interval. A couple of weeks of silence on a green PR is within normal range. Do not ping after two days.
- First nudge — on the PR/JIRA, factual and specific:
Friendly ping — this has been green for two weeks and addresses TEZ-NNNN. Anything you'd like changed, or is it just waiting on a reviewer? Happy to rebase if
masterhas moved. - Then, a short pointer on
dev@if the PR nudge goes unanswered for another week or two: a one-line "could a committer take a look at TEZ-NNNN / #NNN when you get a chance?" is fine. Do not re-litigate the change on the list; just point at it. - Never: ping daily,
@-mention every committer, rewrite the PR title to "PLEASE REVIEW," or argue your change is more important than others in the queue.
The single best unsticking move is not a ping at all — it is reviewing someone else's PR. On a two-committer project, a contributor who leaves a careful, correct review on another PR becomes visible fast, and that visibility is what gets your own work looked at. It is also the first rung of the path to committership.
Asking a Good Question: Show Your Investigation
The pattern that gets answers on a low-traffic list is "here is what I found, here is my question" — never "how does X work?" Compare.
Weak (will be ignored or get "please investigate first"):
Subject: How does auto-parallelism work?
Hi, can someone explain how Tez decides the number of reducers?
Strong (shows homework, gives the committer a five-minute answer):
Subject: [DISCUSS] ShuffleVertexManager auto-parallelism: why does it never
increase parallelism?
I've been reading ShuffleVertexManager (traced from TEZ-338/TEZ-398 through
the TEZ-3395 refactor) and the tests in TestShuffleVertexManager. My reading
is that auto-parallelism only ever *decreases* task count toward
tez.shuffle-vertex-manager.desired-task-input-size, never increases it, and
that ENABLE_AUTO_PARALLEL defaults to false.
Question: is the "decrease-only" behavior a deliberate design choice (avoid
re-partitioning cost?) or just what was implemented? I ask because <concrete
use case>. If it's deliberate, I'll document it; if it's open, I'd like to
file a JIRA to explore increase-on-skew.
I've read TEZ-3303 (precise partition stats) but didn't find a JIRA that
settles the decrease-only question — pointer appreciated.
The strong version names the classes and JIRAs you read, states your current understanding so a committer can correct one sentence instead of writing an essay, gives a concrete motivation, and ends with a focused question. It also demonstrates you can already navigate the code — which makes the committer far more willing to spend time on you. This "show your investigation" pattern is the highest-return communication habit in this chapter.
A Good user@ Question
For usage questions on user@, give versions, symptom, reproduction, what you tried, and one
focused question:
Subject: Tez 0.10.x: AM OOM on submission of a 200-vertex DAG
Versions: Tez 0.10.4, Hadoop 3.3.6, Hive 3.1.3, JDK 11
Symptom: TezClient.submitDAG throws OOM ~12s in; AM log shows GC overhead
limit inside DAGImpl.init.
Repro: submit a DAG with 200 vertices, each with 5 inputs;
tez.am.resource.memory.mb = 1024 (default)
Tried: bumping to 2048 works; reducing parallelism works around it.
Question: is there a known scaling limit for DAGPlan size at the default AM
memory, and should the default scale with plan size?
Logs: <link to a gist>
A question missing any of these gets a "please provide more info" reply, costing a round-trip that on this project is a week.
Apache-Wide Norms at Tez Scale
Two Apache concepts govern how decisions actually get made, and the Tez bylaws
(docs/src/site/markdown/by-laws.md) spell out exactly how they apply here.
Lazy consensus. Most things happen without a formal vote. A code change carries "lazy
approval and then lazy consensus" with active committers holding the binding votes — in
practice, one committer's +1 (approving your PR) is enough, absent an objection. New
committers and new PMC members are added by lazy consensus of active PMC members. "Lazy"
means silence is assent: if you post a reasonable proposal to dev@ and nobody objects within
the voting window, it passes. On a quiet list, learn to drive things to a decision by stating
"if there are no objections by <date> I'll proceed" — otherwise a proposal can drift forever
in the absence of anyone actively saying no.
Vetoes. A -1 on a code change is a veto, and per the bylaws it "must be accompanied
by a valid reason." A valid, binding veto cannot be overruled — the vetoed change must be
reversed until the objection is resolved. This sounds dramatic but is rare; its practical
effect is cultural: it means any active committer can block a change they believe is wrong, so
the norm is to earn agreement rather than push through. A -1 without a technical reason is
void. If you receive one, do not argue tone — ask "what would change your mind?" and address
the substance.
Voting timeframes. Formal votes (releases, for example) run a minimum of 3 days, excluding weekends; full-consensus or 2/3-majority votes run a minimum of a week. Don't expect a same-day answer to anything that requires a vote — and see the Release & PMC section for the full mechanics.
Validation Artifacts
After this chapter you should have:
- A subscription confirmation to
dev@tez.apache.organduser@tez.apache.org. - A "show your investigation" question drafted for a real thing you're unsure about, in the strong format above.
- One inline (not top-posted) reply to an existing
dev@thread. - A
~/tez-notes/etiquette.mdcheatsheet with the subject-prefix table and the current JIRA+PR delivery flow. - The output of
git log --oneline | grep -c "reviewed by"— your one-number proof of how concentrated review is on this project.
The next chapter — Patch Quality — is what your PR needs to look like so that scarce reviewer can approve it in five minutes.