Concepts / Analyzing Contributor Networks and Participation Patterns

Analyzing Contributor Networks and Participation Patterns

A contributor can appear under different email addresses after moving between organizations.

  • Programming

Why Identity Fragments

A contributor can appear under different email addresses after moving between organizations. If an archive treats every address as a separate identity, one person's messages can be split across several apparent contributors. The mapping system addresses this problem by transforming multiple historical variants into a single canonical address during processing.

Key point

The goal is not to rewrite the original archive. The goal is to give gmodel.py rules for treating related addresses as equivalent while it processes the archive.

Northwestern addressswgithen@mtu.educanonical addressCambridge addressmaps tomaps to
How do several addresses used by the same contributor become one identity during processing?

Following a Career Across Addresses

A canonical address is the destination chosen to represent a contributor's identity. In the source example, Steve Githens has three email addresses. The most recent address, swgithen@mtu.edu, is selected as the canonical destination, while the Northwestern and Cambridge addresses are treated as historical variants.

Northwestern addressCambridge addressswgithen@mtu.educanonical destinationlater addresslater address
What changes as a contributor moves between organizations, and how do historical addresses connect to one canonical identity?

Building Individual Address Rules

The Mapping table in mapping.sqlite stores individual email mappings using arrow notation: source address to destination address. For the Steve Githens example, two entries are required. One entry sends the Northwestern address to swgithen@mtu.edu, and another sends the Cambridge address to swgithen@mtu.edu. No third entry is needed for the canonical address.

NorthwesternaddressMapping tablemapping.sqliteswgithen@mtu.educanonical addressCambridge addresssourcesourcedestination
How does each original address become linked to the selected canonical address?
Worked example

Consolidating Three Addresses

Steve Githens appears under three email addresses and the most recent address is swgithen@mtu.edu. How many Mapping entries are needed?

  1. 1
    Select the destination

    Use swgithen@mtu.edu as the canonical destination.

  2. 2
    Map the first variant

    Create an entry from the Northwestern address to swgithen@mtu.edu.

  3. 3
    Map the second variant

    Create an entry from the Cambridge address to swgithen@mtu.edu.

  4. 4
    Leave the destination alone

    Do not create a self-mapping entry for swgithen@mtu.edu.

Result

Two Mapping entries are needed: one for each non-canonical address.

Applying Rules During Processing

When gmodel.py processes the archive, it reads each message and extracts sender and recipient addresses. For every address, it checks the Mapping table. If a mapping exists, gmodel.py uses the destination address. If no mapping exists, it keeps the address as-is. Because this check happens for every email, one mapping can affect many messages when a contributor participated frequently.

Email archivesender or recipient addressgmodel.pyprocessing phaseDNSMappingdomain-level ruleMappingindividual address ruleUnified contributorviewnormalized resultextractcheck domainthen check addressuse destination or original
How does an inconsistent archive address flow through the mapping rules to become part of a unified contributor view?

What do you think happens?

Suppose an address has no Mapping entry. What address does gmodel.py use?

  • It discards the address

  • It uses the address as-is

  • It automatically creates a new canonical address

Reveal answer
Answer:

It uses the address as-is.

gmodel.py substitutes the destination only when a mapping exists. Without a mapping, the encountered address remains unchanged during processing.

Normalizing Domains First

DNSMapping works at the domain level rather than the individual address level. When gmodel.py encounters someone@iupui.edu, it first checks whether iupui.edu has a DNSMapping entry. If iupui.edu maps to indiana.edu, the address becomes someone@indiana.edu before individual email address mappings are checked.

iupui.eduDNSMappingdomain rulesindiana.educanonical DNS entryrelated domainmaps throughmaps throughresolves to
How do several domain names resolve to one canonical DNS entry?
Mapping systemLevelPurposeProcessing order
DNSMappingDomainConsolidates domain namesFirst
MappingIndividual email addressConsolidates address variantsAfter DNSMapping

DNSMapping and Mapping solve related but different identity-normalization problems.

Avoiding Identity Errors

  • Common mistake

    Creating a mapping entry for the canonical address itself.

    What it looks like

    Mapping swgithen@mtu.edu to swgithen@mtu.edu.

    Why it fails

    The canonical address is already in its final form and does not require a self-mapping entry.

    Do this instead

    Create entries only for the non-canonical addresses that should point to swgithen@mtu.edu.

  • Common mistake

    Treating DNSMapping as an individual-address table.

    What it looks like

    Trying to use DNSMapping to map one complete email address directly to another.

    Why it fails

    DNSMapping operates on domain names, while the Mapping table handles individual email addresses.

    Do this instead

    Use DNSMapping for domain-level consolidation and Mapping for complete address variants.

  • Common mistake

    Assuming mappings rewrite the original archive.

    What it looks like

    Expecting an incorrect mapping to permanently alter stored email messages.

    Why it fails

    Mappings are applied during gmodel.py processing and do not modify the original email data.

    Do this instead

    Treat mappings as adjustable transformation rules that can be modified or removed.

  • Common mistake

    Applying individual address mapping before domain mapping.

    What it looks like

    Processing someone@iupui.edu with the individual-address rules before checking DNSMapping.

    Why it fails

    Domain mapping happens first, followed by individual email mapping.

    Do this instead

    Follow the processing order: DNSMapping first, then Mapping.

Best practice

When resolving archive data quality issues, first decide whether the inconsistency is at the domain level or the complete-address level. Then select DNSMapping or Mapping accordingly, choose a clear canonical destination, and remember that the original archive remains available if the rule needs correction.

Historical addressCanonical addressParticipation patternDomain variantMappingDNSMapping then Mappingsupports unified analysis
How does consolidating address variants support a more unified analysis of contributor participation?

Practice the Decision

MEDIUM

An archive contains an address whose domain should be consolidated with another domain, and it also contains a historical address variant for a contributor. Decide which mapping system should handle each issue and state the processing order.

Hints
  • Ask whether the rule concerns a domain or a complete email address.
  • DNSMapping operates before individual address mappings.
  • Only non-canonical address variants need entries in Mapping.
  1. 1
    A strong answer identifies DNSMapping as the tool for the domain-level issue and Mapping as the tool for the historical complete-address issue. The domain transformation is applied first. The resulting address is then checked against individual address mappings. The rules affect processing while leaving the original archive unchanged.

Key Takeaways

  • The Mapping table in mapping.sqlite sends historical email addresses to one canonical destination.
  • For three addresses, only the two non-canonical addresses need Mapping entries.
  • DNSMapping consolidates domains before individual email address mappings are applied.
  • gmodel.py applies these rules while processing each message; it uses the original address when no mapping exists.
  • Mappings are non-destructive, so they can be revised without changing the original email archive.

More concepts starting with A