Skip to content
This repository has been archived by the owner on Apr 8, 2024. It is now read-only.

Fork Gridsync and create configs file specifically for S4 #470

Open
Liz315 opened this issue Mar 2, 2017 · 13 comments
Open

Fork Gridsync and create configs file specifically for S4 #470

Liz315 opened this issue Mar 2, 2017 · 13 comments
Assignees

Comments

@Liz315
Copy link
Member

Liz315 commented Mar 2, 2017

Fork Gridsync and create configs file specifically for S4

@crwood
Copy link
Member

crwood commented Mar 2, 2017

Questions:

  • What do we want to use for the user-facing application name?
    • "Tahoe-GUI"? "S4"? "Least Authority S4"? "Simple, Secure Storage Service"? Something else?
  • What do we want to use for the user-facing application icon?
  • What URL(s) we send users to if they need to report an issue or get help?

@exarkun
Copy link
Contributor

exarkun commented Mar 2, 2017

(not answering those questions sorry 😄 ) Implementation-wise, could we do this without a github fork - the config file could be an optional argument to the Makefile? Then we'd just need to keep a copy of our own config file and not have to keep a fork up to date with upstream GridSync.

@crwood
Copy link
Member

crwood commented Mar 2, 2017

Essentially, yes. Currently, the config file is hardcoded to "config.txt" in the root dir of the repo (which various scripts read during the build process in order to determine the resultant application name, specify icons, etc.) so it would really just be a matter of copying a Least Authority-specific version overtop of that one (along with any icon files) and running make -- or, alternatively, updating those scripts and the Makefile to accept a different config file.

@Liz315
Copy link
Member Author

Liz315 commented Mar 4, 2017

To answer your questions:

Since Least Authority is the company providing storage services, I think it would make sense to use the "LA" logo instead of designing a new one for S4, which is specific to Amazon S3 (and may just add to the confusion between all of these various pieces).

For the description, I think we should say something like:
"S4: Simple, Secure Storage Service on Amazon S3"
to connect it to the current S4.

I'm not sure what to call the user facing application. We could go with "Gridsync" but no where on the current website do we mention it, and people are already overwhelmed by "Tahoe-LAFS", "S4" and such. However, that would be consistent with the work you have started and we could add information to the website (which we should do either way). So, "Gridsync" could be the application to connect to grids, like the Least Authority S4 grid.

Let's talk more about this.

@meejah
Copy link
Contributor

meejah commented Mar 4, 2017

I think we should call the thing "Tahoe-GUI". (Or, we should have a thing called Tahoe-GUI that e.g. other grid-operators like Matador could provide to users for the "get tahoe-lafs setup and running on your machine).

Maybe medium-term it makes sense to let these things evolve slightly differently? That is, "GridSync" does what it does, but Tahoe-GUI is 'just' (for now) the install + show-status part? I don't really have any strong feelings on which way is "better" though (just thinking that having two apps that do exactly the same thing but one is called Tahoe-GUI and one is called GridSync is weird).

Also +1 for L.A. logo for the S4 grid.

@crwood
Copy link
Member

crwood commented Mar 5, 2017

I'm also +1 on associating the "LA" logo with S4 within the application. It's what I already used in the recent screenshots/mockups for IFF too so, unless there's any objection, let's stick to that!

As for the name, I'm not particularly attached to "Gridsync" long-term but it does already have a good deal of history and recognition with folks at Simply Secure, IFF, Internews, etc. such that it's probably best to keep that name alive in some capacity for the time being (and certainly for the remainder of the current UXFund funding period). I should mention that I don't think "Tahoe-GUI" is a particularly good name either, however (at least not for mass market purposes or in the long-term) since it gives no indication as to what the application actually does unless the user is already familiar with "Tahoe" and they know what a "GUI" is (and arguably, in the future, users shouldn't need to be familiar with these concepts in order to use S4 -- the first 's' does stand for 'Simple' after all ;) ).

