Skip to content

Feature request: Dropbox installation for scripts (or similar) #158

Open
@Nick-Mazuk

Description

@Nick-Mazuk

Find an easy way to auto-update scripts for users

Background

RGP Lua has a very nice feature of being able to import entire folders instead of individual scripts. This is very nice for developers using this repo since we automatically get script updates, bug fixes, and new scripts by simply git pull and restarting Finale (we probably all do this quite often). So for us, we basically get updates and new scripts without any extra work.

However, the typical user just downloads individual the scripts from the website. They don't get automatic updates. They don't automatically get new scripts. This issue gets compounded because if there's an update in one of the library functions, users would have to individually download every affected script—and they have no way of knowing which scripts have been affected!

For some this is fine because it offers consistency—script behavior will never change. However, others may want a system of automatic updates similarly to what we experience as developers.

Proposed solution

For this, I propose we find some way of mirroring the /src folder of this repo with some sort of cloud sharing tool like Dropbox. Users place the Dropbox folder anywhere on their computer, hook it up to RGP Lua, then get all future updates and scripts automatically.

Best of all, any updates to library functions will also automatic all affected scripts!

I'm going to use DropBox as the example service here, but I'm fine using another service (or something else altogether!)

Prior art

I used to maintain a Dropbox folder with my scripts which got several hundred users. But since it was difficult to maintain (for instance, I had to manually update move the updated scripts to the new folder as to not accidentally share my personal scripts) and users did not JW Lua did not automatically recognize new scripts, I have since stopped maintaining it. But if we can get this working automatically via code, it will be transparently updated from a developer point of view (kind of like how bundling for the website is transparently done some developers probably don't even realize it's happening).

Impact

To see if users would actually use this, I created a post on Facebook to get everyone's thoughts. Feedback is TBD and I'll update this comment when more people have had time to interact with the Facebook post.

https://www.facebook.com/groups/742277119576336/permalink/1395721707565204/

Caveats

Some people may not want this because in theory a bug in one of the core libraries (e.g., the config.get_parameters function) could break most of the scripts. And since Finale restarts aren't necessary for scripts to be updated, a user's workflow could be work perfectly one minute, and the very next be riddled with error messages. I personally think the benefits outweigh the risks, and if users are very concerned they can continue downloading the scripts the current way.

The other thing to iron out is how to not propagate config files, but that should be straightforward if the shared folder is readonly.

Conclusion

If we get this right, I think it has a ton of benefits:

  • Better script discovery (new scripts appear in Finale automatically)
  • Easier updates for everyone
  • Easier to join the Lua ecosystem (just tell people to download the Dropbox folder, not 4 dozen individual scripts)
  • Increased satisfaction for Lua users (for instance, if Finale adds a new feature like SMuFL did, the scripts could be updated for them automatically)

And assuming we can hook things up so the Dropbox (or other service) is updated automatically, all risks are mitigated since this is opt-in and our code review is pretty good.

@rpatters1 @jwink75 @CJGarciaMusic thoughts?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions