mirror of
https://github.com/tdurieux/anonymous_github.git
synced 2026-11-14 08:17:26 +01:00
- Phone viewer: Contents menu for README headings, theme toggle in the header, GitHub icon on sign-in, 12px Ace font - File ⋯ menu: file details line, Find for HTML, View raw, Download ZIP, Copy file path - Redaction slots inside highlighted code blocks; fix regex lastIndex reuse in the redaction walker - Landing and FAQ copy: plainer headings, trust items, closing CTA band - Explorer ZIP button label, snapshot text cleanup Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
564 lines
35 KiB
HTML
564 lines
35 KiB
HTML
<div class="paper-faq">
|
|
<div class="paper-faq-hero">
|
|
<div class="paper-faq-eyebrow">Help</div>
|
|
<h1 class="paper-faq-title">Mirrors, redaction, and <em>what reviewers see.</em></h1>
|
|
<p class="paper-faq-lede">
|
|
How to set up an anonymous mirror, what it hides, and how long it stays online.
|
|
</p>
|
|
</div>
|
|
<div class="paper-faq-body">
|
|
<aside class="paper-faq-toc" v-paper-scrollspy>
|
|
<div class="paper-faq-toc-head">Contents</div>
|
|
<nav>
|
|
<a href="#faq-general">General</a>
|
|
<a href="#faq-plans">Plans and billing</a>
|
|
<a href="#faq-features">Features</a>
|
|
<a href="#faq-limitations">Limitations</a>
|
|
<a href="#faq-privacy">Privacy & Security</a>
|
|
<a href="#faq-hosting">Self-Hosting</a>
|
|
</nav>
|
|
</aside>
|
|
<section class="faq-section" aria-label="FAQs">
|
|
<div>
|
|
|
|
<!-- General -->
|
|
<h4 class="faq-cat">
|
|
<svg class="ui-icon mr-2" aria-hidden="true"><use href="#ui-icon-info"></use></svg>General
|
|
</h4>
|
|
<div class="panel-group" id="faq-general" role="tablist" aria-multiselectable="true">
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingWhatIs">
|
|
<h3 class="panel-title">
|
|
<a role="button" data-toggle="collapse" data-parent="#faq-general" href="#whatIs" aria-expanded="true" aria-controls="whatIs">
|
|
What is Anonymous GitHub?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="whatIs" class="panel-collapse collapse show" role="tabpanel" aria-labelledby="headingWhatIs">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
Anonymous GitHub is an open-source tool with free hosting and optional paid plans that anonymizes GitHub repositories and pull requests
|
|
for double-anonymous (double-blind) peer review. It replaces identifying information, such as
|
|
the repository owner, organization name, and custom terms, so that reviewers cannot determine
|
|
the identity of the authors through the code repository.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingHowWork">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-general" href="#howWork" aria-expanded="false" aria-controls="howWork">
|
|
How does Anonymous GitHub work?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="howWork" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingHowWork">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
Anonymous GitHub either downloads the complete repository and anonymizes the content, or proxies
|
|
requests to GitHub on the fly. In both cases, the original and anonymized versions of files are
|
|
cached on the server. The system automatically detects and replaces the repository owner,
|
|
organization name, and repository name. You can also specify additional custom terms to anonymize
|
|
using one-per-line regex patterns.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingScope">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-general" href="#scope" aria-expanded="false" aria-controls="scope">
|
|
What is the scope of anonymization?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="scope" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingScope">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
In double-anonymous peer review, the boundary of anonymization is the paper plus its online
|
|
appendix, not the entire internet. Searching for any part of the paper or the online appendix
|
|
can be considered a deliberate attempt to break anonymity. Anonymous GitHub anonymizes the
|
|
repository owner, organization, repository name, file and directory names, and file contents
|
|
across all text-based file types.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingCost">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-general" href="#cost" aria-expanded="false" aria-controls="cost">
|
|
How much does it cost?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="cost" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingCost">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
A free account includes 5 owned repositories and 2 GiB of source files. Optional paid plans
|
|
offer more capacity, automatic refresh, and, with an author subscription, never-expiring repositories.
|
|
Reviewers can read shared repositories without an account or payment.
|
|
</p>
|
|
<p>
|
|
See <a href="/profile#settings-billing">Plans and billing</a> for available plans and current prices.
|
|
Offers depend on whether payments are enabled on this instance; the checkout shows the amount before
|
|
you pay. Subscriptions help fund hosting, storage, backups, and continued maintenance.
|
|
</p>
|
|
<p>
|
|
You can also support development through
|
|
<a href="https://github.com/sponsors/tdurieux/" target="_blank" rel="noopener">GitHub Sponsors</a>
|
|
or <a href="https://ko-fi.com/tdurieux" target="_blank" rel="noopener">Ko-fi</a>.
|
|
Donations are separate from subscriptions and do not automatically unlock paid features.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Plans and billing -->
|
|
<h4 class="faq-cat" id="faq-plans-title">Plans and billing</h4>
|
|
<div class="panel-group" id="faq-plans" role="tablist" aria-label="Plans and billing" aria-multiselectable="true">
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingFreePlan">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-plans" href="#freePlan" aria-expanded="false" aria-controls="freePlan">What is included in a free account?</a>
|
|
</h3>
|
|
</div>
|
|
<div id="freePlan" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFreePlan">
|
|
<div class="panel-body p-3">
|
|
<p>The default free allowance is 5 repositories you own and 2 GiB of source files in total. Core anonymization and reviewer access remain free. You can manually refresh a repository within your allowance and choose a dated expiration up to one year ahead.</p>
|
|
<p>Repositories shared with you as a coauthor do not use your own slots. Gists and pull requests are not included in these repository quotas. The usage shown in your account is the allowance available on this instance.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingAuthorPlans">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-plans" href="#authorPlans" aria-expanded="false" aria-controls="authorPlans">What do monthly and annual author subscriptions include?</a>
|
|
</h3>
|
|
</div>
|
|
<div id="authorPlans" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingAuthorPlans">
|
|
<div class="panel-body p-3">
|
|
<p>Both include 20 owned repositories and 10 GiB of source files in total. They also allow automatic refresh when enabled in repository settings and let the owner choose <strong>Never expire</strong>.</p>
|
|
<p>Monthly and annual plans offer the same features with different billing periods. They renew automatically until you cancel renewal. Current prices are shown in <a href="/profile#settings-billing">Plans and billing</a>.</p>
|
|
<p>Paid plans do not change how anonymization works. File-size limits and other service safeguards still apply. Review your anonymized content before sharing it.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingReviewPass">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-plans" href="#reviewPass" aria-expanded="false" aria-controls="reviewPass">Can I pay for one repository without subscribing?</a>
|
|
</h3>
|
|
</div>
|
|
<div id="reviewPass" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingReviewPass">
|
|
<div class="panel-body p-3">
|
|
<p>The author review pass covers one selected repository for 180 days, with a separate 2 GiB allowance and automatic refresh when enabled. It is a one-time purchase and does not renew automatically.</p>
|
|
<p>Enter the anonymized ID of an existing repository you own in <a href="/profile#settings-billing">Plans and billing</a>. A pass does not unlock Never expire and does not override the repository's chosen expiration date.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingConferencePlans">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-plans" href="#conferencePlans" aria-expanded="false" aria-controls="conferencePlans">Can a conference or lab pay for a group?</a>
|
|
</h3>
|
|
</div>
|
|
<div id="conferencePlans" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingConferencePlans">
|
|
<div class="panel-body p-3">
|
|
<p>A conference review package provides a shared allowance of 100 repositories and 50 GiB for a review window of up to 180 days. The organizer pays once; the package does not renew automatically. A lab organizing a review can use this shared package too.</p>
|
|
<p>The paid conference must be activated by payment before authors can submit under its Conference ID. Eligible repositories use the conference allowance before an author's personal allowance, so authors do not each need a subscription for that capacity.</p>
|
|
<p>The package has a fixed review window. Never expire still requires the repository owner's monthly or annual author subscription. See the available offer when creating a conference.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingPaidCoauthors">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-plans" href="#paidCoauthors" aria-expanded="false" aria-controls="paidCoauthors">Does every coauthor need to pay?</a>
|
|
</h3>
|
|
</div>
|
|
<div id="paidCoauthors" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingPaidCoauthors">
|
|
<div class="panel-body p-3">
|
|
<p>No. Coauthors can collaborate without buying a subscription. A shared repository uses its owner's allowance, unless a repository pass or paid conference covers it. It does not consume each coauthor's personal allowance.</p>
|
|
<p>A coauthor's subscription does not increase the owner's allowance. If the owner's available capacity is exhausted, a coauthor's refresh or edit may also be blocked. Reviewers never need a paid account.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingCapacity">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-plans" href="#capacity" aria-expanded="false" aria-controls="capacity">What counts toward my allowance, and what happens at the limit?</a>
|
|
</h3>
|
|
</div>
|
|
<div id="capacity" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingCapacity">
|
|
<div class="panel-body p-3">
|
|
<p>The repository limit counts work you own. Storage counts the source-file sizes reserved for those repositories, not just files a reviewer opens. Archived or failed repositories can still reserve capacity, and a refresh does not automatically reduce a previous storage reservation.</p>
|
|
<p>At the repository limit you cannot add another repository to that allowance. An edit or refresh must also fit the available storage. Remove work you no longer need, choose a paid plan, or use an eligible conference allowance.</p>
|
|
<p>Removing a repository releases its reservation when capacity is next checked. Expired repositories may continue to reserve capacity until cleanup. Reaching a limit does not itself delete existing review links.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingNeverExpire">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-plans" href="#neverExpire" aria-expanded="false" aria-controls="neverExpire">What happens to Never expire repositories if I stop subscribing?</a>
|
|
</h3>
|
|
</div>
|
|
<div id="neverExpire" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingNeverExpire">
|
|
<div class="panel-body p-3">
|
|
<p>Never expire is available to monthly and annual author subscribers. If paid access ends, these repositories remain available for a <strong>90-day grace period</strong>, then expire and their hosted content is removed.</p>
|
|
<p>Renewing during the grace period keeps them active. After expiration, you must renew and explicitly reactivate the repository; restoring content also requires access to its GitHub source. A repository does not become public on GitHub when it expires.</p>
|
|
<p>Existing never-expiring repositories created before this billing policy retain their settings. Never expire is not a guarantee of perpetual service availability.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingCancelPlan">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-plans" href="#cancelPlan" aria-expanded="false" aria-controls="cancelPlan">How do I cancel, and what happens after paid access ends?</a>
|
|
</h3>
|
|
</div>
|
|
<div id="cancelPlan" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingCancelPlan">
|
|
<div class="panel-body p-3">
|
|
<p>Open <a href="/profile#settings-billing">Plans and billing</a> and choose <strong>Manage billing and invoices</strong> to manage renewal. Cancelling renewal keeps subscription benefits until the end of the paid period.</p>
|
|
<p>After paid access ends, repositories fall back to another eligible allowance or the free allowance. Automatic refresh pauses on the free allowance; manual refresh remains available within its limits. Existing review links keep their configured expiration dates, except paid Never expire repositories, which follow the 90-day grace period described above.</p>
|
|
<p>A repository pass or conference package ends after its paid window without automatic renewal.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingPaymentHandling">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-plans" href="#paymentHandling" aria-expanded="false" aria-controls="paymentHandling">How are payments handled?</a>
|
|
</h3>
|
|
</div>
|
|
<div id="paymentHandling" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingPaymentHandling">
|
|
<div class="panel-body p-3">
|
|
<p>Stripe processes checkout and billing management. Anonymous GitHub does not store your card details. You can access billing management and invoices from <a href="/profile#settings-billing">Plans and billing</a>.</p>
|
|
<p>Paid access is activated after payment is confirmed. If checkout succeeds but your account has not updated, choose <strong>Refresh payment status</strong> before trying another purchase. If paid plans are unavailable on this instance, no checkout is offered.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Features -->
|
|
<h4 class="faq-cat">
|
|
<svg class="ui-icon mr-2" aria-hidden="true"><use href="#project-icon-filter"></use></svg>Features
|
|
</h4>
|
|
<div class="panel-group" id="faq-features" role="tablist" aria-multiselectable="true">
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingFormats">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-features" href="#formats" aria-expanded="false" aria-controls="formats">
|
|
Which file formats are supported?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="formats" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFormats">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
Anonymous GitHub can display and render a wide variety of file types:
|
|
</p>
|
|
<ul>
|
|
<li><strong>Text and source code</strong>: displayed with syntax highlighting</li>
|
|
<li><strong>Markdown</strong>: rendered as formatted HTML</li>
|
|
<li><strong>Images</strong> (PNG, JPG, SVG, etc.): displayed inline</li>
|
|
<li><strong>PDFs</strong>: rendered directly in the browser</li>
|
|
<li><strong>Jupyter Notebooks</strong>: rendered with code cells and outputs</li>
|
|
</ul>
|
|
<p>
|
|
Only text-based files are anonymized. Anonymous GitHub analyzes the content of each file to
|
|
determine whether it is textual or binary.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingPR">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-features" href="#pullRequests" aria-expanded="false" aria-controls="pullRequests">
|
|
Can I anonymize pull requests?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="pullRequests" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingPR">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
Yes. In addition to full repositories, Anonymous GitHub supports anonymizing individual pull
|
|
requests. Simply paste the URL of a GitHub pull request when creating a new anonymized repository,
|
|
and the system will automatically detect that it is a pull request and anonymize it accordingly.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingConference">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-features" href="#conference" aria-expanded="false" aria-controls="conference">
|
|
What is the Conference ID feature?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="conference" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingConference">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
When creating an anonymized repository, you can associate it with a Conference ID. This allows
|
|
conferences to define default anonymization settings (such as expiration dates) that are
|
|
automatically applied to repositories submitted under that conference. If your conference
|
|
provides a Conference ID, enter it during the anonymization setup.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingExpiration">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-features" href="#expiration" aria-expanded="false" aria-controls="expiration">
|
|
What happens when an anonymized repository expires?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="expiration" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingExpiration">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
You can configure one of three expiration strategies when creating your anonymized repository:
|
|
</p>
|
|
<ul>
|
|
<li><strong>Never expire</strong>: with a monthly or annual author subscription, no scheduled expiration while subscribed. A 90-day grace period applies after paid access ends. See <a href="#neverExpire">the subscription expiration policy</a>.</li>
|
|
<li><strong>Redirect to GitHub</strong>: after expiration, visitors are redirected to the original GitHub repository.</li>
|
|
<li><strong>Remove content</strong>: after expiration, the anonymized content is deleted from the server.</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingDownload">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-features" href="#download" aria-expanded="false" aria-controls="download">
|
|
Can I download an anonymized repository?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="download" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingDownload">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
Yes. Anonymized repositories can be downloaded as a ZIP file. This is useful if reviewers
|
|
want to build or test the code locally. The downloaded archive contains the fully anonymized
|
|
version of the repository.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingUpdates">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-features" href="#updates" aria-expanded="false" aria-controls="updates">
|
|
Are updates to the original repository reflected in the anonymized version?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="updates" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingUpdates">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
You can refresh the anonymized repository from GitHub without creating a new share link.
|
|
Free accounts can request a manual refresh within their allowance. Automatic refresh requires an
|
|
eligible paid allowance and must be enabled in repository settings. It pauses when the repository
|
|
falls back to the free allowance.
|
|
</p>
|
|
<p>
|
|
After changing files or contributor names, review your anonymization terms before sharing the
|
|
updated content. If GitHub access is revoked or the source is deleted, the service cannot fetch updates.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingCLI">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-features" href="#cli" aria-expanded="false" aria-controls="cli">
|
|
Is there a command-line tool?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="cli" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingCLI">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
Yes. Anonymous GitHub provides a CLI tool that lets you anonymize repositories locally,
|
|
generating an anonymized ZIP file on your machine. Install it via npm:
|
|
</p>
|
|
<pre style="background-color: var(--hover-bg-color); padding: 12px; border-radius: 4px; margin-top: 8px; color: var(--color);"><code>npm install -g @tdurieux/anonymous_github
|
|
anonymous_github</code></pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Limitations -->
|
|
<h4 class="faq-cat">
|
|
<svg class="ui-icon mr-2" aria-hidden="true"><use href="#ui-icon-warning"></use></svg>Limitations
|
|
</h4>
|
|
<div class="panel-group" id="faq-limitations" role="tablist" aria-multiselectable="true">
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingLimitation">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-limitations" href="#limitation" aria-expanded="false" aria-controls="limitation">
|
|
What are the limitations of Anonymous GitHub?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="limitation" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingLimitation">
|
|
<div class="panel-body p-3">
|
|
<ul>
|
|
<li>
|
|
Anonymous GitHub only anonymizes text-based files. Binary files (compiled executables,
|
|
archives, etc.) are served as-is without anonymization.
|
|
</li>
|
|
<li>
|
|
Files larger than 8 MB are not supported.
|
|
</li>
|
|
<li>
|
|
Static site generators (such as Jekyll) used with GitHub Pages are not fully supported,
|
|
although Markdown files are converted to HTML.
|
|
</li>
|
|
<li>
|
|
The anonymization of terms within source code may change the behavior of the program
|
|
(e.g., if a replaced term appears in a string literal or identifier).
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Privacy & Security -->
|
|
<h4 class="faq-cat">
|
|
<svg class="ui-icon mr-2" aria-hidden="true"><use href="#ui-icon-shield"></use></svg>Privacy & Security
|
|
</h4>
|
|
<div class="panel-group" id="faq-privacy" role="tablist" aria-multiselectable="true">
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingData">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-privacy" href="#data" aria-expanded="false" aria-controls="data">
|
|
How is my data handled?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="data" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingData">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
Repository data is used to provide the anonymization service. If you purchase a plan, Stripe
|
|
processes payment and billing information. When a repository is removed or expires, only its configuration is
|
|
retained. This makes it easy to restore the repository if needed and ensures that no
|
|
future repository reuses the same ID.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingPermissions">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-privacy" href="#permissions" aria-expanded="false" aria-controls="permissions">
|
|
Why does GitHub say Anonymous GitHub asks for write access?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="permissions" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingPermissions">
|
|
<div class="panel-body p-3">
|
|
<p>The GitHub App has read-only access to the repositories you choose. You can change repository access on your <a href="/connections">GitHub connections</a> page.</p>
|
|
<p>Legacy GitHub OAuth includes write access to private repositories because GitHub's OAuth scopes do not offer a read-only option for them. Existing OAuth anonymizations and gists can still use this connection.</p>
|
|
<p>Anonymous GitHub reads repository content. It never pushes, modifies, or deletes files on GitHub.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingViewer">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-privacy" href="#viewer" aria-expanded="false" aria-controls="viewer">
|
|
Can repository owners see who viewed their anonymized repository?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="viewer" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingViewer">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
No. Only the total number of views is tracked as an incremental counter. It is not possible
|
|
for the repository owner or for Anonymous GitHub to identify individual viewers.
|
|
Reviewer anonymity is fully preserved.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Self-Hosting -->
|
|
<h4 class="faq-cat">
|
|
<svg class="ui-icon mr-2" aria-hidden="true"><use href="#project-icon-storage"></use></svg>Self-Hosting
|
|
</h4>
|
|
<div class="panel-group" id="faq-hosting" role="tablist" aria-multiselectable="true">
|
|
<div class="panel panel-default mb-3">
|
|
<div class="panel-heading p-3" role="tab" id="headingDeploy">
|
|
<h3 class="panel-title">
|
|
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#faq-hosting" href="#deploy" aria-expanded="false" aria-controls="deploy">
|
|
Can I deploy my own instance?
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div id="deploy" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingDeploy">
|
|
<div class="panel-body p-3">
|
|
<p>
|
|
Yes. Anonymous GitHub is fully open source (GPL-3.0) and supports Docker-based deployment.
|
|
Billing is optional and disabled by default for self-hosted instances; paid hosted plans are not
|
|
required to run your own server.
|
|
You will need to configure a GitHub OAuth app and provide a GitHub token. Detailed setup
|
|
instructions are available on the
|
|
<a href="https://github.com/tdurieux/anonymous_github/" target="_blank">GitHub repository</a>.
|
|
</p>
|
|
<p>
|
|
The basic steps are:
|
|
</p>
|
|
<ol>
|
|
<li>Clone the repository and install dependencies</li>
|
|
<li>Create a <code>.env</code> file with your GitHub token, OAuth client ID, and client secret</li>
|
|
<li>Run <code>docker-compose up -d</code></li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="text-center mt-5 mb-5 p-4" style="background-color: var(--hover-bg-color); border-radius: 8px;">
|
|
<p class="mb-2" style="font-size: 1.1rem;">
|
|
Still have questions?
|
|
</p>
|
|
<p class="text-muted mb-0">
|
|
Open an issue on the
|
|
<a href="https://github.com/tdurieux/anonymous_github/issues" target="_blank">GitHub repository</a>
|
|
and we'll be happy to help.
|
|
</p>
|
|
</div>
|
|
|
|
</div>
|
|
</section>
|
|
<aside class="paper-faq-help" aria-label="More help">
|
|
<div class="paper-faq-help-card">
|
|
<strong>Still stuck?</strong>
|
|
<p>Open an issue on GitHub about the service. For a paper's content, contact the conference instead.</p>
|
|
<a class="btn btn-outline-ink btn-sm" target="_blank" rel="noopener" href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml">Open an issue</a>
|
|
</div>
|
|
</aside>
|
|
</div>
|
|
</div>
|