rmcrackan / Libation

Libation: Liberate your Library
GNU General Public License v3.0
2.66k stars 144 forks source link

Not sure how to answer first-time-install questions? #36

Closed wtanksleyjr closed 3 years ago

wtanksleyjr commented 3 years ago

The first time install has you make a choice between setting no options (which seems risky, plus the dialogue seems to suggest that you might want to set some paths), setting simple options, and setting all options.

Right now, if you choose "all options" you are first shown the advanced options, and then the basic options. I think it would be better the other way around, since that way the first-time user gets to see the context in which the advanced options work against. (In my case, I set the "program-created files" to the folder I planned to put downloaded books into.)

Also, if you bring up the "Advanced Options" dialog to fix that, you cannot choose either of the built-in options, because those folders don't exist. It would probably make sense to create those folders if they're selected, and perhaps even offer to move the existing program-created files (although perhaps not in my case).

wtanksleyjr commented 3 years ago

Hm, I just discovered that changing the "program-created files" folder is just a bad idea (it pretty much just nukes all of the settings). So maybe my last paragraph isn't really relevant.

rmcrackan commented 3 years ago

The solution here is to massively rework the wording around setup and config -- beginning with the fact the term "advanced options" is misleading here. The functionality is perfect but it's intent is clear as mud. The behind the scenes stuff going on here is complex for good reasons and I like the way it works. However I've tried and failed to make it easy for the user to configure. You're right: this needs attention.

rmcrackan commented 3 years ago

I want to keep the following structure. As you point out however, I need to drastically simplify/clarify user options.

Important folders:

1) the directory containing Libation.exe. I don't have a name for this. For now, let's call it "Home". "Home" should be able to be anywhere. Maybe you want it in Program Files, or on a thumb drive, or whatever. Also, you should be able to delete, or replace this folder (esp as an upgrade) without losing your settings or your decrypted books.

2) "Libation Files" holds your settings files, logs, config, database, search engine files, log in tokens, cached cover art. It's all the stuff that makes it your program. You should be able to put this wherever you want also. Windows usually opaquely puts things like this in 'Users' but I don't like that (although I guess that would be a reasonable default). "Libation Files" holds all settings except 1 -- Libation needs to know where to find "Libation Files" itself. This is my so-called 'advanced setting'.

3) "Books location" is [A] where books are downloaded into and [B] where Libation looks in order to determine if a book was liberated. (This last part will eventually go away.) This is expected to get huge and not necessarily reside in the same location as program files ("Home") or personal config ("Libation Files").

"No questions setup" : fresh install. Start with a blank database. Accept all defaults for basic and advanced settings. Lacking information, all folders are just somewhere inside "Home". Setup complete.

"Advanced setup" means either:

1) Libation HAS been set up before. By pointing to your previous valid "Libation Files", all other setup is complete and you're 100% back up and running again. Setup complete. 2) Libation has NOT been set up. You want to choose the folder which will be used for "Libation Files". Then you choose basic settings.

"Basic setup": you accept the default for the advanced setting thus "Libation Files" will reside inside "Home". Choose basic settings.

Choosing basic settings: select your "Books location" folder. (Also some other default-ed settings which new users will rarely care about changing.) After this is saved, Libation will set up a new "Libation Files" folder per location in the 'advanced setting'. Setup complete.

wtanksleyjr commented 3 years ago

This sounds great. I'd suggest that installing an upgrade should be broken apart from "advanced", since more people will want to upgrade losslessly than will want to do an actual "advanced install" (the latter could install two copies of Libation, or overwrite an existing one; most users won't really want that, I'd expect). So I think three choices when running the installer: first-time install using defaults, upgrade an existing install, and "advanced install."

An upgrade, then, will start by asking you where the install is, probably after looking in the default location (and telling you whether there's something there to upgrade). It'll validate the install's claims about locations and so on. (What to do if they're not valid? Not sure.) It should be pretty much the same to upgrade a default install vs. an advanced one.

-Wm

On Tue, Jul 13, 2021 at 11:38 AM rmcrackan @.***> wrote:

I want to keep the following structure. As you point out however, I need to drastically simplify/clarify user options.

Important folders:

1.

