Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Push Versions to External Device? #200

Open
sofia-bg opened this issue Jun 20, 2023 · 11 comments
Open

Push Versions to External Device? #200

sofia-bg opened this issue Jun 20, 2023 · 11 comments
Assignees

Comments

@sofia-bg
Copy link
Member

Just thinking through best approaches to field testing and managing making tweaks either in-person or remotely to designs. Is there a way to have a design "synched" between my computer and another? So that if I make changes to the designer side it syncs them to the other device? Or is the only solution to be going onto their device and making the changes OR sending them new files to import?

@gbishop
Copy link
Member

gbishop commented Jun 20, 2023

Excellent question. I have been waiting for some user interest before pursuing a solution because I don't understand your needs.

We currently have the "fetch" hack we use for the demos. The URL looks like:

https://unc-project-open-aac.github.io/OS-DPI/?fetch=examples/updated/grid_ex_1.osdpi

As currently implemented it imports the design and starts it with the editor open. We could easily support variants; for example. If you click the link above several times you will get multiple copies of the design with different names.

  • view = import and open in user mode (not editing).
  • update = import, replacing any existing version and open in user mode.
  • edit = import and open in editing mode.

This would require you to push your updates to Github where they would be publically available. Maybe a privacy issue?

The path (examples/updated/grid_ex_1.osdpi above) could be an arbitrary URL but the receiving site has to cooperate by providing the appropriate CORS headers. We (or anyone skilled in the art) could have a private site and all the above could still work.

So, with a remote user you might email them a URL and they (or some helper) click the URL to open the new or updated design.

What do you need?

@gbishop gbishop self-assigned this Jun 20, 2023
@sofia-bg
Copy link
Member Author

This conversation probably warrants a call what do you think @lageist? With the current field testing in person my plan is to export the .osdpi files I want to start with to a flash drive and upload to the user's device. Luckily the device can open a browser. I'll bring a keyboard and a mouse so that after we try the initial layout I made we can make tweaks while we are there and I can export as we go and back up iterations to the flash drive.

But as I think about some of the designs it would be nice to try with people remotely being able to push a link would be helpful. Obviously with remote participants we can show one layout, get feedback, end the meeting and then make changes and schedule a new meeting.

For UI field testing my preference would be sending a link with the "view" - I am not entirely following the "update" would that work in that I would send that link and any edits I make on my end and post to GitHub would automatically update theirs without sending a new url?

As far as privacy I'll defer to @lageist about what should and should not be posted at this time.

@gbishop
Copy link
Member

gbishop commented Jun 20, 2023

Yes, a USB drive is a fine way to work.

There are ways to communicate between browsers. With some additional work one could imagine pushing design changes directly from your computer to their computer in seconds.

@sofia-bg
Copy link
Member Author

Pushing directly would be ideal, for now USB and tweaking things on the AAC user's device will work for the next few weeks. But I can imagine having my computer open to be fiddling while a user is exploring and then pushing new versions could be really useful.

@aetkie
Copy link

aetkie commented Jun 22, 2023

Jumping in here. Being able to make changes to the design in real-time when doing field testing could be very useful. This is how we manage device use in the clinical world. We're able to edit pages, layouts, dwell times, etc as needed. I'd be interested to see how this could work.

@sofia-bg
Copy link
Member Author

sofia-bg commented Jun 22, 2023

It sounds like we could with the solution to post to the github and use the update extension Gary is suggesting (that I suppose he still needs to make a capability for us). Then to make updates in real time we could make changes on our computer and re-post to GitHub, presumably with the same extension? So we would want to make sure to same all iterations locally or in OneDrive because we would need to keep updating same link in GitHub? Is that right @gbishop?

But agree @aetkie that this would ultimately be the most useful for in-person and remote.

@gbishop
Copy link
Member

gbishop commented Jun 22, 2023

I think this is entirely doable using the socket component I just added.
Maybe it works like this.

  • Both you and your subject are running the same design on different computers.
  • Both instances are connected to the same remote server through the Socket component.
  • The Socket component might include a button in the designer interface to send the entire design to the server which then turns around and broadcasts it to all other instances. (This part is a hack but the best I can think of right now).
  • The subject computer receives the message and updates its design.

The remote server is a trivial Python script, maybe 50 lines of code. It doesn't know anything about what is happening, it is just receiving messages and forwarding them to other connections.

Most of the rest of it is already in place. The modifications to OS-DPI would (I think) be simple.

This same sort of facility could be used to keep the state of two instances in sync. Sort of a remote control. You browser would update as the subject interacted with their browser and you could modify theirs. If that's what you wanted.

@sofia-bg
Copy link
Member Author

I tried copying what you did to make the example 1 link above work, but it would not work for me. When I copied the URL I either get a privacy warning or a blank browser screen.

Here is where the file is saved in github: https://github.com/UNC-Project-Open-AAC/OS-DPI/blob/main/Testing/halves_v2_6_26_23.osdpi

These are the URLs I tried to write:
https://unc-project-open-aac.github.io/OS-DPI/?fetch=Testing/halves_v2_6_26_23.osdpi

https://unc-project-open-aac.github.io/OS-DPI/?update=Testing/halves_v2_6_26_23.osdpi
^now this is taking me to a new OS-DPI file and adds the extension #new to end of URL

What am I doing wrong/what steps am I missing?

@gbishop
Copy link
Member

gbishop commented Jun 27, 2023 via email

@sofia-bg
Copy link
Member Author

Oh so I put in the wrong repository? Having trouble following what the steps are to make this work.

@gbishop
Copy link
Member

gbishop commented Jun 27, 2023 via email

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

No branches or pull requests

3 participants