8 ms·
REMI: Python REMote Interface Library
- ausjke 8y agoLooks good except that the previous release was made in 2015.7, that's a long long time
- Waterluvian 8y agoThat doesn't always mean bad things. Especially for a stable python library. But the JavaScript part could be a bit dusty. I wish it was easier to find the signal on, "is this project abandonned?" "Does it still work?"
- devxpy 8y agoI see new commits tho..
- amasad 8y agoDavide Rosa (author) is so responsive. I'm speculating but I think it was flying under the radar before we found at repl.it. We see Davide helping people on our forums and fixing bugs as they come. https://repl.it/talk/ask/Python-GUI/6924 https://repl.it/talk/ask/Python-GUI/6924
- detaro 8y agoThe last release is a few weeks old: https://pypi.org/project/remi/#history https://pypi.org/project/remi/#history Just because at some point they did GitHub releases doesn't mean they still do, especially when the installation instructions only mention other channels.
- dddomodossola 8y agov1.2.2 18 days ago https://github.com/dddomodossola/remi/releases/tag/v1.2.2 https://github.com/dddomodossola/remi/releases/tag/v1.2.2
- amasad 8y agoWe (at repl.it) discovered remi when we were looking for a native GUI alternative. Found remi and was able to write a TicTacToe game in 30 minutes, it felt natural and the app is fast enough to not notice it's remote. Take a look (source code there too): https://repl.it/talk/share/Python-GUI-Tic-Tac-Toe/6145 https://repl.it/talk/share/Python-GUI-Tic-Tac-Toe/6145 (might not take the HN load tho) The reason we started looking into it is that we have a lot of users wanting[1] to write GUI apps and although we support all the major Python web frameworks[2], users, especially novices, still find it easier to write native GUIs. And I can't blame them, after you've learned a bit of Python, learning to write web apps is a whole new ballgame (HTML and CSS are a different style of code altogether that warps people's minds at first). Here is a basic demo that renders a plot (using matplotlib) if you want to fork and play around with it: https://repl.it/@amasad/remi-repl-demo https://repl.it/@amasad/remi-repl-demo [1]: https://repl.it/talk/ask/does-tkinter-work/6685 https://repl.it/talk/ask/does-tkinter-work/6685 [2]: https://repl.it/languages/django https://repl.it/languages/django
- F00Fbug 8y agoHey -- Just want to give a shout-out and big thanks to the folks at repl.it!!! I love it! I'm teaching college kids who have never written code and repl.it is my platform of choice for quick examples while in the middle of a lecture. At the end, I just save it, and the kids can come revisit the in-class examples whenever they want. It's a great teaching tool! Thanks!!!
- dddomodossola 8y agoyeah, I also love repl.it it's surprisingly easy to use, and really powerful
- dddomodossola 8y agoHello everyone, I'm the creator. I can reply your questions, if you want. last release was this month.
- analog31 8y agoJust wanted to say thanks!
- dddomodossola 8y agoyou are welcome :D
- snthpy 8y agoHow does this compare to Dash by plotly and also Jupyter Dashboards? At first glance the use cases seem different (applications vs dashboards) but they both provide widgets and GUI elements. Are there things that would be much simpler/quicker in one vs the other?
- dddomodossola 8y agocorrect, they seems different but you can achieve "same results" with both. dash is really powerful for look n feel and for plots. but I see it a bit confusional for callbacks and object oriented development. I never used it, so maybe I'm not the right person to ask for a comparison.
- snthpy 8y agoThanks
- Labo333 8y agoHi, is it possible to interact with js libraries? Like leaflet to integrate maps.
- dddomodossola 8y ago
- dddomodossola 8y agoIt contains also a Graphical Editor https://github.com/dddomodossola/remi/tree/master/editor https://github.com/dddomodossola/remi/tree/master/editor that produces directly python code. no transition metalanguages.
- LaPollaNegra 8y agoLOL @ using Python for anything serious. What’s next, Haskell?
- mic159 8y agoDoes it have any protection from malicious js on another site (say a bad ad on a news site) connecting to your application? I have seen some applications like this, but they fail to check the origin header.
- dddomodossola 8y agoNo protection, it have to be intended as a full featured, standalone and remotable gui framework
- swinglock 8y agoI don't quite understand your answer. As the readme says: > Remi should be intended as a standard desktop gui framework. The library itself doesn't implement security strategies, and so it is advised to not expose its access to unsafe public networks. So if listening on localhost to provide a GUI on the users desktop, is it not meant to be protected from attacks from the web?
- dddomodossola 8y agoyou are right, it requires further explanation. it is intended to be used on localhost and also on the web, preferably on safe networks like VPN. it implements ssl encription and a basic http authentication. technically it should be safe, the connected client can access only the exposed functions. furthermore each instance exposes methods identified by dynamic object instance id, and unless the developer defines a fixed identifier for a specific method, it should this dynamical definition makes really difficult to programmatically access specific functions. I consider it unsafe because I never spent enough time to test the framework penetration resistance.
- swinglock 8y agoThat's scary. Listening on localhost or serving a LAN/VPN behind a firewall does not make your web app secure from attackers on the Internet unless you air gapped. HTTP Basic Auth and HTTPS doesn't change that. Please do read up on CSRF. This has been an issue for decades and just recently been in the news due to massive attacks against home routers (web apps listening on the LAN) and desktop apps (both web apps and web APIs listening on localhost). I get the impression that this has not been considered. https://en.wikipedia.org/wiki/Cross-site_request_forgery https://en.wikipedia.org/wiki/Cross-site_request_forgery
- F00Fbug 8y agoDoes this support HTTPS? I'm building an app using Bottle as the framework and getting HTTPS to work properly (with a proper certificate) has been a nightmare. I think I fixed it after a full day of research and tinkering yesterday. This app is super small... maybe 5 users simultaneously, so I don't need the overkill of Django or integrating with something on Apache or Nginx. REMI looks pretty straightforward and lightweight; even without HTTPS it looks useful... I'll give it a whirl and keep it in my bag of tricks!
- amasad 8y agoYeah. Here is a remi app on https https://tictactoe--amasad.repl.co https://tictactoe--amasad.repl.co
- deleted 8y ago[deleted]
- dddomodossola 8y agoyes, https is supported. you have to config 3 parameters in the "start" function call: certfile: ssl certificale filename keyfile: ssl key file ssl_version: authentication version (i.e. ssl.PROTOCOL_TLSv1_2). If None, disables ssl encription
- F00Fbug 8y agoAwesome! That's great news! I may try to rewrite some parts of my app and see if REMI is a good fit. Bottle is great if you have a simple use case... but getting HTTPS going was horrible. I can't count how many back-end engines I tried (cherrypi, paste, cheroot, gevent, waitress, etc.). Finally got it working on gunicorn. I'd love to find a framework that abstracts all this away so I don't have to think about it...
- dddomodossola 8y agoI hope you will feel ok with remi. ;-)
- antman 8y agoI have worked with it and it's great. Any thoughts on using an established css framework (i.e. bootstrap)? Because manually sizing all controls for different monitors and complicated layouts are cumbersome.
- dddomodossola 8y agothere are some additional container widgets than in the past that allows auto sizing and positioning. these are VBox HBox (for flex layouting) and GridBox. however someone successfully integrated bootstrap in his application using remi. personally I see it an unuseful complication. thaks to its lightweight infrastructure, a remi page occupy only few kilobytes.
- dracodoc 8y agoI'm not sure if author know about Shiny, it's basically same concept, write html GUI in R, serve with a web server. Shiny is quite mature, and I feel they have some good parts that can be inspring: It's good to only code GUI in one language, but it's kind of unavoidable that you still need to learn html and css (even javascript) if you want to more control and customization. - Shiny have some html tag functions to make it really flexible to construct html. - You can customize css by adding your own. - Shiny support adminLTE dashboard and bootstrap styles, DataTables js library, interaction with plot and DataTables.
- antome 8y agoSimilar to Shiny is Bokeh for python, which appears to be trying to replicate the Shiny experience. While you can only get so much control without resorting to JS injections, it's pretty good for [select options -> search -> visualize result] type of problems.
- dddomodossola 8y agoNever seen Shiny, I will give it a look. thank you
- snthpy 8y agoThere's also Dash by plotly
- vanous 8y agoAnyone tried to make an apk with Remi via p4a?
- dddomodossola 8y agoI used it directly on Android with termux and qpython, but never packed it into apk.