Sealway
Creative work · software and source code

Source code: prove that a version existed on a given date.

An archive of your project or of a release, a Sealway proof, and months later you can establish that this exact version already existed on that date: before a delivery, a collaboration, a release. Sealway does not say who wrote the code, who owns it or whether it is original; it fixes a content and a date.

Built for

  • Independent developers
  • Studios, agencies, IT service companies
  • Software publishers and start-ups
  • R&D teams and labs
  • Legal departments
  • Clients commissioning a development

Six months later: which version of the code existed before that date?

An independent developer builds a library. They send a first version to a client, then evolve it with the client for several months. A disagreement then arises about the origin of some functions: did they exist before the collaboration, or were they written for the client?

The claims contradict each other, and each side produces what it has: screenshots, a Git repository whose history shows dates, emails. Yet the dates in a Git history are written by the machine of whoever commits and can be rewritten; a hosted repository shows what the host displays, not an independent finding; an archive found on a disk carries whatever date the system gives it. None of that fixes, in a way a third party can verify, that a specific version existed on a specific date.

A Sealway proof created on the day the version existed answers that question, and that question only: this archive, with this exact content, existed at the latest on that date. Who its author is, who owns the rights, whether the code is original or borrows third-party code remain questions of law and contract, which the proof does not absorb.

Git history, archive, independent timestamp: what each brings.

Your repository’s history tells the work: who committed what, in what order, with which messages. It is a valuable chronology, but produced by you, on machines you control, and editable. The archive of a version freezes the exact content of a step: what the project contained at that moment, independently of the tool.

Sealway adds the layer both lack: a date fixed by a qualified third party and a fingerprint that makes it possible to verify, later, that the archive produced is the one from back then. The history remains useful to explain; the archive and its proof serve to establish.

Git history: the working chronology, rewritable Version archive: the exact content of a step Sealway: date and integrity of the archive

No connector, nothing to install: the workflow works with any tool, repository or forge, since it starts from an archive.

What the law protects in software, and what it leaves to be proven.

Software is protected by copyright, without formality, if it is original. Three distinct questions arise in a dispute: did the code exist on that date, is it original, who owns the rights? Sealway only answers the first. The French provisions below implement EU rules that apply across the Union.

French Code de la propriété intellectuelle, art. L. 112-2 13°; Directive 2009/24/EC, art. 1

Software is a protected work

Works of the mind include “software, including preparatory design material”. In the European Union, computer programs are protected by copyright as literary works; protection applies to the expression in any form of the program, not to the ideas and principles underlying it.

French Code de la propriété intellectuelle, art. L. 111-1 and L. 111-2

Without formality, even unfinished

The author enjoys the right by the mere fact of creation, and the work is deemed created, regardless of any disclosure, by the mere realisation, even unfinished, of the author’s conception. A prototype, a working branch, an isolated module already fall under copyright if they are original. No filing creates the right; you still have to be able to show what existed, and when.

Directive 2009/24/EC, art. 1(3); Cass. 1re civ., 17 October 2012

Originality is demonstrated, not presumed

A program is protected if it is original “in the sense that it is the author’s own intellectual creation”. The French Cour de cassation requires courts to look into how the choices made show the author’s own intellectual contribution and personal effort; providing “a particular solution” to a problem is not enough. Evidence of existence does not establish originality.

CJEU, 2 May 2012, C-406/10, SAS Institute

Functionality, language, formats: out of scope

Neither the functionality of a program, nor the programming language, nor the format of data files used to exploit some of its functions are a form of expression of the program protected by copyright. What you date is code, not an idea or a function.

French Code de la propriété intellectuelle, art. L. 113-1 and L. 113-9

Presumed author, sometimes vested rights

Under French law, the author is presumed, until proven otherwise, to be the person under whose name the work is disclosed. For software created by employees in the course of their duties or on the employer’s instructions, the economic rights vest in the employer, unless statutory provisions or contractual terms provide otherwise. An independent developer keeps their rights unless the contract assigns them. A date settles none of these questions.

INPI e-Soleau and escrow; APP

Dating, depositing, escrowing: three different needs

Three needs stand apart: dating a version (the INPI’s e-Soleau, Sealway), archiving it for evidential purposes with a body (the Agence pour la protection des programmes) or placing it in escrow for a client (the INPI’s “entiercement”). The table below compares what each establishes. Sealway meets the first need, with a qualified timestamp verifiable without it; it is neither a deposit nor an escrow.

Cour de cassation · 1st civil chamber · 17 October 2012

Cass. 1re civ., 17 October 2012, no. 11-21.641

