6 ms·
Thrust: Chromium-based cross-platform, cross-language application framework
- spolu 12y agoQuick note on comparison with node-webkit / atom-shell: node-webkit and atom-shell embeds NodeJS along the chromium content module forcing its user to use not only NodeJS but a particular build of it. On the contrary, Thrust embeds the Chromium content module and exposes an API on the standard IO, which makes it bindable in any language and works perfectly well as a dependency with vanilla nodeJS / Go / Python Makes the distribution of cross-platform GUI apps through the pip/npm possible.
- mhernandez1988 12y agoCorrect, there have also been other similar implementations along the same vain, but they all attempt to inject one technology into another. Thrust takes a different approach, it is itself the chromium content library, with some added libraries, and an rpc interface. This allows it to be used without forcing another library implementor to `inject` their code into it.
- notastartup 12y agoThis would be absolutely phenomenal if you could have the entire pip ecosystem and write cross platform desktop apps in python.
- spolu 12y agopip or npm yes!
- mhernandez1988 12y agoAs well as go get -u {urltopackage} go install
- toqueteos 12y agoDoesn't go get already do go install?
- mhernandez1988 12y agoYes. In some cases ive experienced both. Sometimes it installed sometimes it did not.
- ocfx 12y agolike this http://kivy.org/ http://kivy.org/ ?
- WorldWideWayne 12y agoSounds great. Just one question about the Windows screenshot - why are the fonts so jagged?
- spolu 12y agoScreenshot from a remote server running on AWS. I guess the settings are screwed up on that machine!
- c0brac0bra 12y agoNot sure if it's the same issue, but I ran into problems with node-webkit and jagged font-icon animations due to them not being able to package direct3d dlls with the project. Simply popping them in on my own solved it.
- morganrallen 12y agoAs a proof of concept I knocked up JankyBrowser in about 3 hours. Nagivation? Check. Tabs? Check (how long did other browser take to get those!). All in a little over 6K of JS. https://gist.github.com/morganrallen/f07f59802884bcdcad4a https://gist.github.com/morganrallen/f07f59802884bcdcad4a
- spolu 12y agoThe only browser that fits in a gist!
- notastartup 12y agoMy god. I'm just awestruck, I just ran it and it worked beautifully. The same thing in Java Swing took me 3 weeks 4 years ago.
- morganrallen 12y agoThanks! Not too bad for a couple hours on a sick day.
- christiangenco 12y ago...wow! This is a really compelling I know it's really fashionable to hate on javascript, but there's really something to be said for being able to code a web browser with tools you can learn on Khan Academy.
- hardwaresofton 12y agoThis is really awesome. Reminds me of http://www.tidesdk.org http://www.tidesdk.org Honestly, I'm super prepared for the world where HTML/CSS is used for all the GUIs (while HTML/CSS are not perfect, I think they've done a pretty good job being flexible enough style to millions of user-facing GUI applications, also known as web sites, for so long). I don't think many people agree, but the day I don't have to try and choose between TK, GTK, QT, and some other smaller framework is gonna be a good day. Not quite the same (since this runs on chromium, and I'm not sure that TideSDK does also -- at least it's been around too long that it feels like they couldn't possibly have).
- jmnicolas 12y agoThis is not a popular view, but I think as developers we should focus on one platform and serve it well, instead of making nearly tolerable apps for every platforms.
- hardwaresofton 12y agoSome days I agree with you -- optimization/platform-specific code definitely has it's place (we would be nowhere without it, all the web stuff stands on shoulders of giants on other giants), and targeted building. But other days I'm struggling to use objective-c.
- joshguthrie 12y agoI'm supplying a node-webkit app to thousand of clients and I feel you. We thought "Hey, it runs on everything!" would be nice for our future roadmap...but didn't we say the same about Java?
- mcdermed 12y agoAs a web developer this is a very cool project. It's a very simple sandbox to develop a custom application or even customize my browsing experience. Being built on the current stable release of Chrome makes it even better.
- notastartup 12y agoSo my question is what's your rationale for using Thrust vs. Node-webkit?
- spolu 12y agoDistribution through npm directly. X-language also. Make sense?
- spolu 12y agoAdditionaly it's much easier to use native modules! No recompile needed
- joshguthrie 12y agoI'm curious about this. How are native modules compiled if I want to deploy from my architecture X to windows, os x and linux?
- spolu 12y agoWell it's handled by Node directly right?
- mhernandez1988 12y agoNode-Webkit is hacky at best. Atom-Shell is a major improvement on Node-Webkit, however not quite there. Native modules need to be compiled for a completely different target. Thrust takes it a step further, improving on the past. Thrust uses the same backing library as Atom-Shell (brightray) to expose the Chromium Content Library. Thrust is cross-platform cross-language. Use a similar familiar api from any language you want, or roll your own. No need to use javascript on the backend if you dont want to. For example, Go-Thrust can compile, this is a particular advantage for distributing applications.
- mhernandez1988 12y agoNow to add some more context, Thrust's predecessor (ExoBrowser) still used embedded NodeJS, this made it incredibly difficult to package native modules with applications. The Thrust team learned from the mistakes of the past and decided to try to simplify the stack as much as possible to allow true composability.
- xtacy 12y agoI get this error when building it. Any thoughts? $ go get -u github.com/miketheprogrammer/go-thrust package github.com/miketheprogrammer/go-thrust imports github.com/miketheprogrammer/go-thrust imports github.com/miketheprogrammer/go-thrust: no buildable Go source files in /Users/user/.gocode/src/github.com/miketheprogrammer/go-thrust
- lstamour 12y agoThere appear to be different instructions you can try at https://github.com/miketheprogrammer/go-thrust/ https://github.com/miketheprogrammer/go-thrust/
- swah 12y agoGot the same on Win7.
- mhernandez1988 12y agoApologies to all, we are restructuring the application to work better with go get. You can try with the -d flag to avoid building files. this should download the application to the proper gopath. then you can use the instructions from the go-thrust repo homepage.
- JasonFruit 12y agoI think this is the first time I've seen the phrase, "requires Python 3." It's certainly the first time I've seen it on something that I want badly enough to mess with it.
- jpgvm 12y agoTo be fair the Python bindings are pretty simple, you could easily implement it in Python 2. You do need evented I/O however so you could write either gevent or twisted bindings.
- spolu 12y agoYes exactly. I started coding in Python 2 days ago so I went with what I found (asyncio) but it could be easily recoded in Python2!
- hugh4life 12y agoI was happy they had "requires Python 3" because cefpython keeps going back and forth on Python 3 support.
- albertzeyer 12y agoNode that there is also the same-called project: http://thrust.github.io/ http://thrust.github.io/
- venti 12y agoThis is great! Installed it via PIP and it just worked. I would love to see this combined with https://github.com/enthought/jigna https://github.com/enthought/jigna / https://www.youtube.com/watch?v=KHSXq5jfv_4 https://www.youtube.com/watch?v=KHSXq5jfv_4 .
- roxtar 12y agoCan someone tell me use-case wise how this differs from PhantomJS and CEF?
- morganrallen 12y agoUnlike PhantomJS, this is not a headless browser (though can be!), its a browser that can be designed in HTML/CSS/JS. This is to say, the navigation buttons are controlled by you, your own download manager, etc. Time and imagination are your limits.
- Charlieee 12y agoYou could write a browser in assembler. Only time and imagination are your limits.
- liuyanghejerry 12y agoSeems nice, especially with variant bindings instead of only one. One more question, how to update the whole application after distributed, including HTML/CSS/JS files and the framework binaries? Do I still have to make one updater(which is not really an easy task if you want a fancy UI), or is Chromium's update framework included already?
- stereosteve 12y agoAwesome project. Breach is also very cool. What are the plans for the future of Breach?
- morganrallen 12y agoIt will get rebuilt on top of Thrust.