Skip to content

Commit 3d21428

Browse files
committed
Disable telemetry/auto-updates and rebrand runtime to Pebble
- Default data_collection off (stop POSTing instance metadata to api.modmail.dev/metadata), and disable auto-updates / update notifications so a private instance doesn't pull from upstream. - Rebrand the about command to Pebble while keeping attribution to the upstream Modmail project and its AGPL-3.0 source link. - Stop the sponsors command from fetching upstream SPONSORS.json. - Add a commercial-license outreach draft. Note: LICENSE (AGPL-3.0) and upstream copyright are intentionally kept intact; these changes are configuration/branding only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013vqQJQAud7rmfykwWKJACY
1 parent 336ff5c commit 3d21428

3 files changed

Lines changed: 66 additions & 55 deletions

File tree

cogs/utility.py

Lines changed: 15 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -334,56 +334,29 @@ async def about(self, ctx):
334334
"""Shows information about this bot."""
335335
embed = discord.Embed(color=self.bot.main_color, timestamp=discord.utils.utcnow())
336336
embed.set_author(
337-
name="Modmail - About",
337+
name="Pebble — About",
338338
icon_url=self.bot.user.display_avatar.url if self.bot.user.display_avatar else None,
339-
url="https://discord.gg/F34cRU8",
340339
)
341340
embed.set_thumbnail(url=self.bot.user.display_avatar.url if self.bot.user.display_avatar else None)
342341

343-
desc = "This is an open source Discord bot that serves as a means for "
344-
desc += "members to easily communicate with server administrators in "
345-
desc += "an organised manner."
346-
embed.description = desc
342+
embed.description = (
343+
"Pebble is Plover's internal support assistant — an organised shared "
344+
"inbox that lets contributors handle customer support inquiries."
345+
)
347346

348347
embed.add_field(name="Uptime", value=self.bot.uptime)
349348
embed.add_field(name="Latency", value=f"{self.bot.latency * 1000:.2f} ms")
350349
embed.add_field(name="Version", value=f"`{self.bot.version}`")
351-
embed.add_field(name="Authors", value="`kyb3r`, `Taki`, `fourjr`")
352350
embed.add_field(name="Hosting Method", value=self.bot.hosting_method.name)
353351

354-
changelog = await Changelog.from_url(self.bot)
355-
latest = changelog.latest_version
356-
357-
if self.bot.version.is_prerelease:
358-
stable = next(filter(lambda v: not Version(v.version).is_prerelease, changelog.versions))
359-
footer = f"You are on the prerelease version • the latest version is v{stable.version}."
360-
elif self.bot.version < Version(latest.version):
361-
footer = f"A newer version is available v{latest.version}."
362-
else:
363-
footer = "You are up to date with the latest version."
364-
365-
embed.add_field(
366-
name="Want Modmail in Your Server?",
367-
value="Follow the installation guide on [GitHub](https://github.com/modmail-dev/modmail/) "
368-
"and join our [Discord server](https://discord.gg/cnUpwrnpYb)!",
369-
inline=False,
370-
)
371-
372-
embed.add_field(
373-
name="Support the Developers",
374-
value="This bot is completely free for everyone. We rely on kind individuals "
375-
"like you to support us on [`Buy Me A Coffee`](https://buymeacoffee.com/modmaildev) (perks included for memberships) "
376-
"to keep this bot free forever!",
377-
inline=False,
378-
)
379-
380352
embed.add_field(
381-
name="Project Sponsors",
382-
value=f"Checkout the people who supported Modmail with command `{self.bot.prefix}sponsors`!",
353+
name="Built On",
354+
value="Pebble is built on the open-source [Modmail](https://github.com/modmail-dev/modmail) "
355+
"project by `kyb3r`, `Taki`, and `fourjr`, licensed under AGPL-3.0.",
383356
inline=False,
384357
)
385358

386-
embed.set_footer(text=footer)
359+
embed.set_footer(text="Pebble • Plover")
387360
await ctx.send(embed=embed)
388361

