Open lezsakdomi opened 6 years ago
I've seen around at nodejs, and recognized that there are required libraries available on NPM currently (node-x11, desktop-screenshot, merge-images and probably much more). So the remaining question is, what matters: Maintainability or simplicity?
Sorry again for the delay.
I think it would be a good idea to write it in C++. Advantages:
make
ingAll in all, I think simplicity matters a little bit more than maintainability, but with the gradual switch to the Wayland compositor, maintainability could become more important later. I think that writing it in c++ would actually be simpler than writing it in NodeJS — not because it's easier to write the code, but because it's easier to get it working for the vast majority of users.
Is performance a bottleneck? 1) Yes - then go for C++. Harder to develop, but produced binary runs faster than anything else. 2) No - go for some easy to develop and maintain language, like Python3
Just my humble opinion, of course do whatever you consider appropriate :-)
Thanks for all your efforts, Martin
Yeah, probably I've been too lazy when recommended Node. Python seems a more reasonable alternative.
In this project, performance is not a bottleneck. But maybe could be in the future (GUI for editing, remote capture or other nice features). But in this project it looks like maybe it is easier to develop in C++. We should have a lot of system library bindings, advanced memory management and other hacky things.
For me, the decision is clear, that it should be C++, and I am very near to start coding. But this issue should be complete because will be historic.
Please note, that this could be still an open question.
Hello was looking around for some software. I could not find what I was looking for, but I found your XSR github page. I noticed your work is similar to what I was looking for, and you seem like a talented programmer. Perhaps you could refer me to what I am looking for or you like my 'Software Design Document' so much you just decide to build it yourself, which would be great or send the SDD to somebody who wants it. What I am looking for is described in the SDD below. I would be happy to beta test it for you.
Action Paths: A much better Step Recorder Is basically a Keylogger that is Not For Spying, but for educational purposes. It marks the next action for the student To follow with a bright easy to see translucent graphical marker, wherever that action may be located on the screen.
These action paths are created by teachers. The teacher just accomplishes the task while the program logs what they are doing, then teacher edits out junk actions they made, adds relevant materials between actions, and can upload the new Action path when they are happy with their work. They need to be able to build a new path at any point along the main path. They can use this technique to keep their action paths up to date. The Action Path won't work if the teacher removes actions necessary to complete the task.
AP Would need to Allows teacher to insert text, hyperlinks, picture, videos, quiz's and links to other Action Paths in between actions. Inserting this information wherever it makes sense to ensures student are gaining context and learning to think about what they are doing, rather than only imitating actions they don't really understand (for example entering math formulas), and is also needed to ensure they have any information they may need along the Path.
AP should be able to Check the Action Path to alert student or teacher if the path doesn't work (because the program can't get to the next action), this allows students to quickly alert teachers to problems in their work, and allows teachers to quickly identify these problems and fix them, if possible(or make a new separate path file). This system ensures learning materials are never going out of date because its so easy to check if your AP's are working or not.
Teachers should be able to Append multiple paths to a chain, student simply chooses what path they want to follow, can go back later and try the other paths. The teacher simply inserts a 'fork' in front of the action preceding the option to go another way.
Action Paths should work with virtually all software, so that paths can be created between different software packages (between Photoshop and Maya for example or between various Office products or CAD packages or development environments(API's IDE's). I think software companies would pick up on the value of this and support it as needed.
Action Paths would need Skip ahead and go back functionality as much as possible, and the ability to skip to significant 'markers' in a similar way that someone would skip around in a book to find specific information(so it needs that level of formatting ability for teachers so students can quickly find what they are looking for(table of contents, glossary, index(because nomenclature is so important). Obviously not everybody using the Action Path needs all the steps, they are just looking for a specific spot where they have got lost.
Students and teachers should be able to store Action Paths in its own database for reference, and be able to access Action Paths online that they can load into their database to learn how to do all sorts of thing
Obviously the ability to search ones database for Action Paths is needed as well as the ability to use the search technology in the AP file itself to search for specific places along the path.
When somebody realizes they are constantly traveling the same path, Action Paths should be able to be used to quickly condense that chain into a single click (where that makes sense, at the users discretion). Creating a new button or small interface as relevant.
Action Paths should be able to be used as a bug reporter. The Action Path file could be submitted to a software company, ensuring software companies are always receiving valuable feedback from their customers.
Operating a computer is just a series of Actions. Action Paths would be extremely useful for any software companies trying teach new customers how to use their software to win new customers. I really can't figure out why this hasn't been done already, but I can't find anything like what I am describing.
Its well known that people typically hate constantly having to learn new paths so much they would rather pay for something they understand than get a similar free version that requires them to learn new paths. Action Paths couldn't be ignored by big companies and would make it much much easier for small competitors to win new customers, because customers don't have to read hundreds and thousands of pages of manuals, they can just follow the trail to complete relevant tasks.
Action Paths would be extremely useful for anybody who wants to gain 'Know How'
Action Paths would be extremely useful for any software engineer, because it allows the people who use their software to send them literal feedback of the problem. I honestly cannot figure out why this has not been done already.
Action Paths overcomes most of the technical barrier that makes it very hard for smaller software companies to get anybody to use their software.
Action Paths obviously has quite a bit more going on in its design than Step Recorder, but the technology it requires has been around for years. A good programmer could do it. You could probably do it or maybe this is already around but i can't find it.
@emptinessnothing Whoa, what a terse description. So do you mind "replaying" the actions? Else it's theoretically programmatically impossible to check whether someone follows the path or not. Although this software is intended to be an alternative to Windows' PSR, which is an alternative to classic screen recording softwares (like bandicam, for ex.).
BTW I like your idea, but (as you said), this is not the scope of this repo. Maybe could be extended in a fork, or as a module or something. Will keep in mind during development.
It looks like everybody could agree with the choice of C++
.
I'll use the CMake
build system, because it looks like that is the most widely supported for C++ development (though I personally hate it)
Great! Really glad you like the pitch. It is outside my current level of skill to even attempt designing such a thing. Probably be awhile, unfortunately, but like a said, will be happy to beta test it.
Planning in progress.
Here I attach a data flow visualization sketch:
* Sorry for the quality
It's just my own though. Comments are welcome.
I think, UI, the recorder engine, "memory storage" engine and the save method should have an ABC and be replaceable. Of course the save function uses an external FS module (support any kind of filesystem, hack it to a webserver or something)
The biggest question is, how to select between GUI and CLI. Which class should be responsible for this?
Reasons:
xinput --test-xi2
is not acceptable long termA few recommendations: