Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,13 @@ feature you would like to contribute, we ask that you take the following steps:

2. Open a Pull Request on GitHub with a description of your changes.

## Contribution license

Shepherd.js is offered under the PolyForm Noncommercial License 1.0.0 and under
commercial licenses. By opening a pull request, you license your contribution to
Ship Shape under the MIT License, so it can ship under both. You also confirm
that you have the right to do so.

## Testing

All PRs that change code functionality are required to have accompanying tests.
Expand Down
728 changes: 89 additions & 639 deletions LICENSE.md

Large diffs are not rendered by default.

13 changes: 7 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
[![Code Coverage](https://qlty.sh/gh/shipshapecode/projects/shepherd/coverage.svg)](https://qlty.sh/gh/shipshapecode/projects/shepherd)
[![StackShare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/shepherd-js)

[Shepherd](https://shepherdjs.dev/) is an open source, fully featured, digital adoption platform (DAP) and user on-boarding service.
[Shepherd](https://shepherdjs.dev/) is a source-available, fully featured, digital adoption platform (DAP) and user on-boarding service.

Supported Browsers
----------------------------------------------------------
Expand Down Expand Up @@ -65,9 +65,9 @@ Steps position themselves with a small built-in engine. Tune the gap, edge dista

Coding agents: read [`shepherd.js/AGENTS.md`](shepherd.js/AGENTS.md), which is also in the npm package.

### Shepherd Open Source Library
### Shepherd Standalone Library

The Shepherd Standalone Library has been open source since the very beginning. Check out our tutorials here:
The Shepherd Standalone Library has been free for noncommercial use since the very beginning. Check out our tutorials here:

#### [React Shepherd Wrapper](packages/react)
#### [Angular Shepherd Wrapper](https://github.com/shipshapecode/angular-shepherd)
Expand Down Expand Up @@ -134,10 +134,11 @@ If you have a cool open-source library built on Shepherd, PR this doc.

## License

Shepherd.js is dual-licensed under AGPL-3.0 and a Commercial License.
Shepherd.js is source-available under the PolyForm Noncommercial License 1.0.0, with a commercial license for commercial use.

- **Free for open source and non-commercial use** under AGPL-3.0
- **Commercial license required** for commercial products and revenue-generating companies
- **Free** for personal, hobby, educational, and other noncommercial use
- **Free to evaluate** for 30 days in a commercial project
- **Commercial license required** for commercial products, client work, and internal tools at for-profit companies. It is a one-time payment from $50.

See [LICENSE.md](LICENSE.md) for complete details or visit [shepherdjs.dev/pricing](https://shepherdjs.dev/pricing) to purchase a commercial license.

Expand Down
7 changes: 7 additions & 0 deletions docs-src/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';

import starlightLlmsTxt from 'starlight-llms-txt';
import starlightTypeDoc, { typeDocSidebarGroup } from 'starlight-typedoc';

// https://astro.build/config
export default defineConfig({
site: 'https://docs.shepherdjs.dev',
integrations: [
starlight({
title: 'Documentation',
Expand All @@ -31,6 +33,11 @@ export default defineConfig({
Head: './src/components/HeadWithPosthog.astro'
},
plugins: [
starlightLlmsTxt({
projectName: 'Shepherd.js',
description:
'Shepherd is a JavaScript library for building guided product tours, user onboarding flows, and feature announcements. It works with React, Vue, Angular, Ember, or plain JavaScript. Free for noncommercial use under the PolyForm Noncommercial License 1.0.0 and free to evaluate for 30 days; commercial use needs a one-time license from $50 at https://www.shepherdjs.dev/pricing.'
}),
starlightTypeDoc({
entryPoints: ['./node_modules/shepherd.js/src/*.ts'],
tsconfig: './node_modules/shepherd.js/tsconfig.json',
Expand Down
1 change: 1 addition & 0 deletions docs-src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"@astrojs/starlight": "^0.42.10",
"astro": "^7.4.7",
"shepherd.js": "workspace:*",
"starlight-llms-txt": "0.12.0",
"starlight-typedoc": "^0.23.2"
},
"devDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion docs-src/src/content/docs/guides/install.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ title: Installation
import { Tabs, TabItem } from '@astrojs/starlight/components';

:::note[License Information]
Shepherd.js is **free for open source and non-commercial use** under AGPL-3.0. Commercial projects require a commercial license. [Learn more about licensing →](/guides/license/)
Shepherd.js is **free for noncommercial use** under the PolyForm Noncommercial License 1.0.0, and free to evaluate for 30 days. Commercial projects require a one-time commercial license. [Learn more about licensing →](/guides/license/)
:::

## Install Directly
Expand Down
103 changes: 34 additions & 69 deletions docs-src/src/content/docs/guides/license.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,95 +3,60 @@ title: License & Pricing
description: Understanding Shepherd.js licensing and when you need a commercial license
---

Shepherd.js uses a **dual-licensing model** to support both open source and commercial use.
Shepherd.js is source-available under the [PolyForm Noncommercial License 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0/), with a commercial license for commercial use.

## Free Use - AGPL-3.0
## Quick answers

Shepherd.js is **free for open source and non-commercial use** under the AGPL-3.0 license.
**Is Shepherd.js free?** Yes, for personal and hobby projects, noncommercial open-source projects, education, and use by charities, public research organizations, and government institutions.

### Who Can Use Shepherd.js for Free?
**Can I try it in a commercial project?** Yes. Any company can evaluate Shepherd.js for free for 30 consecutive days.

✅ **Open Source Projects**
- Your project is open source under an AGPL-compatible license
- Your complete source code is publicly available
**Can I use Shepherd.js in a commercial or closed-source product?** Yes, with a commercial license. You never have to publish your source code.

✅ **Personal & Non-Commercial Use**
- Personal projects, portfolios, and hobby websites
- Educational purposes (students, teachers, coursework)
- Academic research projects
**What does a commercial license cost?** A one-time payment with no recurring fees. The Business license is $50 for up to 5 projects. The Enterprise license is $300 for unlimited projects. [Buy a license](https://www.shepherdjs.dev/pricing).

✅ **Evaluation & Testing**
- Evaluating Shepherd.js for up to 30 days
- Development, testing, and staging environments during evaluation
- Proof-of-concept and demo projects
**Does `react-shepherd` need a license too?** It has the same terms as `shepherd.js`. One Shepherd.js license covers both.

### AGPL-3.0 Requirements
## Free use

When using Shepherd.js under AGPL-3.0, you must:
- Make your complete source code available if you distribute or provide your software over a network
- License your code under AGPL-3.0 or a compatible license
- Comply with all AGPL-3.0 terms
The PolyForm Noncommercial License allows any noncommercial use at no cost. That includes:

[Read the full AGPL-3.0 license text](https://github.com/shipshapecode/shepherd/blob/main/LICENSE.md)
- Personal projects, portfolios, hobby sites, and private study
- Open-source projects that have no anticipated commercial application
- Students, teachers, coursework, and academic research
- Charities, educational institutions, public research organizations, public safety or health organizations, environmental organizations, and government institutions, regardless of how they are funded

---

## Commercial License

You **must purchase a commercial license** if:

❌ **Commercial Products & Services**
- You're building a commercial product, application, SaaS, or website that generates revenue
- Your company generates revenue (even if the specific project using Shepherd.js does not)
- You're using Shepherd.js in any customer-facing commercial application

❌ **Closed-Source Use**
- You cannot or don't want to open-source your code under AGPL-3.0
- You want to keep your source code proprietary
- You want to avoid AGPL's source code disclosure requirements

❌ **White-Label, Resale, or OEM Use**
- You're embedding Shepherd.js in a product you sell or distribute
- You're offering Shepherd.js as part of a commercial service or hosting
- You're using Shepherd.js in a product sold to other businesses
## Free evaluation

❌ **Internal Business Tools**
- You're using Shepherd.js for internal tools, dashboards, or admin panels in a revenue-generating company
- Even if the tool is not customer-facing, commercial licenses are required for for-profit companies
Any company may use Shepherd.js for any purpose for up to 30 consecutive days to decide whether it suits a project. Each company gets one evaluation period for all of its people. After 30 days, commercial use needs a commercial license.

### Benefits of Commercial License
## Commercial license

- ✅ **No AGPL obligations** - Keep your code proprietary
- ✅ **Legal protection and indemnification**
- ✅ **Priority support and updates**
- ✅ **Lifetime license with no recurring fees**
You need a commercial license when your use has an anticipated commercial application. For example:

[**View Pricing & Purchase →**](https://shepherdjs.dev/pricing)
- A commercial product, app, SaaS, or website that earns revenue
- Client work, agencies, and consulting projects
- Internal tools, dashboards, or admin panels at a for-profit company, even when they are not customer-facing
- Embedding Shepherd.js in a product you sell, resell, white-label, or distribute

---

## Still Not Sure?

If you're unsure whether you need a commercial license:
A commercial license includes:

**When in doubt:** If your organization generates revenue, you likely need a commercial license.

**Contact us:** [ahoy@shipshape.io](mailto:ahoy@shipshape.io)

---
- Use in closed-source code, with no obligation to share your source
- Legal protection and indemnification
- Priority support and updates
- A lifetime license with no recurring fees

## Framework Wrappers
[**View Pricing & Purchase →**](https://www.shepherdjs.dev/pricing)

### React Shepherd
## Still not sure?

The `react-shepherd` wrapper is licensed under MIT, but it depends on `shepherd.js` which is AGPL-3.0.
If your organization earns revenue and the project serves it, you need a commercial license. For anything else, email [ahoy@shipshape.io](mailto:ahoy@shipshape.io).

If you need a commercial license for Shepherd.js, you also need one when using the React wrapper.
## Framework wrappers

### Other Wrappers
- [React Shepherd](https://www.npmjs.com/package/react-shepherd) has the same license as `shepherd.js`.
- [Angular Shepherd](https://github.com/shipshapecode/angular-shepherd), [Vue Shepherd](https://github.com/shipshapecode/vue-shepherd), and [Ember Shepherd](https://github.com/RobbieTheWagner/ember-shepherd) depend on `shepherd.js`, so its license applies to any app that uses them.

- [Angular Shepherd](https://github.com/shipshapecode/angular-shepherd)
- [Vue Shepherd](https://github.com/shipshapecode/vue-shepherd)
- [Ember Shepherd](https://github.com/RobbieTheWagner/ember-shepherd)
## Earlier versions

All wrappers depend on the core Shepherd.js library and inherit its licensing requirements.
Releases before this change were licensed under AGPL-3.0 (earlier releases under MIT). Those releases keep the license they were published under.
20 changes: 17 additions & 3 deletions landing/public/llms.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
# Shepherd.js

> Shepherd is an open-source JavaScript library for building guided product
> Shepherd is a JavaScript library for building guided product
> tours, user onboarding flows, trainings, and feature announcements on any
> website or web app. Steps render as accessible dialogs (keyboard navigation,
> focus trapping, aria attributes) that attach to DOM elements and are
> positioned by a small built-in engine. Works with React, Ember, Angular, Vue.js,
> ES Modules, or plain JavaScript. Free for open-source, personal, and
> non-commercial use (AGPL-3.0); commercial licenses are available.
> ES Modules, or plain JavaScript. Free for personal, hobby,
> educational, and other noncommercial use (PolyForm Noncommercial 1.0.0), and
> free to evaluate for 30 days; commercial use needs a one-time license.

## Writing Shepherd code

Expand Down Expand Up @@ -48,9 +49,22 @@ Use Shepherd when a project needs to guide users through a web interface:
Shepherd is not a native mobile (iOS/Android) tour library and is not an
analytics product — it renders and orchestrates the tour UI itself.

## Licensing

- License: PolyForm Noncommercial 1.0.0 (SPDX `PolyForm-Noncommercial-1.0.0`)
plus a 30-day free evaluation for any use.
- Free for personal and hobby projects, noncommercial open-source projects,
education, charities, public research, and government.
- Commercial use (products, SaaS, client work, internal tools at for-profit
companies) needs a one-time commercial license. Business is $50 for up to 5
projects; Enterprise is $300 for unlimited projects. No recurring fees.
- Buy at https://www.shepherdjs.dev/pricing. `react-shepherd` has the same terms;
one Shepherd license covers both.

## Docs

- [Documentation](https://docs.shepherdjs.dev/): installation, guides, API reference
- [Full docs for LLMs](https://docs.shepherdjs.dev/llms-full.txt): every docs page as one markdown file
- [Homepage in markdown](https://www.shepherdjs.dev/index.md): overview, install, quick example
- [Pricing and licensing](https://www.shepherdjs.dev/pricing): free plan, commercial licenses

Expand Down
6 changes: 3 additions & 3 deletions landing/src/components/BaseHead.astro
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ const structuredData = {
name: 'Shepherd.js',
alternateName: 'Shepherd',
description:
'Shepherd is an open-source JavaScript library for building guided product tours, user onboarding, trainings, and feature announcements in any web app.',
'Shepherd is a JavaScript library for building guided product tours, user onboarding, trainings, and feature announcements in any web app.',
url: `${SITE_URL}/`,
image: imageURL.href,
applicationCategory: 'DeveloperApplication',
Expand All @@ -54,7 +54,7 @@ const structuredData = {
price: '0',
priceCurrency: 'USD',
description:
'Free for open-source, personal, and non-commercial projects.',
'Free for personal, hobby, educational, and other noncommercial projects, and free to evaluate for 30 days.',
url: `${SITE_URL}/pricing`
},
{
Expand Down Expand Up @@ -100,7 +100,7 @@ const structuredData = {
name: 'Shepherd.js',
url: `${SITE_URL}/`,
description:
'Guide your users through a tour of your app with Shepherd, an open-source JavaScript library.',
'Guide your users through a tour of your app with Shepherd, a JavaScript library for product tours.',
publisher: { '@id': `${SITE_URL}/#organization` }
}
]
Expand Down
7 changes: 4 additions & 3 deletions landing/src/lib/homepage-markdown.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { SITE_URL } from '../consts';
*/
export const homepageMarkdown = `# Shepherd.js — Guide your users through a tour of your app

Shepherd is an open-source JavaScript library for building guided product
Shepherd is a JavaScript library for building guided product
tours, user onboarding flows, trainings, and feature announcements. Each tour
is a sequence of steps rendered as accessible dialogs that can attach to any
element in the DOM, highlight it with a modal overlay, and walk the user through your app.
Expand Down Expand Up @@ -86,8 +86,9 @@ ASSA ABLOY, Gallup, Avalara, Ally, and CodePen.

## Licensing

Shepherd is free for open-source, personal, and non-commercial projects
(AGPL-3.0). Commercial licenses are available at ${SITE_URL}/pricing.
Shepherd is free for personal, hobby, educational, and other noncommercial
projects (PolyForm Noncommercial 1.0.0), and free to evaluate for 30 days.
Commercial use needs a one-time license from $50 at ${SITE_URL}/pricing.
Shepherd is maintained by [Ship Shape](https://shipshape.io/).

## More
Expand Down
19 changes: 10 additions & 9 deletions landing/src/pages/about.astro
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ import ContentPage from '@layouts/ContentPage.astro';
heading="About Shepherd"
>
<p>
Shepherd is an open-source JavaScript library for guiding users through your
app. It lets you build product tours, user onboarding flows, trainings, and
feature announcements as a sequence of steps — dialogs that attach to
elements in your interface, highlight them with a modal overlay, and walk
users through what to do next. Steps are positioned by a small built-in
engine, so they never end up off screen or cropped by an overflow.
Shepherd is a JavaScript library for guiding users through your app. It lets
you build product tours, user onboarding flows, trainings, and feature
announcements as a sequence of steps — dialogs that attach to elements in
your interface, highlight them with a modal overlay, and walk users through
what to do next. Steps are positioned by a small built-in engine, so they
never end up off screen or cropped by an overflow.
</p>

<p>
Expand All @@ -39,9 +39,10 @@ import ContentPage from '@layouts/ContentPage.astro';
<h2>Licensing</h2>

<p>
Shepherd is free for open-source, personal, and non-commercial projects
under the AGPL-3.0 license. Commercial licenses fund the ongoing maintenance
of the library, documentation, and community — see
Shepherd is free for personal, hobby, educational, and other noncommercial
projects under the PolyForm Noncommercial License 1.0.0, and free to
evaluate for 30 days. Commercial licenses fund the ongoing maintenance of
the library, documentation, and community — see
<a href="/pricing">pricing</a> for details, or read the
<a href="https://docs.shepherdjs.dev/">documentation</a> to get started.
</p>
Expand Down
21 changes: 9 additions & 12 deletions landing/src/pages/pricing.astro
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,12 @@ import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';
</h2>

<p class="font-body mt-6 text-xl text-left leading-8 text-gray-600">
Shepherd remains open-source software, and this commitment is
unwavering. Our library serves as a foundation for countless solo
developers and esteemed organizations, empowering them to create
their applications. With a thriving community of users, the ongoing
enhancement and upkeep of the library, documentation, and community
engagement demand significant resources. Your support is essential
for us to continue this mission. So, if you want to use Shepherd.js
in your commercial app, website or plugin, you would need to obtain
a commercial license.
Shepherd.js is free for personal, hobby, educational, and other
noncommercial projects, and free to evaluate for 30 days in a
commercial one. Commercial apps, websites, plugins, client work,
and internal tools at for-profit companies need a one-time
commercial license. Licenses fund the ongoing work on the library,
documentation, and community.
</p>

<div class="my-20 flow-root">
Expand Down Expand Up @@ -312,9 +309,9 @@ import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';
Free plan
</h3>
</div><div class="mt-4 text-lg text-gray-600">
Shepherd.js is free for open-source, personal and
non-commercial sites. If your project is non-commercial, you
can use Shepherd.js for free.
Shepherd.js is free for personal, hobby, educational, and
other noncommercial projects, and free to evaluate for 30
days in a commercial one.
</div>
</div>
<div class="mt-6 lg:mt-2 lg:ml-10 lg:shrink-0">
Expand Down
8 changes: 8 additions & 0 deletions landing/test/agent-recovery.e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,12 @@ describe('llms.txt', () => {
expect(body).toContain('## When to use Shepherd');
expect(body).toContain('https://docs.shepherdjs.dev/');
});

it('states the commercial license price and path', async () => {
const body = await (await fetch(`${TEST_BASE_URL}/llms.txt`)).text();

expect(body).toContain('## Licensing');
expect(body).toMatch(/\$50/);
expect(body).toContain('https://www.shepherdjs.dev/pricing');
});
});
Loading
Loading