Ask
229
@scopecreep_sam ·

the contract says the client owns the deliverable — how do people carve out the reusable core before signing?

four client builds now share about 60% of the same code: auth, imports, the scheduling engine, a reporting layer. every one of those contracts is plain work-for-hire, signed years ago, and i want to sell the shared part as a product. i'm not asking anyone to tell me if i'm allowed to — i want to know what wording people put in new contracts so the next four builds don't create the same problem.

9 answers Share
Report

Answering anonymously — a moderator will review it first.

  • @invoice_ivan · last mo.

    The clause I use is a background IP carve-out and it's two paragraphs. In plain terms: anything I bring to the engagement, plus anything general-purpose I write during it, stays mine; the client gets a perpetual licence to use it as part of their deliverable; the client owns the parts specific to them — their branding, their business rules, their data, their integrations.

    A solicitor drafted mine and it cost a few hundred, once, and I've used it on every contract since. Mine, not yours — the enforceability of that shape varies by jurisdiction and by how your contracts are structured, so take it to someone qualified before you rely on it.

    The other half is structural: separate repositories from day one. A carve-out is much easier to argue when the shared core is a package with its own history and the client repo imports it.

    218
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
  • @ship_it_soren · last mo. · 3 replies

    Repository structure did more for me than wording, and it's the part you control unilaterally.

    I split into a core package and per-client apps about eighteen months before I had any product ambitions, purely because the copy-paste was killing me. When the product question came up, the answer was already obvious to look at — here is the shared package, here are four thin clients on top of it, and the git history shows the core predating three of the four engagements.

    Whoever eventually reads that contract, that's a much better story than "most of it is the same, honestly."

    174
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
    • @invoice_ivan · last mo.

      Then the new-contract answer matters more than the old-contract answer, which is what you asked. Start the clean package now, build the next engagement on top of it, and let the history start being useful from today.

      35
      Share
      Reply

      Answering anonymously — a moderator will review it first.

      Report
    • @scopecreep_sam · last mo.

      my history is the opposite of that — client two is a fork of client one, and client three is a fork of client two. so the story the repos tell is not the one i want.

      48
      Share
      Reply

      Answering anonymously — a moderator will review it first.

      Report
  • @boring_portfolio · last mo. · 3 replies

    Going to disagree with the assumption that this is a fight. I asked three former clients directly whether they minded me selling a generic version of the tooling, plainly, over email.

    All three said yes without hesitation. Two asked for a discount if they ever moved onto the product, which I gave. One asked me to confirm none of their data or business rules went with it, which was reasonable and true.

    People assume the client will object and never test the assumption. A client who hired you for three days of work does not think of themselves as owning a software company.

    118
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
    • @dee_okonkwo · last mo.

      Ask before you ship, not after. The conversation is completely different when nothing exists yet and you're describing a plan.

      24
      Share
      Reply

      Answering anonymously — a moderator will review it first.

      Report
    • @scopecreep_sam · last mo.

      i think i have been assuming a fight for two years without ever sending an email. three of my four are small businesses who mostly want the thing to keep working.

      35
      Share
      Reply

      Answering anonymously — a moderator will review it first.

      Report
  • @sdcard_sid · last mo.

    I did it the wrong way round and it cost me four months. Built the product on top of code written under a work-for-hire contract without asking, launched quietly, and got a polite letter from a client's legal team about eight weeks later.

    It didn't become a dispute — we settled it with an agreement and a licence, and they were reasonable throughout. But I spent a month unable to sell anything while it was open, paid for legal help on both sides of the conversation, and had to rewrite two modules to be safe. The letter cost me far more than the couple of hours of advice would have upfront.

    96
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
  • @handy_orla · last mo.

    Separate repos from day one. Background IP clause in every new contract, drafted by someone qualified in your jurisdiction. Ask the old clients rather than assuming — most say yes and the ones who don't, you needed to know about anyway.

    61
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report