Developers · Publish

Guidelines

The rules every plug-in in the Plug-in Store follows, in numbered sections a reviewer can cite: purpose, quality, naming, safety, privacy, data and commerce.

A reviewer holds every version to these rules and cites them by number and name, "Guidelines 5, Fair play"; each section keeps its address.

1. Purpose

  • 1.
    A plug-in puts dated records on your readers' days that they would act on, or would otherwise go looking for.
  • 2.
    Its records come from the body that publishes them, and say what it published.
  • 3.
    It is not a channel for advertising, opinion or anything without a date (Is a plug-in right for this?).

2. Quality

  • 1.
    Correct: it prints what the source says, no more and no less; its fixtures are real copies of its sources, and its example days are true.
  • 2.
    Current: its schedule follows the source.
  • 3.
    Fails loudly: when a source changes shape it exits non-zero with a reason. One that prints nothing, or guesses, does not pass.
  • 4.
    The same every time: the same files give the same records.

3. Naming

  • 1.
    Names say what it carries, in its readers' words, in each language it speaks (the words you choose).
  • 2.
    It impersonates no one: not the source's holder, another publisher or another plug-in. Its publisher is the organization that verified its domain.
  • 3.
    It never claims to be, be made by or be endorsed by Kanboombo, unless Kanboombo publishes it. Reserved ids (store, publish, search, markets, and any starting kanboombo, kb-, chk- or test-) are refused (PLG-ID-RESERVED), and a name a reader could mistake for another plug-in's must change.
  • 4.
    Its attribution names the data's holder, and nobody else.

4. Safety

  • 1.
    It does not try to reach the network, read outside its folder and sources, start processes or leave its locked room. Trying is a reason to reject it, even when the room stops it.
  • 2.
    Its code is readable .mjs: not minified or obfuscated, with no eval, new Function or code built at run time.
  • 3.
    Its titles are plain text, and its links lead to the page where the source publishes that record.

5. Fair play

  • 1.
    It asks a source for no more than it needs, no more often than it changes, with a maxBytes close to what it sends.
  • 2.
    It behaves the same under review as on readers' days; code that detects a check and does something else is rejected.
  • 3.
    Its review information is true.
  • 4.
    It respects every limit by design, not by luck.

6. A privacy policy

  • 1.
    A listed plug-in links its publisher's privacy policy, over https; the listing cannot be submitted without one.
  • 2.
    The policy says what the publisher does with any data it holds. A plug-in collects nothing from readers and never learns who they are, and the policy should not suggest otherwise.

7. Data minimisation

  • 1.
    It prints only records its readers will see.
  • 2.
    It declares only the sources it reads, and reads only the columns it needs.
  • 3.
    Its backfill reaches only as far back as is worth having on a reader's days.

8. Restricted data

  • 1.
    No personal data: nothing that identifies a private person, no names of private people, contact details or identity numbers.
  • 2.
    Nothing you may not republish: only data whose terms let Kanboombo store it and show it to its readers. While the terms are unsettled, its audience is private and its retain unknown (Data rights).
  • 3.
    One holder, under that holder's terms.

9. Commerce

  • 1.
    No advertising, anywhere.
  • 2.
    No affiliate links, tracking parameters or referral codes.
  • 3.
    No checkout and nothing for sale; items link to the source's page for that record, never a storefront.
  • 4.
    Plug-ins are free to install: no paid plug-ins, no payments.

10. Runs a day

  • 1.
    Its schedule runs it at most 24 times a day.
  • 2.
    Every plug-in shares one queue on the Server, and this keeps it fair; the portal refuses more (PLG-SCHEDULE-TOO-FREQUENT).