User Generated Content Exception

No time to read?
Get a summary

Why software copyright registration across borders is misunderstood

Copyright registration for software requires applicants to submit identifying material of their source code to the canadian intellectual property office or the united states copyright office to secure a dated legal record of authorship and access statutory damages in any infringement proceedings. Registration does not extend to logic, architecture, or functional methods embedded in that code.

The first time I really tried to figure this out, I was sitting under fluorescent lights in a downtown Toronto office, a cold cup of drip coffee on the desk and three months of git logs spread across the floor in printed stacks. I’d walked past the overpriced espresso bar on King Street on the way in and refused to spend nine dollars on a cortado, which meant I was running on bitterness in two senses. I’m not a lawyer, and I want to be upfront about that – everything here is what worked for my specific situation, and none of it substitutes for advice from a certified attorney in Ontario or New York before any high-stakes decision.

The myth I kept running into was that the canadian intellectual property office actually reads submitted source code. It doesn’t. CIPO processes copyright registration as an administrative intake record.

Nobody parses your repository. Nobody flags your architecture. The record is a timestamp with legal standing, not a forensic audit.

What copyright registration actually protects is the literal text of the code as an expressive literary work – not the idea, not the process, not the system. A competitor who never copies a single character of your source can still replicate everything your product does by reading the behaviour from the outside and reconstructing the logic independently. That is legal. It happens constantly.

I spent $280 CAD on the CIPO side and $65 USD on the USCO side during one combined filing cycle, and those numbers don’t include the forty minutes I lost to a payment gateway loop on the old CIPO portal that dropped my session mid-transaction. The portal returned a 500 error and logged nothing. I had to start the payment step from scratch twice.

Copyrighting software is a paper shield unless it runs alongside a rapid-release trade secret strategy – this is where most teams get the calculation wrong. The copyright registration gives you a date. The date gives you standing. Standing means nothing if you’ve been bleeding out through undocumented access and sloppy NDAs for eighteen months before you ever need to use it.

Registering code with CIPO without exposing trade secrets

A cipo filing for source code accepts what the office calls “identifying material” – specifically, the first and last 25 pages of a printout with any trade-secret sections blocked out, a method sometimes referred to as the Rule of 25 Redactions, which lets an applicant lock in a registration date without handing the full proprietary logic to a government record that becomes accessible in subsequent litigation discovery.

I wasted close to fourteen hours and three separate filings submitting individual records for minor patch updates under the old rules before someone explained that CIPO lets you bundle revision cycles into a single source code deposit. That was approximately $180 CAD in fees I didn’t need to spend, and it came from not reading past page four of the guidance document before I started.

The actual sequence on the CIPO e-filing portal moves quickly once the redacted manifest is prepared. The classification sits under “Literary Works – Computer Program.” The deposit copy attaches as a PDF. The fee processes – it runs in a range that won’t break the budget, though the exact amount creeps up with certain claim types – and then the file goes into the queue.

Before my last cipo filing, I stopped cold at the confirmation screen. Nothing looked wrong – but I’m the kind of person who doesn’t move on gut feel. I ran a 15-minute SHA-256 checksum against every file in the deposit package to verify the redacted PDF matched the exact binary of the tagged release version. It did. Those fifteen minutes were the tensest part of the whole process, because a single mismatched file would have meant refiling and losing the original date of submission.

Three documents had to be ready before I touched the portal.

  • Redacted source printout, first and last 25 pages only, with solid black bars over the three core modules I considered trade secrets and a file hash printed in the footer of every page
  • A version manifest cross-referencing the git tag, the SHA-256 hash, and the calendar date of the bundled release window – held in a sealed envelope in my desk, never submitted, never digitally shared, treated as primary evidence in any future challenge to the registered copy’s authenticity; losing track of this document is a faster path to losing a case than never registering at all
  • Payment method confirmed on a small test transaction two days before the actual filing date, because the old portal’s payment loop had already eaten one session

Navigating the USCO deposit requirements safely

A usco application for a computer program uses Form TX – the standard literary works registration category – filed through the Electronic Copyright Office system, with deposit of identifying source code portions, to establish a formal public record and unlock statutory damages claims under Title 17 of the US Code in any subsequent infringement action.

