TECHNICAL PRESENTATION

Monetising &
Distributing Software

Turning your code into a product people can find, use, and pay for
Business Distribution Monetisation
Build Package Distribute Monetise Scale

From open-source libraries to SaaS platforms — every path from code to revenue

License  ·  Ship  ·  Charge  ·  Grow
01

Topics

Distribution Models

  • Free vs paid — the spectrum
  • Open source licensing
  • Package managers & libraries
  • App stores & marketplaces
  • Desktop app distribution

Monetisation Strategies

  • SaaS & recurring revenue
  • Payment integration (Stripe, Paddle)
  • Subscription & pricing tiers
  • API monetisation
  • Licensing & license keys

Building the Business

  • Building a SaaS (auth, billing, multi-tenancy)
  • Landing pages & marketing basics
  • Analytics & metrics (MRR, churn, LTV)
  • Marketplace & platform distribution

Practical Concerns

  • Legal: ToS, privacy, GDPR, tax
  • Scaling from free to paid
  • Common indie developer mistakes
  • Summary & further reading
02

Free vs Paid Distribution

Software distribution exists on a spectrum — from fully open to fully proprietary.

Fully Open Source Open Core Freemium Free Trial Paid Only

Open Source

  • Code is public, anyone can use/modify
  • Revenue via support, hosting, consulting
  • Examples: Linux, PostgreSQL, Redis
  • Builds trust and community

Freemium / Open Core

  • Core product free, premium features paid
  • Most popular SaaS model today
  • Examples: Slack, Notion, GitLab
  • Conversion rates typically 2-5%

Paid Only

  • No free tier — pay to access
  • Higher quality signal, lower volume
  • Examples: Sublime Text, JetBrains IDEs
  • Works when value is clear and proven

Key Insight

Free distribution builds top of funnel. Paid features capture value. The best businesses combine both — give away what creates trust, charge for what creates ROI.

03

Open Source Licensing

Your license determines how others can use, modify, and redistribute your code.

License Permissions Conditions Copyleft? Commercial Use
MIT Use, modify, distribute Include license text No Yes
Apache 2.0 Use, modify, distribute, patent grant Include license, state changes No Yes
GPL v3 Use, modify, distribute Derivatives must also be GPL Strong Yes (with conditions)
AGPL v3 Use, modify, distribute Network use = distribution Strongest Yes (with conditions)
BSL / SSPL Use, modify (non-production) No competing hosted service N/A Restricted

Permissive (MIT / Apache)

Maximum adoption. Companies can use your code without legal fear. Best for libraries and tools you want widely used.

Copyleft (GPL / AGPL)

Protects the commons. Forces derivatives to remain open. AGPL closes the "SaaS loophole" — used by MongoDB (before SSPL), Grafana.

MIT License

Copyright (c) 2026 Your Name

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software... [the standard MIT text]
04

Package Managers & Libraries

The simplest way to distribute code for free: publish to a package registry.

EcosystemRegistryCLIPackages
JavaScriptnpmjs.comnpm publish~3M
Pythonpypi.orgtwine upload~500K
Rustcrates.iocargo publish~150K
Gopkg.go.devgo modDecentralised
Rubyrubygems.orggem push~180K

Publishing checklist

  • Choose a clear, unique package name
  • Semantic versioning (semver)
  • Write a good README
  • Include TypeScript types / type hints
  • Set up CI to auto-publish on tag
  • Add a LICENSE file

Example: package.json for publishing an npm library

{
  "name": "@yourorg/utils",
  "version": "1.2.0",
  "description": "Utility functions for data processing",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "files": ["dist"],
  "license": "MIT",
  "repository": { "type": "git", "url": "https://github.com/yourorg/utils" },
  "scripts": {
    "build": "tsc",
    "prepublishOnly": "npm run build"
  },
  "publishConfig": { "access": "public" }
}
05

App Stores & Marketplaces

Walled gardens give you discovery and trust, but take a cut and impose rules.

StoreFeeAnnual CostReview ProcessKey Rules
Apple App Store 15-30% $99/yr Manual, 1-7 days Must use Apple IAP for digital goods
Google Play 15-30% $25 one-time Automated + manual Sideloading allowed on Android
Steam 20-30% $100/game Steam Direct Revenue split improves at $10M+
Chrome Web Store Free (5% for paid) $5 one-time Automated Manifest V3 required
VS Code Marketplace Free Free Automated Open marketplace, can monetise externally

The 30% Problem

Apple and Google taking 30% of digital goods has driven lawsuits (Epic v. Apple) and pushed developers towards web-based payment flows. The EU Digital Markets Act is forcing changes.

Alternatives to App Stores

  • PWAs (Progressive Web Apps) — no store needed
  • Direct download with code signing
  • Homebrew / apt repositories for CLI tools
  • Sideloading on Android
06

Software-as-a-Service (SaaS)

SaaS is the dominant model for monetising software. Users pay recurring fees; you host and maintain the service.

Why SaaS Won

  • Recurring revenue — predictable cash flow
  • No piracy — you control access
  • Continuous updates without user action
  • Usage data drives product decisions
  • Lower barrier to entry for users
  • Easier to upsell and expand revenue

SaaS Metrics

  • ARR = Annual Recurring Revenue
  • MRR = Monthly Recurring Revenue
  • Churn = % customers lost per period
  • NRR = Net Revenue Retention (>100% is great)

Typical SaaS Architecture

Browser / App CDN / LB
API Gateway Auth Service
App Server(s) Database
Billing / Stripe Email / Notifications
07

Building a SaaS — The Tech Stack

Authentication

  • Clerk — drop-in auth UI
  • Auth.js (NextAuth) — open source
  • Supabase Auth — with DB
  • Firebase Auth — Google
  • OAuth 2.0 / OIDC standard
  • Magic links, passkeys, SSO

Multi-tenancy

  • Shared DB — tenant_id column
  • Schema per tenant — isolation
  • DB per tenant — max isolation
  • Row-Level Security (RLS) in Postgres
  • Middleware to inject tenant context

Billing

  • Stripe — industry standard
  • Paddle — merchant of record
  • LemonSqueezy — simpler Paddle
  • Webhooks for payment events
  • Subscription lifecycle management

Modern SaaS Starter Stacks

StackComponents
Next.js + VercelReact, Prisma, Stripe, Clerk
Django + RailwayPython, Postgres, Stripe, django-allauth
Rails + Fly.ioRuby, Postgres, Stripe, Devise
Go + HetznerHTMX, SQLite/Postgres, Stripe

Multi-tenancy with RLS

-- Postgres Row-Level Security
ALTER TABLE projects ENABLE ROW LEVEL SECURITY;

CREATE POLICY tenant_isolation ON projects
  USING (tenant_id = current_setting('app.tenant_id')::uuid);

-- Set in middleware before each request
SET app.tenant_id = 'abc-123-def';
08

Payment Integration

Stripe

  • Payment processor — you are merchant
  • You handle tax, invoicing, compliance
  • 2.9% + 30c per transaction
  • Best API, most flexibility
  • Stripe Tax, Billing, Connect

Paddle / LemonSqueezy

  • Merchant of Record (MoR)
  • They handle tax, VAT, invoicing
  • 5% + 50c per transaction
  • Simpler — ideal for solo devs
  • They are the seller, you are the vendor

When to Use Which

  • Stripe: full control, scale, complex billing
  • Paddle: don't want to deal with tax
  • Gumroad: one-off digital products
  • MoR simplifies global sales tax enormously

Stripe Checkout — create a payment session in ~20 lines:

// Server: Create Stripe Checkout session
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);

app.post('/api/checkout', async (req, res) => {
  const session = await stripe.checkout.sessions.create({
    mode: 'subscription',
    line_items: [{
      price: 'price_1234abc',  // from Stripe dashboard
      quantity: 1,
    }],
    success_url: 'https://app.example.com/success',
    cancel_url: 'https://app.example.com/pricing',
    customer_email: req.user.email,
  });
  res.json({ url: session.url });
});
// Server: Handle Stripe webhooks
app.post('/webhooks/stripe', async (req, res) => {
  const event = stripe.webhooks.constructEvent(
    req.body,
    req.headers['stripe-signature'],
    process.env.STRIPE_WEBHOOK_SECRET
  );

  switch (event.type) {
    case 'checkout.session.completed':
      await activateSubscription(event.data.object);
      break;
    case 'invoice.payment_failed':
      await handleFailedPayment(event.data.object);
      break;
    case 'customer.subscription.deleted':
      await deactivateSubscription(event.data.object);
      break;
  }
  res.json({ received: true });
});
09

Subscription Models & Pricing Psychology

TierPriceTargetPurpose
Free$0EveryoneTop of funnel, virality
Individual$9-29/moProsumersCore revenue
Team$15-49/seat/moSmall teamsExpansion revenue
EnterpriseCustomLarge orgsHigh ACV, SSO, SLAs

Pricing Psychology

  • Anchor high — show enterprise first, then mid-tier feels cheap
  • 3-tier rule — most people pick the middle
  • Annual discount — offer 2 months free (17% off)
  • Price on value, not cost — if you save them $10K, charge $1K
  • Avoid $0 for B2B — free plans attract the wrong users

The Free Tier Trap

Free users cost you money (hosting, support) but rarely convert. Limit free tiers carefully:

  • Rate limits (100 API calls/day)
  • Storage caps (500MB)
  • Team size limits (up to 3 members)
  • Remove branding only on paid plans
  • Data retention limits (30 days)

Usage-Based vs Seat-Based

  • Seat-based: predictable, easy to understand (Slack, Jira)
  • Usage-based: aligns cost with value (AWS, Twilio, OpenAI)
  • Hybrid: base fee + usage (Vercel, PlanetScale)
  • Usage-based has higher NRR but harder forecasting
10

Licensing & License Keys

For desktop software, CLI tools, and self-hosted products, license keys gate access without requiring a full SaaS backend.

How License Keys Work

Purchase Generate Key Validate
  • Offline: cryptographically signed tokens (JWT-like)
  • Online: phone-home to licensing server
  • Hybrid: validate online, cache locally, periodic re-check

Licensing Platforms

PlatformModelBest For
KeygenAPI-first licensingDeveloper tools
GumroadSimple digital salesIndie products
LicenseSpringEnterprise licensingB2B desktop software
Polar.shOSS monetisationOpen-source maintainers

Example: Keygen License Validation

// Validate a license key against Keygen API
async function validateLicense(key) {
  const res = await fetch(
    `https://api.keygen.sh/v1/accounts/${ACCOUNT_ID}/licenses/actions/validate-key`,
    {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        meta: { key },
      }),
    }
  );
  const { meta, data } = await res.json();

  if (meta.valid) {
    console.log('License valid:', data.attributes.name);
    return { valid: true, expiry: data.attributes.expiry };
  } else {
    console.error('Invalid:', meta.code);
    return { valid: false, reason: meta.code };
  }
}

// On app startup
const license = await validateLicense(storedKey);
if (!license.valid) showUpgradeModal();
11

Desktop App Distribution

FrameworkLanguageBundle SizeTrade-offs
ElectronJS/TS~150MB+Mature, heavy, Chromium
TauriRust + JS/TS~5-10MBLightweight, native webview
Flutter DesktopDart~20MBCross-platform, growing
Qt / GTKC++ / Python~30MBNative feel, complex build

Code Signing

  • macOS: Apple Developer ID + notarisation ($99/yr)
  • Windows: EV Code Signing Certificate (~$300-500/yr)
  • Linux: GPG signing for packages
  • Without signing: "unidentified developer" warnings = low install rate

Auto-updates

  • electron-updater — auto-update via GitHub Releases
  • Tauri updater — built-in, lightweight
  • Sparkle (macOS) / WinSparkle (Windows)
  • Delta updates to reduce download size

Distribution Channels

Build Sign Notarise Distribute
  • Direct download from your website
  • Homebrew Cask (macOS)
  • Windows Package Manager (winget)
  • Snap Store / Flatpak (Linux)
  • Mac App Store (sandboxed)
12

API Monetisation

APIs are products. Usage-based pricing aligns cost with value and scales naturally.

API Pricing Models

ModelExample
Pay-per-call$0.001 per request (Twilio)
Tiered quotas1K free, 10K = $29/mo (Algolia)
Compute-based$0.01 per token (OpenAI)
Flat + overage$49/mo + $0.01/extra call

Developer Portal Essentials

  • API key management & rotation
  • Interactive docs (Swagger / Redoc)
  • SDKs in popular languages
  • Usage dashboard & billing
  • Rate limit headers in responses

Rate Limiting Middleware (Express.js)

import rateLimit from 'express-rate-limit';
import RedisStore from 'rate-limit-redis';
import { Redis } from 'ioredis';

const redis = new Redis(process.env.REDIS_URL);

// Per-API-key rate limiting
const apiLimiter = rateLimit({
  store: new RedisStore({ sendCommand: (...args) =>
    redis.call(...args) }),
  windowMs: 60 * 1000,    // 1 minute
  max: (req) => {
    // Different limits per plan
    switch (req.apiPlan) {
      case 'free':       return 60;
      case 'pro':        return 600;
      case 'enterprise': return 6000;
      default:           return 10;
    }
  },
  keyGenerator: (req) => req.apiKey,
  standardHeaders: true,  // X-RateLimit-* headers
  legacyHeaders: false,
});

app.use('/api/v1', authenticate, apiLimiter);
13

Marketplace & Platform Distribution

Build on top of existing platforms to tap into their user base and distribution network.

PlatformRevenue SplitInstall BaseMonetisation
Shopify Apps0% (first $1M)4.6M storesSubscription or usage
WordPress PluginsVaries (marketplace)800M+ sitesFreemium, GPL required
Slack Apps0%750K+ orgsExternal billing
Figma Plugins0%4M+ designersExternal billing
Notion Integrations0%100M+ usersExternal billing

Strategy: Platform as Distribution

  • Build where users already are — lower acquisition cost
  • Platform handles auth, billing UI, discovery
  • Risk: platform dependency, API changes, de-listing
  • Diversify across platforms when possible

Shopify App Lifecycle

Build App App Review
List on Store Merchants Install
Usage Billing via Shopify API

Shopify eliminated their 20% rev share for the first $1M — making it one of the most developer-friendly platforms.

VS Code Extensions

  • Free to publish, no revenue share
  • Monetise via premium features + external auth
  • Examples: GitHub Copilot, GitLens, Tabnine
  • Huge reach — 15M+ VS Code users
14

Landing Pages & Marketing Basics

You can build the best product in the world — it doesn't matter if nobody knows it exists.

Landing Page Anatomy

  • Hero: clear headline + CTA + social proof
  • Problem: pain point your product solves
  • Solution: how your product fixes it
  • Features: 3-5 key capabilities with visuals
  • Pricing: transparent tiers
  • Testimonials: real users, real quotes
  • CTA: repeated call-to-action at bottom

Tools for Developer-Marketers

ToolBest ForCost
Next.jsFull control, SEOFree + hosting
FramerVisual builder, fast$5-20/mo
CarrdSimple one-pagers$19/yr
TypedreamNotion-like builderFree-$15/mo

Developer Marketing Channels

  • Content marketing — blog posts, tutorials, guides
  • SEO — rank for problem-related keywords
  • Twitter/X — build in public, share progress
  • Hacker News — Show HN launches
  • Product Hunt — launch day visibility
  • GitHub — README as marketing, stars as social proof
  • YouTube — demos, tutorials, comparisons

Common Marketing Mistakes

  • Describing features instead of benefits
  • No clear call to action
  • Building for months without talking to users
  • Ignoring SEO — free long-term traffic
  • Not having a changelog or public roadmap
15

Analytics & Metrics That Matter

MetricFormulaGood Target
MRRSum of monthly recurring paymentsGrowing month-over-month
Churn RateLost customers / start-of-period total<5% monthly (B2C), <2% (B2B)
LTVARPU / Churn Rate>3x CAC
CACSales + marketing cost / new customersLTV:CAC > 3:1
NRR(Start MRR + expansion - contraction - churn) / Start MRR>100% (ideally >120%)
ConversionPaid users / total signups2-5% (freemium), 10-20% (trial)

The Metrics That Actually Matter Early On

  • Retention — are people coming back?
  • Activation — do signups reach the "aha" moment?
  • Revenue — will someone pay for this?

Vanity metrics (page views, signups, stars) feel good but don't pay bills.

Product Analytics

  • PostHog (open source)
  • Mixpanel
  • Amplitude
  • Plausible (privacy-first)

Revenue Analytics

  • Stripe Dashboard
  • Baremetrics
  • ChartMogul
  • ProfitWell (free)

The SaaS Rule of 40

Growth rate + profit margin should exceed 40%. A company growing at 50% can afford -10% margins. One growing at 10% needs 30%+ margins.

16

Legal Considerations

Shipping software commercially means legal obligations. Don't skip these.

Documents You Need

DocumentPurposeRequired?
Terms of ServiceRules of using your productYes
Privacy PolicyHow you handle user dataLegally required
Cookie PolicyCookie consent (EU)GDPR/ePrivacy
DPAData Processing AgreementB2B / enterprise
Refund PolicyConsumer protectionRecommended

GDPR Essentials

  • Applies to any EU user, regardless of your location
  • Lawful basis for processing (consent or legitimate interest)
  • Right to access, rectify, delete data
  • 72-hour breach notification requirement
  • Fines up to 4% of global revenue

Tax Obligations

  • US: Sales tax varies by state (Nexus rules)
  • EU: VAT on digital services (MOSS/OSS scheme)
  • UK: VAT at 20% over £85K threshold
  • Merchant of Record (Paddle, Lemon Squeezy) handles this for you
  • Use Stripe Tax or TaxJar for automated compliance

Business Entity

  • Sole trader: simplest, unlimited personal liability
  • LLC (US) / Ltd (UK): limited liability, pass-through tax
  • C-Corp (US): required for VC funding (Delaware)
  • Get a separate business bank account early
  • Consider Stripe Atlas for US LLC formation ($500)
17

Scaling from Free to Paid

The hardest transition: when your free project becomes a real business.

When to Start Charging

  • Users are already getting measurable value
  • You have at least 10 users who would be upset if it disappeared
  • Support burden is growing
  • You need revenue to sustain development
  • Don't wait for "perfect" — charge early, iterate pricing

Grandfathering Strategies

  • Lock in price — early users keep their rate forever
  • Generous free tier — existing users get legacy plan
  • Extended trial — give existing users 6-12 months free
  • Always communicate changes well in advance
  • Thank early users — they took a risk on you

Migration Playbook

1. Announce

Email users 60+ days before changes

2. Grandfather

Give existing users special pricing or extended access

3. Introduce Tiers

Start with 2-3 simple plans

4. Iterate

Adjust pricing based on feedback and data

Real-World Examples

  • Heroku: killed free tier in 2022 — backlash, migration to Railway/Fly
  • Figma: generous free tier drove adoption before monetising teams
  • Notion: free for personal, paid for teams — viral growth
18

Common Mistakes Indie Developers Make

Building Mistakes

  • Building without validating — spending months on something nobody wants
  • Over-engineering — microservices for 10 users
  • Not shipping — perfectionism is the enemy
  • Ignoring mobile — most traffic is mobile now
  • No analytics — flying blind on user behaviour

Pricing Mistakes

  • Pricing too low — $5/mo signals "toy", not "tool"
  • Too many tiers — paradox of choice kills conversion
  • No annual discount — missing low-churn revenue
  • Charging per-feature instead of per-value
  • Lifetime deals that kill long-term revenue

Distribution Mistakes

  • No landing page — sending traffic to a GitHub repo
  • No email list — relying on social media you don't own
  • Launching once — every feature is a launch opportunity
  • Ignoring SEO — the cheapest long-term channel
  • Not building in public — missing free marketing

What to Do Instead

  • Talk to 10 users before writing any code
  • Launch in weeks, not months
  • Start with one price and increase it until people push back
  • Write about your journey — content compounds
  • Charge from day one — paying users give better feedback
  • Use a Merchant of Record to skip tax complexity
19

Summary & Further Reading

Key Takeaways

  • Distribution model matters as much as the product itself
  • SaaS + recurring revenue is the dominant model for a reason
  • Use a Merchant of Record (Paddle, LemonSqueezy) to simplify tax and compliance
  • Open source can be a business strategy, not just charity
  • Validate before building, launch early, iterate pricing
  • LTV:CAC > 3:1 and churn < 5% are your north stars

The Distribution Spectrum

Open Source Freemium Paid SaaS

Most successful products combine free distribution with paid monetisation. Give away what builds trust. Charge for what creates ROI.

Further Reading

  • "Deploy Empathy" by Michele Hansen — customer research
  • "The Mom Test" by Rob Fitzpatrick — validating ideas
  • "Indie Hackers" — community of bootstrapped founders
  • Stripe Docs — best-in-class payment integration guide
  • choosealicense.com — pick the right open source license
  • "Working in Public" by Nadia Eghbal — open source economics
  • SaaS Playbook by Rob Walling — pricing and growth

Tools Mentioned

Stripe Paddle LemonSqueezy Keygen Tauri PostHog Clerk Vercel Framer Stripe Atlas