Quashed · decision under appeal: cour d’appel d’Aix-en-Provence, 11 May 2011

A publisher sues a competitor for infringement of a case-management program for commissaires de justice. The court of appeal finds the software original on the ground that it provides “a particular solution” to that management. The Cour de cassation quashes the judgment.

By so ruling, without looking into how the choices made showed an intellectual contribution of their own and a personal effort of the person who had developed the software in dispute, which alone can give it the character of an original work protected as such by copyright, the court of appeal gave no legal basis to its decision.

Cass. 1re civ., 17 October 2012, no. 11-21.641. Our translation.

What Sealway takes from it

Existing on a date and being protected are two different things. The Sealway proof fixes the first; originality is demonstrated through the design choices of the code, and that is another discussion. Producing a dated archive does not dispense with having it, but keeps it from stalling first on “which version existed when”.

Read the decision on Légifrance (in French) →

The method: one version archive, one proof.

The workflow is manual and takes a few minutes: generate the archive of a version, check it, create the proof, keep the archive. It works with any version control tool, or without one.

What a version archive should contain

  • the complete sources of the version, not an excerpt;
  • the configuration and build files: dependency manifest, build scripts;
  • the release notes or changelog, which say what this step contains;
  • a file that names the version: number, tag, commit identifier;
  • the licences of third-party components and your own;
  • the documentation and, where they exist, the test suites;
  • no secrets: keys, tokens, passwords and .env files stay out of the archive;
  • a file name that carries the version: project-v1.4.0.zip.
  1. 1

    Choose the step

    A version about to leave your hands or change in nature: sending to a client, contractual delivery, release, rewrite. Not every commit.

  2. 2

    Generate the archive

    An export or archive of the version from your tool (a Git archive of a tag, for example), as ZIP or TAR. With or without the .git directory: if it is included, its history is part of the dated content, without its internal dates being certified for all that.

  3. 3

    Check the archive

    Open it: it does contain the complete sources, the release notes, no secret. This exact archive is what you will produce later; an archive regenerated afterwards will have another fingerprint.

  4. 4

    Create the proof

    From the app, import the archive and, if useful, the release notes or a README separately. Give the proof an explicit title, “lib-x v1.4.0”, and note the tag and the commit identifier in the description: reference points for you, editable, outside what is timestamped.

  5. 5

    Keep the archive

    Keep the archive as it is, in storage of your own, with the evidence file: without a storage plan, Sealway keeps the original 7 days. The evidence file you keep remains verifiable indefinitely, but it only means something against the archive.

  6. 6

    Repeat at the key steps

    One proof per version that matters, in a collection named after the project: the chronology of versions reads in the collection, and each proof can be verified separately.

project-v1.4.0.zip Sealway SHA-512 Qualified electronic timestamp Evidence file

Up to 10 files and 250 MB per proof. An archive rarely exceeds that; a larger project is split into several archives, in one proof or in one collection.

One proof per step, not per commit.

There is no need to create a proof at every commit. It is more relevant to document the important steps: release, delivery, transfer to a third party, major change.

  1. v0.1.0

    Prototype

    First archive of the project, before any sending. Proof “v0.1.0”.

  2. v0.8.0

    First client version

    The version presented and then delivered to the client. Proof created on the day of sending.

  3. v1.0.0

    Release

    The version published or put into production. Proof “v1.0.0” with the release notes.

  4. v2.0.0

    Major rewrite

    New architecture, new components: a proof that marks the change.

Each proof fixes a version and a date. Placed end to end in the project’s collection, they tell what existed before each step, without depending on your tool’s history.

.git archive, remote repository, signed release, CI: what each shows.

An archive containing .git

Sealway proves that this archive, history included, existed on the date of the proof. The commit dates it contains therefore existed on that date; they do not become certified facts.

A GitHub or GitLab repository

The host displays dates and authors; it is a trace held by a third party, useful, but subject to its rules, its retention and a history that can be force-pushed. It is not a qualified timestamp.

A signed release or tag

A signature establishes that the content comes from a given key and has not changed since the signing. It does not establish when the signature was applied other than by declaration.

CI logs

They show that a build was run on a given content; they are operational traces, kept for a while, on infrastructure you or your host control.

Employee, freelancer, client: who owns what.

A dated proof is useful whatever the regime, but it does not change it.

Employee

Under French law, the economic rights on software created by employees in the course of their duties or on the employer’s instructions vest in the employer, unless statutory provisions or contractual terms provide otherwise (art. L. 113-9). The employer has an interest in dating versions; the employee remains the author.

Freelancer

The provider keeps their rights unless the contract assigns them. Dating what existed before the assignment tells pre-existing code from code written for the client; the contract says what is assigned.

Client

A client receiving a delivery also has an interest in dating what they received, and when: a proof of the delivered archive, at receipt, complements the acceptance report.

Open source

A free licence organises the rights of use; it does not dispense with knowing who wrote what and when. Dating the versions of an open project documents its history independently of the forge.

Confidentiality: dating without disclosing.

The fingerprint does not reveal the code

The proof rests on the SHA-512 fingerprint of the archive, from which it cannot be reconstructed. Verifying the proof requires the archive; producing it remains your decision.

Files are encrypted

The archive travels over an encrypted connection and is encrypted server-side before storage. The Security page details the set-up.

No secrets in the archive

Keys, tokens and passwords have no place in a dated version: they prove nothing and create a risk. Exclude them before generating the archive.

Produce only what is needed

In a dispute, you choose what you produce: a proof can bear on an isolated module rather than the whole project, if that is what is disputed.

Example: a library, a client, a disputed component.

  1. 10 January

    Internal prototype

    The developer archives version v0.3.0 of their library, with its notes, and creates a proof. The synchronisation component is already in it.

  2. 2 February

    Presentation to the client

    The code is shown to the client; the collaboration begins. The developer archives and dates the version presented.

  3. 20 March

    First contractual delivery

    Delivery of v1.0.0, archive dated on the day of sending, handover email with Sealway in BCC.

  4. Six months later

    Disagreement

    The client claims the synchronisation component was developed for them. The proof of 10 January shows that a specific version of the component existed before the collaboration.

The proof of 10 January establishes that an archive containing this component, in this form, existed on that date, before the presentation to the client. It can help show that the component pre-dated the collaboration; on its own it does not determine who owns the rights on the delivered version, which the contract, any assignments and, failing agreement, the court decide.

Git history, e-Soleau, APP deposit, escrow, Sealway: what each establishes.

Different tools for different needs: working, dating, depositing, escrowing.

Comparison of the ways of documenting a version of source code
Approach What it brings Its limits
Git history, hosted repository The working chronology: commits, authors, messages, branches; traces held by the host. Dates declared by machines, rewritable history; no independent finding of a date.
e-Soleau (French INPI) An INPI receipt with the deposit date, the list of items and their fingerprints; retention by the INPI. Confers no right; limited volume per deposit; deposit of the content with a body.
Deposit with the APP Evidential archiving of a version by a body specialised in software, with escrow options. Confers no right; the body’s own procedure and cost.
Escrow (INPI, APP) Source code placed in escrow for a beneficiary, accessible on agreed conditions: continuity of operation. Meets a need for continuity, not for dating prior existence.
Sealway An archive dated by a qualified electronic timestamp, verifiable without Sealway, with no deposit of the content with any body. €1.99 per proof. Confers no right; establishes neither originality, nor authorship, nor ownership; does not certify Git’s internal dates.

These means do not exclude one another: a project can be dated at each version with Sealway, deposited at a key step and placed in escrow for a client. None of them replaces a clear contract on the rights.

What Sealway makes it possible to establish, and does not, for source code.

Sealway makes it possible to establish

  • that a given code archive existed at the latest at the time of the timestamp;
  • that it has not been modified since: the archive produced later matches, or not, the one in the proof;
  • the exact content of a version on that date: sources, configuration, notes;
  • a chronology of versions, when a proof exists at each step;
  • that a version existed before a sending, a delivery or a release, when the proof precedes those moments.

Sealway does not, on its own, establish

  • who wrote the code, nor who owns the rights;
  • that the code is original, nor that it does not borrow third-party code;
  • that the licences of the components are complied with, nor the absence of infringement;
  • that nobody else already had the same code before you;
  • that the dates written in Git are accurate, nor that the history has not been rewritten;
  • the actual creation date of an imported archive, only its existence at the latest at the time of the proof.

The contract, the author’s status, the licences and, in a disagreement, the court decide the rest. The proof gives them a version and a date that do not depend on the person producing them.

What a qualified timestamp changes for your code.

A version archive is placed in a Sealway proof on the day it matters. Months later, it is possible to verify that the archive produced is the one bound to the timestamp created that day.

  • SHA-512 fingerprint of each file: the proof bears on this exact version; modifying the file changes the fingerprint, and the fingerprint cannot be turned back into the file.
  • Qualified electronic timestamp: presumption of accuracy of the date and time and of integrity of the data (eIDAS Regulation, art. 41(2)). The date comes neither from the device nor from Sealway.
  • Evidence file verifiable without Sealway: certificate, manifest, timestamp token and fingerprints, with the references of the anchoring on public blockchains.