the directory containing Libation.exe. I don't have a name for this. For now, let's call it "Home". "Home" should be able to be anywhere. Maybe you want it in Program Files, or on a thumb drive, or whatever. Also, you should be able to delete, or replace this folder (esp as an upgrade) without losing your settings or your decrypted books. 2.

"Libation Files" holds your settings files, logs, config, database, search engine files, log in tokens, cached cover art. It's all the stuff that makes it your program. You should be able to put this wherever you want also. Windows usually opaquely puts things like this in 'Users' but I don't like that (although I guess that would be a reasonable default). "Libation Files" holds all settings except 1 -- Libation needs to know where to find "Libation Files" itself. This is my so-called 'advanced setting'. 3.

"Books location" is [A] where books are downloaded into and [B] where Libation looks in order to determine if a book was liberated. (This last part will eventually go away.) This is expected to get huge and not necessarily reside in the same location as program files ("Home") or personal config ("Libation Files").

"No questions setup" : fresh install. Start with a blank database. Accept all defaults for basic and advanced settings. Lacking information, all folders are just somewhere inside "Home". Setup complete.

"Advanced setup" means either:

  1. Libation HAS been set up before. By pointing to your previous valid "Libation Files", all other setup is complete and you're 100% back up and running again. Setup complete.
  2. Libation has NOT been set up. You want to choose the folder which will be used for "Libation Files". Then you choose basic settings.

"Basic setup": you accept the default for the advanced setting thus "Libation Files" will reside inside "Home". Choose basic settings.

Choosing basic settings: select your "Books location" folder. (Also some other default-ed settings which new users will rarely care about changing.) After this is saved, Libation will set up a new "Libation Files" folder per location in the 'advanced setting'. Setup complete.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/rmcrackan/Libation/issues/36#issuecomment-879313010, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJ7H6JFEUKSNFZ6UCQCNDTTXSB2LANCNFSM47XIS4WA .

rmcrackan commented 3 years ago

What about this?

I think the 1st prelim is that the defaults need to be in \Users\{user}\Libation; not inside a nested directory.

The 2nd prelim is that there are currently 2 settings dialogs (basic and advanced) and a 3rd is also needed: 'omni display' which shows both basic and advanced. I'd previously avoided this because using this anywhere other than setup opens up a world of edge-case pain so it was less effort to create only displays which could be used both for setup and post-setup config

Workflow:

If config is properly initialized: start program

Else: start setup. In the background, init "Books location" = \Users\{user}\Libation and "LibationFiles" = \Users\{user}\Libation\Settings

If settings are found in default location: "it looks like you have previously installed Libation. Use these settings?" Show paths for books and libation files [yes] [no]

if yes: accept defaults. start program

If settings not found in default location or if 'no' was clicked: show dialog with the following buttons (feels like a lot of choices, but new users will actually get to this step without seeing anything before now):

> [New user]
> > 'omni display' with defaults populated. [Begin]
> [Returning user] "I have previously installed Libation. This is an upgrade or re-install"
> > show the (previously named) advanced dialog to point to "LibationFiles"
> > > if contains valid settings: start program
> > > if invalid: show basic settings dialog

wtanksleyjr commented 3 years ago

Two ideas: first, please don't default the "Books" folder in a way that results in me accidentally grabbing my Settings folder thinking it's a book. Ideally nothing should be in "Books" except books.

Second: you didn't mention this, but if the Settings folder is in the default location, you should be able to read from it where the Books folder is (right?).

So perhaps the defaults could be

Users/$USER/Libation/Settings Users/$USER/Libation/Books

