API for online collaboration and file sharing
-
Hi, I am using a multimedia desktop application (PC and Mac) from a small developer, and am thinking of how this application could benefit from online collaboration. What I have in mind is this: User 1 is working on a project on his/her computer. User 1 runs into a problem and invites User 2 via a menu in the software. User 2 is granted access to User 1's project and it is somehow copied to User 2's computer (peer to peer). They can then share the files, probably with some kind of version control, and perhaps using an included chat room or similar. Note that the file format doesn't matter - this should just be a way to have several people looking at and working on the same files (basically more convenient than sending them over ftp or so). There are two uses for this feature: a) to help out or improve (say, helping with filter settings that enhance an image/audio file/movie, and b) to enable online collaboration between several users, for example students running the same software (like Google Apps, but not necessarily in real-time). So, is there any software that would take care of this and serve other software with a suitable API? I am sure that the developer I have in mind could come up with something similar, but I want to have a third party solution so that this will get quicker to implement and not take any direct effort from the main software development. (A parallel cold be drawn to software used for creating license keys: most developers could come up with something similar, but it's faster to use a third party solution.) I have tried to find such solutions online, but “online collaboration” and similar searches give the wrong kind of search replies. Thanks for any suggestions! Petter
-
Hi, I am using a multimedia desktop application (PC and Mac) from a small developer, and am thinking of how this application could benefit from online collaboration. What I have in mind is this: User 1 is working on a project on his/her computer. User 1 runs into a problem and invites User 2 via a menu in the software. User 2 is granted access to User 1's project and it is somehow copied to User 2's computer (peer to peer). They can then share the files, probably with some kind of version control, and perhaps using an included chat room or similar. Note that the file format doesn't matter - this should just be a way to have several people looking at and working on the same files (basically more convenient than sending them over ftp or so). There are two uses for this feature: a) to help out or improve (say, helping with filter settings that enhance an image/audio file/movie, and b) to enable online collaboration between several users, for example students running the same software (like Google Apps, but not necessarily in real-time). So, is there any software that would take care of this and serve other software with a suitable API? I am sure that the developer I have in mind could come up with something similar, but I want to have a third party solution so that this will get quicker to implement and not take any direct effort from the main software development. (A parallel cold be drawn to software used for creating license keys: most developers could come up with something similar, but it's faster to use a third party solution.) I have tried to find such solutions online, but “online collaboration” and similar searches give the wrong kind of search replies. Thanks for any suggestions! Petter
I'm not sure that what you are describing would be a practical problem to solve, for multiple reasons. The biggest issue I see with your problem is what effect pulling the code across from user 1 to user 2 would have on the code that user 2 was working on; they would either have to copy the whole codebase to a whole new area on disk because any changes might conflict with work that user 2 was already doing, or they would have to merge in the changes into their codebase, resolve any merge issues and then start the code review process - but you're talking here about multiple users all working with the same codebase, presumably submitting back to User 1, so how would these changes be resolved, where multiple solutions have to be merged back - (1 to n isn't that hard, n to 1 would be an absolute nightmare)? There are already tools that allow you to stash work that you are working on and let others take copies. You can use GIT (for instance) to stash your work and let others take copies - which could then be worked on, reviewed and merged back in, in a controlled fashion. Unfortunately, this doesn't meet with your realtime collaboration goals but what you could do is combine GIT with something like Lync (yeah, I know, it's not the greatest collaboration tooling but it's an idea), and then have the users discuss changes online with one user making the changes while the others watched and talked things through; this would be a form of pair programming.
This space for rent
-
I'm not sure that what you are describing would be a practical problem to solve, for multiple reasons. The biggest issue I see with your problem is what effect pulling the code across from user 1 to user 2 would have on the code that user 2 was working on; they would either have to copy the whole codebase to a whole new area on disk because any changes might conflict with work that user 2 was already doing, or they would have to merge in the changes into their codebase, resolve any merge issues and then start the code review process - but you're talking here about multiple users all working with the same codebase, presumably submitting back to User 1, so how would these changes be resolved, where multiple solutions have to be merged back - (1 to n isn't that hard, n to 1 would be an absolute nightmare)? There are already tools that allow you to stash work that you are working on and let others take copies. You can use GIT (for instance) to stash your work and let others take copies - which could then be worked on, reviewed and merged back in, in a controlled fashion. Unfortunately, this doesn't meet with your realtime collaboration goals but what you could do is combine GIT with something like Lync (yeah, I know, it's not the greatest collaboration tooling but it's an idea), and then have the users discuss changes online with one user making the changes while the others watched and talked things through; this would be a form of pair programming.
This space for rent
Thanks Pete for the answer! Due to some lagging on the website, I didn't see your reply (or my question for that matter) until I had just posted an updated version of it on General questions. As I don't think I can erase a question, I'll leave it there (I'm not sure this forum was the best place for it anyway). Anyway: well, I wasn't really thinking an n:1 thingy. :) Rather something like this: I am working on a song in some music software. I could really need some help on volume levels and the like. Instead of copying the entire file plus included audio files somewhere, having someone else downloading it, and then trying to find out what the other person has done to it, it would be much easier if I could just find a list of (visible) online users within the software, send a PM to one of them and ask him/er for advice. He/she would then just click a button in the software to download my files, and then being able to make changes to them. That's the idea anyway. :) Thanks again, Petter
-
Thanks Pete for the answer! Due to some lagging on the website, I didn't see your reply (or my question for that matter) until I had just posted an updated version of it on General questions. As I don't think I can erase a question, I'll leave it there (I'm not sure this forum was the best place for it anyway). Anyway: well, I wasn't really thinking an n:1 thingy. :) Rather something like this: I am working on a song in some music software. I could really need some help on volume levels and the like. Instead of copying the entire file plus included audio files somewhere, having someone else downloading it, and then trying to find out what the other person has done to it, it would be much easier if I could just find a list of (visible) online users within the software, send a PM to one of them and ask him/er for advice. He/she would then just click a button in the software to download my files, and then being able to make changes to them. That's the idea anyway. :) Thanks again, Petter
Start with "screen sharing". If that doesn't meet your (current) needs (which I doubt), you can then start looking at more "complicated" "solutions": [TeamViewer – Remote Support, Remote Access, Service Desk, Online Collaboration and Meetings](https://www.teamviewer.com/en/) (Free for "non-commercial" use).
"(I) am amazed to see myself here rather than there ... now rather than then". ― Blaise Pascal
-
Start with "screen sharing". If that doesn't meet your (current) needs (which I doubt), you can then start looking at more "complicated" "solutions": [TeamViewer – Remote Support, Remote Access, Service Desk, Online Collaboration and Meetings](https://www.teamviewer.com/en/) (Free for "non-commercial" use).
"(I) am amazed to see myself here rather than there ... now rather than then". ― Blaise Pascal
You're right - screen sharing would make this easy. Thanks!
-
Hi, I am using a multimedia desktop application (PC and Mac) from a small developer, and am thinking of how this application could benefit from online collaboration. What I have in mind is this: User 1 is working on a project on his/her computer. User 1 runs into a problem and invites User 2 via a menu in the software. User 2 is granted access to User 1's project and it is somehow copied to User 2's computer (peer to peer). They can then share the files, probably with some kind of version control, and perhaps using an included chat room or similar. Note that the file format doesn't matter - this should just be a way to have several people looking at and working on the same files (basically more convenient than sending them over ftp or so). There are two uses for this feature: a) to help out or improve (say, helping with filter settings that enhance an image/audio file/movie, and b) to enable online collaboration between several users, for example students running the same software (like Google Apps, but not necessarily in real-time). So, is there any software that would take care of this and serve other software with a suitable API? I am sure that the developer I have in mind could come up with something similar, but I want to have a third party solution so that this will get quicker to implement and not take any direct effort from the main software development. (A parallel cold be drawn to software used for creating license keys: most developers could come up with something similar, but it's faster to use a third party solution.) I have tried to find such solutions online, but “online collaboration” and similar searches give the wrong kind of search replies. Thanks for any suggestions! Petter
petter2012 wrote:
this should just be a way to have several people looking at and working on the same files
I doubt that is workable. The situations where that specifically is used would be so rare that it isn't useful. In normal situations there are two actual peers, each with about the same experience and one needs a 'tweak' to get around some problem. In those cases just seeing the code and doing a verbal walkthough is sufficient. There are many existing solutions that allow that. The second case is where the first person is a junior and the second, the observer, is a senior. In that case although the second could write the code the complexity means they would need to test it as well. As such they might as well write it in the first place. Not to mention that the first person loses out on the learning opportunity.
petter2012 wrote:
So, is there any software that would take care of this and serve other software with a suitable API?
I would be really surprised if there are not open source collaboration tools. Since they are open source the code is available to you to do what you will.