On that note, if we really wanted to reduce user-confusion (and I'm very much in favor of doing this), we could go the Dropbox route and collapse the user-facing distinction between application and service entirely, i.e., deploy the application as "S4" with the "LA" logo (such that users wouldn't even need to know what "Tahoe-LAFS" a "GUI" or "Gridsync" even is -- they just install the application, enter their invite code, and they're all set to start adding files/folders to the service via whatever means we provide to them in the GUI). Thoughts?

Regarding what Gridsync currently does vs. what Tahoe-GUI was heading towards doing, they're now very much in-line: I removed my own watchdog/snapshot-based "sync" implementation a while back (and everything else that was interwoven with it) in favor of magic-folders.. It's now basically "just" installation (with tahoe already included on macOS/Windows), setup (via wormhole invite), and grid/magic-folder status -- though users can also create magic-folders by drag-and-dropping from a file-manager onto that window (which still needs to be made more discoverable and is probably not the best default use-case, etc. but is at least demo-able in the interim).

@meejah
Copy link
Contributor

meejah commented Mar 5, 2017

"Branding" etc also impacts the trust model. My understanding was that we intended to have "one software" that you download from a single trusted place like tahoe-lafs.org (or leastauthority.com?) and then the branding 'comes with' the provider.

If we go the other route (e.g. compile-time, burned-in branding that "comes with the app") then I think we should revisit the trust-stuff. In such a case, the users would have to download the software from their provider? (After all, if they're trusting them for service already, why not for software, too? And if not, would we be hosting N re-branding distributions?) In this case, the whole "invite code" thing is maybe moot, too: you just install the app and it has burned-in registration / login URLs/APIs.

I think the first approach is better for "tahoe-lafs as an open-source project', better for provider-diversity, better for friend-net use-cases and better for leastauthority (e.g. we'd be "the source of the software" even for white-label/integration cases). This also has a better story for integrators: they just have to built a "thing that calls 'tahoe invite' or otherwise produces invite-codes" to tie into their existing login stuff instead of "build + distribute software to end-users safely, and integrate it with existing login stuff". This is likely way safer for end-users, too: we would be shipping software updates to everyone (i.e. not depending on third-party distributors to update before users get it).

@crwood
Copy link
Member

crwood commented Mar 6, 2017

Excellent points. And yes, there are essentially two levels of "branding" that we should distinguish between:

  1. Application-level branding: i.e., what the user sees and clicks on to install and run the application (currently "Gridsync").

  2. Service-level branding: i.e., what the user sees when they're joining a storage grid and elsewhere within the application where providing such context becomes useful (e.g., in seeing the status of a particular grid among others or in knowing which files/folders are stored in which grid).

I was under the impression (as suggested by the title of this issue and discussed previously) that the initial deployment was to be geared towards S4 customers specifically (i.e., as something akin to a limited beta test), in which case it becomes more justifiable to provide application-level branding in addition to the service-level branding that they already get (i.e., provide to users a "Least Authority S4" installable application that also connects them to the "Least Authority S4" service) -- the Dropbox model.

Longer term, however, I agree that there should be a (singular?) application that would allow users to more easily join multiple grids of their choosing. Ideally -- and in the interest of minimizing conflicts-of-interest -- this would be a user-facing application blessed and deployed by the Tahoe-LAFS.org open source project itself (and/or be included alongside upstream tahoe in some other way, e.g., in the form of "invite"/"join" sub-commands that depend on a magic-wormhole server hosted by tahoe-lafs.org) since, in a market of competing commercial Tahoe-LAFS storage providers, it is questionable whether any one of them should (or would) be trusted with controlling the update pipe for the customers of all the others. Of course, since such a market currently doesn't exist, that's probably a moot point (however, one still worth considering in the broader context/discussion of trust-modeling). :)

In the short term, the most expedient step towards a solution to all of this might just be for Liz and I to write and propagate a leastauthority.com blog post in the not-too-distant future detailing some of the usability/user-engagement/collaboration work we've been doing lately (all of which was conducted under the "Gridsync" umbrella as per our grant with Internews/USABLE/UXFund and which they will probably want to see anyway -- along with folks at Simply Secure and others we've been meeting/talking/working with at IFF). Doing so would help to cement the project as one that's strongly associated with (i.e., sponsored/produced by) the company while helping to dissuade the notion that it's just the pet project of some dude (even though it certainly started out that way!). As a secondary effect, customers -- or potential customers -- of Least Authority who read the blog post get some insight into this hitherto mysterious "GUI" project that they've been hearing very little about such that when the application is deployed as "Gridsync" (if it is, that is) then there's no surprise and all of the dots get connected for us retroactively. As an added bonus, we get to signal our ability to meaningfully engage with the community (which we should probably be doing more of anyway) and maybe even reel in some of those elusive non-cypherpunk customers along the way.

@meejah
Copy link
Contributor

meejah commented Mar 7, 2017

We already do have competition of sorts for storage space. There are:

  • Matador.cloud
  • S4/leastauthority
  • i2p grid
  • onion grid

