{% extends "base.html" %} {% set active_page = "authors" %} {% block title %}Author Network — IETF Draft Analyzer{% endblock %} {% block extra_head %} {% endblock %} {% block content %}

Author Network

Interactive collaboration graph of {{ network.nodes | length }} authors across {{ orgs | length }} organizations

Authors Shown
{{ network.nodes | length }}
Organizations
{{ orgs | length }}
Co-Author Links
{{ network.edges | length }}
Clusters
{{ network.clusters | length }}
Multi-Draft
{{ authors | selectattr('draft_count', 'gt', 1) | list | length }}

Co-Authorship Network

Node size = draft count. Color = organization. Edge thickness = shared drafts. Drag nodes to rearrange. Scroll to zoom.

Organizations by Draft Count

Color intensity = number of authors from that org.

Cross-Organization Collaboration

Organizations co-authoring drafts together.

{% if network.clusters %}

Collaboration Clusters

Clusters are formed by connected-component analysis of the co-authorship graph: authors who share 2+ drafts are linked, and all authors reachable through such links form a cluster. This reveals research teams and institutional collaboration patterns — a cluster of 20 authors from 3 organizations means those groups actively co-author across org boundaries. Click a cluster to highlight it in the graph above.

{% for c in network.clusters[:12] %}
Cluster #{{ c.id + 1 }}
{{ c.size }} authors {{ c.draft_count }} drafts
{% for org, count in c.org_mix.items() %} {{ org }} ({{ count }}) {% endfor %}
{{ c.members[:5] | join(', ') }}{% if c.members | length > 5 %} +{{ c.members | length - 5 }} more{% endif %}
{% if c.drafts %}
{% for d in c.drafts[:5] %} {% endfor %} {% if c.draft_count > 5 %}
+{{ c.draft_count - 5 }} more drafts
{% endif %}
{% endif %}
{% endfor %}
{% endif %}

Top Authors

Showing top {{ authors | length }}
{% for a in authors %} {% endfor %}
# Author Organization Drafts
{{ loop.index }} {{ a.name }} {{ a.affiliation }} {{ a.draft_count }}

Organization Stats

{% for o in orgs %}
{{ o.org }} {{ o.draft_count }} drafts
{{ o.author_count }} author{{ 's' if o.author_count != 1 }} | {{ (o.draft_count / o.author_count) | round(1) }} drafts/author
{% endfor %}
{% endblock %} {% block extra_scripts %} {% endblock %}