Robot / robot

Native cross-platform system automation
http://getrobot.net
zlib License
212 stars 41 forks source link

Implement some sort of debugger #10

Open dkrutsko opened 8 years ago

dkrutsko commented 8 years ago

Likely a huge project but not necessarily out of the scope of this library. Not sure what sort of features would be supported but it would be useful in a wide variety of situations.

ghost commented 8 years ago

Excuse me for interrupting but what are you really trying to achieve here? I have seen some of your issues and every single issue seems to be a separate life project. You are talking about writing an assembler, a debugger, a cross-platform GUI library with X11/Wayland/Mir support, etc. Each and every one of these things have already been written as open source and has taken many many years to perfect. I don't see how re-implementing a bunch of complex projects into one single library would be beneficial to anyone? Why are you not just linking to these open source libraries instead? Qt basically already implements pretty much everything you need in Robot as cross-platform open source. Refusing open source projects based on ones view of dependencies is really not that great of a plan IMO.

dkrutsko commented 8 years ago

Hi, your concerns are totally understandable, and most of those issues are just research ideas, not something necessarily to be implemented. One thing to keep in mind is that Robot was originally designed to be used in video game bots. As such, a lot of the functionality was created specifically to solve the challenges of that field.

I'll give you an example, a lot of bots like to overlay transparent windows over games and draw on them. Usually some text, lines, shapes, and so on. Using a huge library like Qt isn't exactly an ideal solution, not only because of the licensing issues but because only a tiny portion of its functionality would be used.

If that's the case, then whats the alternative? Implementing a UI framework from scratch? No that would be a huge undertaking, and completely unnecessary. No, what I had in mind was something much simpler. For the example above, there could be two functions: one for creating a window with some flags to make it transparent and another to draw an image on it. Now the user is free to use whatever library they want to render the image.

Solutions like that are easy to implement are are completely within the scope of the project. Furthermore, it solves the X11 Clipboard compatibility problem (#3). So don't worry, I'm not going to go crazy and reinvent the wheel. But I'm also not going to create unnecessary dependencies to solve easy problems. Robot exists to solve a unique problem, therefore it deserves to be it's own unique entity.