Also: it's probably always going to be annoying to move the settings folder, but it shouldn't need to be moved much (it's small). But the Books folder could easily need to be moved, for example onto a new drive, so it should be easy to make the choice to move it.

-Wm

On Tue, Jul 13, 2021 at 7:39 PM rmcrackan @.***> wrote:

What about this?

I think the 1st prelim is that the defaults need to be in \Users{user}\Libation; not inside a nested directory.

The 2nd prelim is that there are currently 2 settings dialogs (basic and advanced) and a 3rd is also needed: 'omni display' which shows both basic and advanced. I'd previously avoided this because using this anywhere other than setup opens up a world of edge-case pain so it was less effort to create only displays which could be used both for setup and post-setup config

Workflow:

If config is properly initialized: start program

Else: start setup. In the background, init "Books location" = \Users{user}\Libation and "LibationFiles" = \Users{user}\Libation\Settings

If settings are found in default location: "it looks like you have previously installed Libation. Use these settings?" Show paths for books and libation files [yes] [no]

if yes: accept defaults. start program

If settings not found in default location or if 'no' was clicked: show dialog with the following buttons (feels like a lot of choices, but new users will actually get to this step without seeing anything before now):

[New user]

'omni display' with defaults populated. [Begin] [Returning user] "I have previously installed Libation. This is an upgrade or re-install" show the (previously named) advanced dialog to point to "LibationFiles"

if contains valid settings: start program if invalid: show basic settings dialog

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/rmcrackan/Libation/issues/36#issuecomment-879540232, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJ7H6P5CX3L6ICLDZKXMPLTXT2FNANCNFSM47XIS4WA .

rmcrackan commented 3 years ago

nothing should be in "Books" except books

Good call. I like your new defaults.

if the Settings folder is in the default location, you should be able to read from it where the Books folder is

Yup. That's accounted for in all workflows above. I just didn't call it out explicitly.

Moving the books folder after installation is easy. Just open basic settings and point to a new folder. I could also add a dialog reminding the user to move existing books themselves or include a button to move all files/folders recursively to the new location.

Moving the location of the settings folder is a tricky. This is the stuff that Libation is actively using so you can't just move it. You can copy it, change the pointer to LibationFiles and force a restart, but that leaves the old files in place which feels icky.

The real fix would be pretty complex for such a rarely needed feature:
user changes LibationFiles location
LibationFiles_old = LibationFiles
LibationFiles = new dir from user
force restart
new startup step:
if LibationFiles_old setting doesn't exists or is null => start program
if LibationFiles_old setting is not a valid dir
* restore setting LibationFiles = LibationFiles_old
* remove/nullify LibationFiles_old setting
* notify user
* start program
recursively copy all files/folders from LibationFiles_old => LibationFiles
* if success, delete old files/folder, including LibationFiles_old dir itself
* if errors
* * delete new files/folders
* * restore setting LibationFiles = LibationFiles_old
* * notify user
remove/nullify LibationFiles_old setting
start program

wtanksleyjr commented 3 years ago

I agree with all points. It's almost tempting to just not support moving the settings folder. At least for now it feels like the right choice (I mean, by all means have the "Advanced Options" ability to change it, but the actual automatic workflow is going to take some work).

-Wm

On Wed, Jul 14, 2021 at 8:47 AM rmcrackan @.***> wrote:

nothing should be in "Books" except books

Good call. I like your new defaults.

if the Settings folder is in the default location, you should be able to read from it where the Books folder is

Yup. That's accounted for in all workflows above. I just didn't call it out explicitly.

Moving the books folder after installation is easy. Just open basic settings and point to a new folder. I could also add a dialog reminding the user to move existing books themselves or include a button to move all files/folders recursively to the new location.

Moving the location of the settings folder is a tricky. This is the stuff that Libation is actively using so you can't just move it. You can copy it, change the pointer to LibationFiles and force a restart, but that leaves the old files in place which feels icky.

The real fix would be pretty complex for such a rarely needed feature: user changes LibationFiles location LibationFiles_old = LibationFiles LibationFiles = new dir from user force restart new startup step: if LibationFiles_old setting doesn't exists or is null => start program if LibationFiles_old setting is not a valid dir

  • restore setting LibationFiles = LibationFiles_old
  • remove/nullify LibationFiles_old setting
  • notify user
  • start program recursively copy all files/folders from LibationFiles_old => LibationFiles
  • if success, delete old files/folder, including LibationFiles_old dir itself
  • if errors
    • delete new files/folders
    • restore setting LibationFiles = LibationFiles_old
    • notify user remove/nullify LibationFiles_old setting start program

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/rmcrackan/Libation/issues/36#issuecomment-880004792, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJ7H6OAEFZRHA7GNA7IJLLTXWWPVANCNFSM47XIS4WA .

rmcrackan commented 3 years ago

5.2.0 installation workflow now matches above