The mechanism in detail: create evidence from your files

Frequently asked questions

What developers, studios and their clients ask.

How do I prove that my code existed before a given date?
By creating, on that date, a Sealway proof of the version’s archive: the archive’s fingerprint is bound to a qualified electronic timestamp, which establishes that it existed at the latest at that instant. Keep the archive as it is; it and the evidence file are enough to show it, without Sealway.
Is a GitHub repository enough as evidence?
It is a useful trace, not independent evidence of a date: commit dates are declared by the machines creating them, the history can be rewritten, and the repository shows what the host displays under its rules and retention. An archive dated by a qualified timestamp fixes what a repository cannot.
How do I protect software before showing it to a client?
Copyright protects original software without formality; what is missing is evidence of what existed before. Archive and date the version before the presentation, then fix by contract what is assigned and what stays yours. A non-disclosure agreement is a matter of contract, not of evidence.
Do I need to deposit my source code?
No deposit is needed to be protected. A deposit (e-Soleau, APP) or an escrow meets precise needs: an attested date (date certaine) with a public body, evidential archiving, continuity for a client. Sealway meets the dating need by another means; the three can coexist depending on what is at stake.
Can a timestamp be used for software?
Yes: for the timestamp, software is a file like any other. The archive gets a SHA-512 fingerprint, bound to a qualified electronic timestamp. What the timestamp establishes, existence and integrity on a date, holds for code as for a document.
Does Sealway prove that I am the author of the code?
No. Sealway establishes that an archive existed on a given date and has not changed since. Under French law the author is presumed, until proven otherwise, to be the person under whose name the work is disclosed (art. L. 113-1); attribution is argued by any means, and ownership of the rights depends on status and contract.
Does Sealway certify the dates of my commits?
No. If the archive contains the .git directory, Sealway proves that this archive, history included, existed on the date of the proof. The dates written in the commits remain statements by the machine that created them; they do not become certified.
Should I include dependencies and third-party code?
Include the dependency manifest rather than the dependencies themselves, and the licences of third-party components. The proof does not say that this third-party code is used in accordance with its licence: that is for you to check, and it stays outside what Sealway establishes.
Is my code disclosed when I create a proof?
No. The fingerprint does not make it possible to reconstruct the archive, and the archive is encrypted server-side before storage. Producing the archive to a third party remains your decision, when you need to.
What if I regenerate the archive later?
A regenerated archive almost always has another fingerprint: file order, metadata, compression. The proof bears on the exact archive of that day; keep it as it is, it is what you will produce.

References

Texts, decisions and official sources cited on this page; the French sources are in French.

  • French Code de la propriété intellectuelle, art. L. 111-1 and L. 111-2 (how copyright arises) Légifrance →
  • French Code de la propriété intellectuelle, art. L. 112-1 and L. 112-2 (protected works, software included) Légifrance →
  • French Code de la propriété intellectuelle, art. L. 113-1 and L. 113-9 (authorship, software created by employees) Légifrance →
  • French Code de la propriété intellectuelle, art. L. 122-6 (exploitation rights on software) Légifrance →
  • Directive 2009/24/EC of 23 April 2009 on the legal protection of computer programs, art. 1 EUR-Lex →
  • CJEU, 2 May 2012, SAS Institute, C-406/10 EUR-Lex →
  • Cour de cassation, 1st civil chamber, 17 October 2012, no. 11-21.641 Légifrance →
  • INPI, “Se préparer au dépôt d’une e-Soleau” inpi.fr →
  • INPI, “Se préparer au dépôt d’un entiercement” (escrow) inpi.fr →
  • Agence pour la protection des programmes (APP), software deposit and escrow app.asso.fr →
  • Regulation (EU) No 910/2014 of 23 July 2014 (eIDAS), art. 41 EUR-Lex →

Sealway does not provide legal advice. The protection of software, the ownership of rights and compliance with licences depend on the applicable law, on the contracts and, in a disagreement, on the court’s assessment. The French provisions cited implement EU directives; other jurisdictions have their own rules on authorship and employee-created software.

Date the next version before you deliver it.

An archive, a SHA-512 fingerprint, a qualified electronic timestamp under eIDAS, an evidence file a third party can verify. Join the waitlist to be notified at launch.

By signing up, you agree to be contacted by Sealway about the launch. No sharing with third parties.