The low hum of the backup drive on the floor next to my desk had been running for hours. I had the USCO portal open in one window, the CIPO confirmation number in another, and a printed copy of the united states copyright office’s Circular 61 open on the desk beside the keyboard. The cold drip coffee had been sitting there long enough to leave a ring on the printout.

As of late 2024, a registered copyright holder in the US can pursue statutory damages between $750 and $30,000 USD per infringed work, rising to $150,000 if wilfulness is established. Canada’s equivalent under the Copyright Act caps at $20,000 CAD for commercial infringement per work. Those aren’t comparable numbers, and they made me take the usco application more seriously than I initially planned to.

Form TX asks whether the work is published or unpublished at the time of submission. Unpublished software gets slightly different treatment, and filing before any public release locks in the strongest available claim date. I filed my primary registration as unpublished – the version was internal-only at that point – and that decision has held up correctly.

As I documented when evaluating raw patent filings for database architecture back in early 2023, the boundary between what belongs in a copyright claim and what belongs in a provisional patent is genuinely unclear for code that encodes novel algorithmic behaviour. The united states copyright office is explicit on this: the algorithm itself receives no protection, only the written expression of it.

My workaround for the deposit requirement was inelegant, and I’ll admit that freely. I printed the first and last 25 pages of the production source, scanned them into a single PDF at 300 DPI on the office machine down the hall (which jammed once, obviously), then used a free redaction layer to place opaque blocks over the three modules I was protecting. The file looked rough around the edges. It satisfied the requirement.

The eCO filing fee for a single unpublished work ran me $65 USD – or maybe $55, if memory serves, I keep confusing the pre-2024 fee schedule with the current one – and the full electronic deposit process took about 40 minutes once the PDF was clean. My first attempt uploaded the wrong file version entirely. That correspondence with the USCO to clarify the record added three weeks I hadn’t accounted for.

A sealed folder in my desk holds these items alongside the USCO confirmation.

  • Screenshot of the eCO submission confirmation screen with the timestamp visible
  • The original unredacted source archive, encrypted, timestamped, and stored offline – never submitted to any government body, kept entirely internal as the primary evidence layer for any discovery scenario; this is the document that actually matters if the registration is challenged, and it needs to stay in controlled access or the entire registration structure starts to hollow out
  • Print of Circular 61, annotated
  • The tagged git hash from the exact release version covered by the filing

The USCO confirmation number sat on the screen and I wasn’t relieved. I was already thinking about how many commits had landed on the main branch since the deposit copy was locked and how long before the registered version diverged enough from production to be tactically useless in court.

How to balance statutory protection with a trade secret strategy

Trade secret protection for software operates in parallel with copyright registration because copyright secures the expressed text of code as a literary work while trade secret law covers the undisclosed logic, architecture, and functional design that copyright explicitly cannot reach – but only as long as those elements are kept confidential through documented, enforceable internal controls.

The filing date isn’t the finish line. It’s the starting timestamp for a confidentiality discipline problem that most teams haven’t actually solved by the time they get there.

Every developer with access to the core modules, every contractor who has seen the architecture diagram, every live demo that exposes decision logic to an outside party – each one creates a trade secret erosion event that no cipo filing or usco application can address after the fact.

Copyright registration is poorly suited to protecting a novel compression algorithm. It’s well-suited to protecting a specific, elaborate UI rendering routine that a competitor would have to reproduce character-for-character to infringe. Those are different instruments aimed at different threat vectors, and treating one as a substitute for the other is how teams end up with neither.

After every major release, I worked through three checks. First, the new source code deposit was confirmed bundled (not individually filed) and the version hash matched the tagged release. Second, NDA coverage was verified against any contractors who had accessed the redacted modules since the previous filing cycle. Third, I cross-checked that the deposit copy still represented the earliest unregistered version – because a stale deposit copy covering an outdated codebase registers the wrong thing entirely, and each major version cycle got its own new deposit.

No time to read?
Get a summary
Previous Article

Canadian AI Copyright Policy

Next Article

AI Generated Content and Copyright