One of the issues we've been balancing is, how to provide the APIs that apps need without making hasty decisions. For instance, apps very frequently need to seed or unseed dats. We know what such an API would need to do within the current build of beaker, but the library and its policies are still up in the air, so there's a chance the API would need to change later -- breaking apps that depend on it.
The idea I want to consider is a "Lab" concept which let's us introduce APIs that are designed to be temporary. Here's how it would work:
window.experimental, to house the Lab APIs.experimental.requestSeed(url).The dat.json opt-in would serve three purposes:
EDIT:
Here's how the dat.json might work:
{
"title": "My app"
"experimental": {
"apis": ["dat-seeding", "power-boots", "orbital-cannon"]
}
}
APIs would be grouped under identifiers, such as "dat-seeding".
cc @mafintosh @RangerMauve
I really like the idea of explictly opting into experimental features! This will likely lead to good UX where users will know _why_ a given thing is broken (probably easier to raise issues that way)
What about using vendor prefixes instead of an experimental global?
For example you could have DatArchive.beakerRequestSeed(url), kinda like navigator.webkitGetUserMedia
Oh hey, Chrome did this! https://developer.chrome.com/extensions/experimental It even has the opt-in mechanism.
Maf gave a +1 in IRC. @RangerMauve yeah I'll think about the vendor prefix, but I feel like we can more strongly communicate that this stuff is in flux with the full experimental global.
Most helpful comment
Oh hey, Chrome did this! https://developer.chrome.com/extensions/experimental It even has the opt-in mechanism.
Maf gave a +1 in IRC. @RangerMauve yeah I'll think about the vendor prefix, but I feel like we can more strongly communicate that this stuff is in flux with the full
experimentalglobal.