389362
@commands.command(aliases=["sponsor"])
@@ -392,21 +365,12 @@ async def about(self, ctx):
392365
async def sponsors(self, ctx):
393366
"""Shows the sponsors of this project."""
394367

395-
async with self.bot.session.get(
396-
"https://raw.githubusercontent.com/modmail-dev/modmail/master/SPONSORS.json"
397-
) as resp:
398-
data = loads(await resp.text())
399-
400-
embeds = []
401-
402-
for elem in data:
403-
embed = discord.Embed.from_dict(elem["embed"])
404-
embeds.append(embed)
405-
406-
random.shuffle(embeds)
407-
408-
session = EmbedPaginatorSession(ctx, *embeds)
409-
await session.run()
368+
embed = discord.Embed(
369+
color=self.bot.main_color,
370+
title="Sponsors",
371+
description="This is a private Pebble instance operated by Plover.",
372+
)
373+
await ctx.send(embed=embed)
410374

411375
@commands.group(invoke_without_command=True)
412376
@checks.has_permissions(PermissionLevel.OWNER)

core/config.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class ConfigManager:
4545
"mention_channel_id": None,
4646
"update_channel_id": None,
4747
# updates
48-
"update_notifications": True,
48+
"update_notifications": False,
4949
# threads
5050
"sent_emoji": "\N{WHITE HEAVY CHECK MARK}",
5151
"blocked_emoji": "\N{NO ENTRY SIGN}",
@@ -213,15 +213,15 @@ class ConfigManager:
213213
"enable_eval": True,
214214
# github access token for private repositories
215215
"github_token": None,
216-
"disable_autoupdates": False,
217-
"disable_updates": False,
216+
"disable_autoupdates": True,
217+
"disable_updates": True,
218218
# Logging
219219
"log_level": "INFO",
220220
"stream_log_format": "plain",
221221
"file_log_format": "plain",
222222
"discord_log_level": "INFO",
223223
# data collection
224-
"data_collection": True,
224+
"data_collection": False,
225225
}
226226

227227
colors = {
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Commercial license outreach — draft
2+
3+
The Modmail bot and the logviewer are licensed under **AGPL-3.0** / **GPL-3.0**.
4+
To use a modified version as closed/proprietary software (e.g. offered to
5+
external customers without publishing source), Plover needs a **commercial
6+
license** from the copyright holders, or must build a clean-room replacement.
7+
8+
This file is a starting point for requesting a commercial/dual license. Send it
9+
to the maintainers (their Discord / Buy Me a Coffee / GitHub).
10+
11+
---
12+
13+
**Subject:** Commercial license inquiry for Modmail + Logviewer
14+
15+
Hi,
16+
17+
I'm reaching out from **Plover** (getplover.com). We operate a self-hosted,
18+
customised deployment of Modmail and the Logviewer to handle customer support
19+
for our product, and we'd like to do this properly with respect to the AGPL-3.0
20+
/ GPL-3.0 licensing.
21+
22+
We're interested in a **commercial / dual license** that would let us run a
23+
modified version internally (and potentially as part of a customer-facing
24+
support workflow) **without the AGPL's network source-disclosure obligation**.
25+
26+
Could you let us know:
27+
28+
1. Whether a commercial license for Modmail (and the Logviewer) is available.
29+
2. Pricing / terms (one-time, annual, per-instance, etc.).
30+
3. What it covers — modifications, the §13 network clause, rebranding, and
31+
whether the Logviewer's premium Discord-OAuth feature can be included.
32+
4. Who holds copyright and can sign such an agreement.
33+
34+
Happy to jump on a call. We want to support the project and stay compliant.
35+
36+
Thanks,
37+
<your name> — Plover
38+
39+
---
40+
41+
## Notes / fallbacks if a commercial license isn't available
42+
43+
- **Internal-use + published fork (AGPL-compliant):** keep the deployment
44+
AGPL, publish our fork's source, and offer it to network users. Lowest cost,
45+
but our modifications stay public.
46+
- **Clean-room rebuild:** build a Plover-owned support bot from scratch
47+
(our own code/copyright). Most effort; full ownership and no AGPL.

0 commit comments

Comments
 (0)