...whom I would imagine might all like to be listed as "a provider" at some point after we release a GUI.

Related to this, if the only way to "re-brand" / use "not S4" is to fork GridSync and re-release it, the longer we don't have "the one Tahoe GUI" hosted at tahoe-lafs.org we run the risk of this happening (e.g. Matador deciding to build + release a branded fork).

@meejah
Copy link
Contributor

meejah commented Mar 7, 2017

Also, if part of our message (even if only subtext?) is "this is better than, e.g., Dropbox-style services" then maybe the "tight branding" thing is bad, too. (It might be more confusing for users: "I thought this thing I downloaded was S4? Why is it asking me to pay money/sign up/whatever to some other service?)

@crwood
Copy link
Member

crwood commented Mar 7, 2017

Yeah.. If we go the "tightly branded" (i.e., application-level) route for S4 (which I only suggest as an option if the initial/beta deployment is intended to be for S4 customers only -- and which I'm now unclear on) then the functionality of selecting/joining a grid from a pre-given/built-in list should probably be disabled altogether to eliminate that sort of confusion. Personally, I'd like to remove that option for now anyway (i.e., force wormhole setups as the only method of joining a grid through the GUI) since, as it stands, the only grids listed are my own test grid (which has very low capacity) and the Public Test Grid (which has very poor reliability). A good compromise, however, might be to provide those options to the user at runtime (i.e., of choosing a grid from a built-in list of providers) only in the event that the application isn't "branded" at the application level. But even so, I'm not a fan of the idea of giving whoever controls "the one GUI" the authority to decide which providers are and aren't included (particularly in the event of multiple commercial providers being available). If only there was some sort of independent/third-party Tahoe-LAFS storage provider "market" service with a sweet JSON API that we could scrape. :)

Dreaming aside, I suppose that the crux of the issue here still depends on the question of whether and to what extent the deployed application should be "specifically for S4". What do you have in mind @Liz315?

@Liz315
Copy link
Member Author

Liz315 commented Mar 7, 2017

This is a really important discussion! Hopefully, I can help by sharing my thoughts and summarizing your discussion into proposed answers:

Initially, I assumed Tahoe-GUI would be more of a slimmer application and therefore would have configurations baked in. But then you all came up with the invitation code solution, which is better. Then we circled back to Gridsync's grid selection with the usability work and I am realizing that some flexibility is needed for the user, too.

I don't think it is far off to believe people may want to be utilizing more than one grid provider, whether simultaneously or at the very least wanting to switch from one provider to another. For trust, I think it is important to offer people an easy way to switch, especially if we want to support a world with Tahoe-LAFS. Baking configurations in could prove annoying in that case (a user would need two applications?). Having multiple versions of the same software will be frustrating for users and I think harder for us, too. Plus everything mentioned previously.

So, we stick with one version of the application for all providers, meaning we don't "bake in" configurations.

Grid discovery and selection within the application:
Tahoe-LAFS.org could be a good place for this. (Or even better, something more like Tahoe-LAFS Market, so that .org can be supporting the core work.) For now, maybe just a list page on Tahoe-LAFS.org that links to provider hosted information, along with information on how to set up your own grid and/or join the list. The main responsibility for convincing users to use their grid or service should be with the providers, not the Tahoe-LAFS project and not Gridsync/Tahoe-GUI. I think the grid/service providers should also be generating there own signup codes and controlling their distribution (through payment or whatever). However, we may need to revisit how to make this easier for them (like Tahoe-LAFS could generate the codes for the grid/service providers, but the g/s providers distribute them).

The application:
Next we need to make it easy for users who want to just get up and running with one provider and not be overwhelmed by the concept of many grids (until they are ready to shop for a new one). With this, we make a big assumption that most users will be finding a provider before downloading the application. This could possibly not be the case, but I think we should influence users to go research their options outside of the application because of the point I made above and reducing the burden of the application: it should be on the grid/service providers to convince the user.

To me, this means we should reverse some of the current Gridsync workflow.

Example application workflow:

  1. Download application
  2. Start installation process.
  3. Get prompted to immediately "Enter invitation code" with a smaller option of "I don't have an invitation code" like is used with "I forgot my password".
  4. Enter the code and configurations get made.
  5. Or if they select "I don't have an invitation code" they go to an explanation screen that starts the grid wizard that Gridsync currently has.

Step 5 is the part that we can wait on perfecting. I think getting 1-4 working for grid/service providers like us is key. 5 is where we can build a healthy ecosystem and grants and the internet freedom community can help to make the project have a bigger impact. For now, 5 could also just go to a webpage with explanation and a link to a list of grid/service providers and instructions to set up your own grid.

As for branding:
With the above workflow, the branding could switch to the providers branding once the invitation code is entered. (To note though, this may need to be tweaked when a user has more that one grid. Maybe they just get one branded window per grid provider?)

Could we just call the application "Tahoe-LAFS" and use the Tahoe-LAFS icon? Although I hesitate because it is such an odd name. I like the name Gridsync, better, but I fear we lose the decade of history and reputation of Tahoe-LAFS by going that route. And nonetheless, if we are distributing the application from Tahoe-LAFS.org and the grid/service market place is there, then the association is even stronger.

Perhaps we can still blog about Gridsync being the underlying open source project for the Tahoe-LAFS application and Least Authority's contributions? This downplays Least Authority branding and levels our playing field, in a sense, but I think it is a big deal that we (and Gridsync) can take credit for seeding this and just be the best grid/service provider :)

@crwood
Copy link
Member

crwood commented Mar 8, 2017

Tahoe-LAFS.org could be a good place for this. (Or even better, something more like Tahoe-LAFS Market, so that .org can be supporting the core work.) For now, maybe just a list page on Tahoe-LAFS.org that links to provider hosted information, along with information on how to set up your own grid and/or join the list.

This all sounds great to me and we should talk to @warner about whether and to what extent he'd like this integrated with Tahoe-LAFS.org proper. Perhaps a simple storage_providers.rst doc would suffice for now (which could then be linked to somewhere near the "First Steps" sections on the Docs index). Any providers listed there should, of course, be added only with their consent and we should do some outreach to ensure that nobody is excluded from the opportunity of being added (e.g., by making a public announcement on the mailing list, on IRC, and by contacting the various grid operators that we know of directly). In addition, the doc itself should contain instructions for anyone that would like to be added (whether it be, e.g., by talking to @warner directly or welcoming them to open a pull request).

Longer-term it would be great if this evolved into more of a "marketplace" type thing (perhaps hosted externally or by a third-party) with a searchable/sortable table with various information that might be useful in the decision-making process of selecting a provider (e.g., price, homepage/contact info, whether it's a single-node/location service vs. multi-node/location, whether they support/require Tor/I2P, whether they accept Bitcoin/Zcash, etc.). Originally, I wanted to have something like this built right into the GUI and available to users as part of the initial setup process (and currently do have a limited variation of it) but, after more thought and discussion, I'm not so sure that it's a good idea -- and not because I'm lazy or anything, but because the decision of who should be included for consideration should be one made by the broader community (and/or come as a result of the user's own research) rather than a single person. That is, if the GUI is meant to be impartial (i.e., not branded/configured towards being used for a singular provider), it should probably be impartial all the way. On the other hand, I really want the setup process to be as frictionless as possible, so providing some guidance in the event that the user has not already selected a provider remains desirable.

The main responsibility for convincing users to use their grid or service should be with the providers, not the Tahoe-LAFS project and not Gridsync/Tahoe-GUI.

Yes. This is another example of what I mean (and which I spoke about in our panel session on Monday) with regard to drawing and keeping a distinction between a) information the user needs to use an application/service (i.e., perform tasks) vs. b) information the user needs to be convinced to use that application/service in the first place (i.e., values-based or "marketing"-type information). Arguably, a good UI for a desktop application should only require conveying the first type of information (which, if true, would give further justification to the idea of divorcing the "marketplace" type stuff from the application itself).

I think the grid/service providers should also be generating there own signup codes and controlling their distribution (through payment or whatever). However, we may need to revisit how to make this easier for them (like Tahoe-LAFS could generate the codes for the grid/service providers, but the g/s providers distribute them).

Yes. I wrote a quick document here explaining how to construct a valid invite code that would work with Gridsync (which storage providers could consult in delivering wormhole codes to their own users). I think that more tools should be available, however, to make this easier for storage providers (which might, as a consequence, result in the existence of more storage providers). @meejah has a branch with a tahoe invite command that is useful to this end (and I have some independent scripts on mine that I use for demos), however, IIRC from a few N&B meetings ago, no consensus was reached as to whether this is something that should live in tahoe proper vs. being somewhere else (which ties in to the on-going discussion of how best to integrate other applications with tahoe -- recalling Brian's analogy between sqlite and postgres-style applications -- and which we should definitely talk more about).

Example application workflow:

  1. Download application
  2. Start installation process.
  3. Get prompted to immediately "Enter invitation code" with a smaller option of "I don't have an invitation code" like is used with "I forgot my password".
  4. Enter the code and configurations get made.
  5. Or if they select "I don't have an invitation code" they go to an explanation screen that starts the grid wizard that Gridsync currently has.

Step 5 is the part that we can wait on perfecting. I think getting 1-4 working for grid/service providers like us is key. 5 is where we can build a healthy ecosystem and grants and the internet freedom community can help to make the project have a bigger impact. For now, 5 could also just go to a webpage with explanation and a link to a list of grid/service providers and instructions to set up your own grid.

This all sounds excellent to me and, I think, strikes a good balance between strongly encouraging the use of the wormhole-based setup model while not leaving the user feeling abandoned (or having a Bad Experience on the Public Test Grid) in the event that they don't have a code.

As for branding:
With the above workflow, the branding could switch to the providers branding once the invitation code is entered. (To note though, this may need to be tweaked when a user has more that one grid. Maybe they just get one branded window per grid provider?)

Just to be clear: by "the branding could switch", you mean the branding of the service (e.g., as shown here and here) and not the branding of the application, correct?

In any case, I'm thinking that the combo-box/pull-down menu in the current main/status window should be replaced with just the graphic/label for the "primary" grid (but then could turn into a combo-box/pull-down menu in the event that the user joins another grid). This would provide strong service-level branding (since the icon/name of the grid would appear at the top/center of the main/status window) while still providing the underlying flexibility of joining multiple grids and toggling the status view between them. Thoughts?

Could we just call the application "Tahoe-LAFS" and use the Tahoe-LAFS icon? Although I hesitate because it is such an odd name. I like the name Gridsync, better, but I fear we lose the decade of history and reputation of Tahoe-LAFS by going that route. And nonetheless, if we are distributing the application from Tahoe-LAFS.org and the grid/service market place is there, then the association is even stronger.

I'm also very hesitant to use "Tahoe-LAFS" (but would prefer it over "Tahoe-GUI") if only for the shallow reason that it gives very little indication on the surface as to what the application actually does (or at least it would require further explication that would be wasteful of the user's time). Beyond that, the design of the application (as it currently stands, at least) makes a conscious effort to conceal almost all of the standard operating "Tahoe-LAFS" lingo from the user ("fURLs", "mutable"/"immutable", "shares", "capabilities", "readcap"/"writecap", "servers-of-happiness", etc.). This is a good thing, I think, and gives us an opportunity to make a clean break from the bundensome concepts and language that already drive ordinary users away.

Perhaps more seriously, Tahoe-LAFS does much more than a singular GUI probably ever will and I would hate for users to install the "Tahoe-LAFS.app" application and be disappointed by the (current) lack of functionality and/or make the mistake of thinking that it is Tahoe-LAFS when, in reality, it is an opinionated application that's built on top of Tahoe-LAFS and provides an interface for a very small subset of its features (it also depends on things that are not Tahoe-LAFS like magic-wormhole). The way I see it, "Tahoe-LAFS" is something akin to a protocol or spec (or "technology") that other applications could use in the same way that HTTP is a protocol/spec/technology that browsers use (Actually, I recall @warner mentioning something along the lines of "LAFS" being the spec and "Tahoe" being the python implementation of it). Just as we want to encourage an ecosystem of diversity among browsers (and not settle on a singular "HTTP-GUI.app"), we should want to encourage an ecosystem of diversity among LAFS-based applications. Crucially, this includes GUIs. I, at least, would love to see more friendly user-facing applications that use Tahoe-LAFS as a backend (or that are otherwise "powered by" or "secured by" Tahoe-LAFS) -- think password managers, blogging platforms, publication channels, things like NextCloud and more -- and so I worry that, by calling this GUI "Tahoe-LAFS" we'd be making an authoritative statement that is not only incorrect about what the application is but is also potentially discouraging of other creative efforts in the same space.

All that being said, I'm wondering whether our collective efforts might be better served if we (leastauthority) outwardly focused on creating and marketing great (i.e., open source, secure, and simple) applications and services that are based on (or "powered by" or "secured by") Tahoe-LAFS/S4 than risk further muddying the (already very muddy) conceptual waters and hampering our own agility to develop new and awesome things on top of this old and awesome technology.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants