18 ms·
No it isn't, flash was the best way to do many things for the years it was popular. Video, vector animation, simple interactivity. Electron is only the best w
by AboutTheWhisles 8y ago
No it isn't, flash was the best way to do many things for the years it was popular. Video, vector animation, simple interactivity.
Electron is only the best way to do something when someone knows only javascript and web dev but doesn't want to learn a new language. Maybe a case could be made for severe misconceptions also helping electron like 'a custom native app has to be made for each platform', even though C++ and Qt and many other combinations can be written once with 99% of the source being the same for every platform.
- reificator 8y agoI have never seen Qt be proposed without immediately being shot down for the licensing.
- emilsedgh 8y agoWhich is usually based on just misunderstanding LGPL. You "can" write a proprietary app with Qt and you wouldn't have to pay for it.
- jakelazaroff 8y agoWhy did you put "can" in quotes?
- dx87 8y agoYou have to ensure you keep your business code separate from the Qt code. It's extra work that people might not want to deal with when they are more comfortable with other options that don't require special care.
- camgunz 8y agoTo be specific, if you modify actual Qt code--which you shouldn't be doing generally--then you have to release those modifications. But if you dynamically link your app with Qt you're fine; you don't have to open source anything.
- Buttons840 8y agoYou also must provide the Qt source code yourself, giving instructions on how to get Qt from the official website is not sufficient. You also must allow relinking of your proprietary binary with different versions of Qt. This is easy on desktops but not on embedded or mobile devices. You also may not begin using a commercial license for your proprietary code which you developed using the LGPL licensed Qt, unless you have written permission. Part of this also means you cannot use, let's say, a MIT licensed wrapper or utility for Qt, because that was probably developed against the LGPL licensed Qt, and thus cannot be used with a commercially licensed Qt. There's certainly a reason people worry about Qt licensing. Source: https://www.qt.io/faq/ https://www.qt.io/faq/ (And despite all this, let's remember how great it is that one of the best widget toolkits in the world is open source.)
- camgunz 8y agoI don't mean to be harsh, but everything you wrote here is either wrong or misleading. > You also must provide the Qt source code yourself, giving instructions on how to get Qt from the official website is not sufficient. This isn't true [1]. > You also must allow relinking of your proprietary binary with different versions of Qt. This is easy on desktops but not on embedded or mobile devices. If I'm distributing a game written with SDLv1 on mobile, I don't have to do anything at all differently than if I distribute the exact same game on desktop. Many, many games did this. > You also may not begin using a commercial license for your proprietary code which you developed using the LGPL licensed Qt, unless you have written permission. Part of this also means you cannot use, let's say, a MIT licensed wrapper or utility for Qt, because that was probably developed against the LGPL licensed Qt, and thus cannot be used with a commercially licensed Qt. This is also not at all true [2], in fact they couldn't release Qt under the LGPL if it were. That would be LGPL with a non-commercial-use clause, which would be incompatible. > There's certainly a reason people worry about Qt licensing. Yeah and honestly, it's because there's a lot of bad information out there. GPL and LGPL are subject to so much FUD. We as developers have a responsibility to know the facts. [1] https://copyleft.org/guide/comprehensive-gpl-guidech10.html#x13-830009.9 https://copyleft.org/guide/comprehensive-gpl-guidech10.html#... [2] https://www.qt.io/faq/ https://www.qt.io/faq/ (section 3.7)
- seba_dos1 8y agoNo, you don't. You just need to provide a way to replace or relink Qt libraries. Unless of course you modify Qt itself, but then you only have to publish those modifications. Absolutely nothing requires you to "keep you business code separate from the Qt code".
- reificator 8y agoMisunderstanding or not, that's the reason. With most software developers and most managers not moonlighting as lawyers, misunderstandings are to be expected.
- beamatronic 8y agoIsn’t Gnome/GTK supposed to be kind of close?
- michaelmrose 8y agoI was under the impression that it was available under the lgpl and only had to open source changes to the actual library that you aren't likely to need to make not your application.
- reificator 8y agoIt doesn't matter what the actual requirements are, the issue is that it gets dismissed out of hand for the perceived requirements.
- simion314 8y agoI am wondering what is the issue with dynamically linking Qt, are developers statically linking with MS c/c++ runtime or GUI libs ? From my experience you must install c++ runtimes on windows or if you use C# you need to ask your user to make sure to have it installed, where with Qt you ship the dlls.
- dwaite 8y agoMy understanding is that Windows has an odd memory allocation system where each DLL has its own allocator. Qt historically wasn't designed for that; it will allocate and return objects on the heap with the understanding that user code will free them. They may have solved this since by using a custom allocator on windows for Qt types.
- simion314 8y agoIs this related to statically linking? HOW are alternatives like Electron? can you bundle your Electron app into a big binary file ? From my experience in year back when doing desktop apps there was never a pressure to combine your dependencies into 1 big binary
- deleted 8y ago[deleted]
- 8draco8 8y ago1% difference is a lot in software development. Electron is like Flash, it allows cross platform apps with one codebase. By the way Flash used ActionScript which have a lot in common with JS so that’s another similarity.
- x0x0 8y agoelectron also allows sharing code between web and mobile, plus the cross platform. afaik qt doesn't address that.
- SquareWheel 8y ago>Electron is only the best way to do something when someone knows only javascript and web dev but doesn't want to learn a new language. Why is there always someone ready to jump in with this elitist nonsense? There's plenty of reasons to use a web stack even if you know other languages. It's inherently crossplatform, has an extensive library, and is extremely quick to iterate on. Slack and Discord building in Electron means they only need to maintain one codebase across web, desktop, and mobile. They don't need separate teams for building in Java, Swift, and C#. They only need to write a new feature once. Crazy, right? This "web programmers are dumb" attitude is nothing but elitist rhetoric. Cut it out.
- nv-vn 8y agoQt is also cross-platform, easy to use, and has a giant library to work with. You can use it with virtually any language you want. Plus it runs on mobile.
- wesammikhail 8y agoand lets not forget, it looks like this: https://doc.qt.io/qt-5/qtwidgets-mainwindows-application-example.html https://doc.qt.io/qt-5/qtwidgets-mainwindows-application-exa... You didn´t really counter the parent´s post with an argument. You just pretended to do so by suggesting an alternative that is incompatible with the requirements he had in mind because you think you know better...
- saagarjha 8y ago> and lets not forget, it looks like this What are you trying to show here?
- ahartmetz 8y ago"It looks like this" That just shows how little you know. One style in one configuration looks like that.
- nv-vn 8y agoQt is really trivial to style. That's like showing a blank HTML page without any CSS and discounting HTML because of that default appearance.
- sime2009 8y ago> Electron is only the best way to do something when someone knows only javascript and web dev but doesn't want to learn a new language. What toolkit or library would you propose instead? Seriously, what are these great alternatives? Doesn't necessarily have to support JS.
- nv-vn 8y agoThere's a ton of really popular, well-supported options * GTK * Qt * WPF for Windows * JavaFX * Tk * LibUI I'm rooting for https://github.com/revery-ui/revery/ https://github.com/revery-ui/revery/ right now too, but it's still early in development
- Pfhreak 8y agoHow many of those run on the web as a platform? (A cursory search suggests 'not many' or 'not without some effort'?) There are some components I'd ideally like to avoid rewriting for my web and desktop applications. (E.g. why should I have to write render code for my friends list component more than once?)
- nv-vn 8y agoI'm sure Revery does, don't know about the others.
- munchbunny 8y agoAs someone who used to develop with some of those options, I'm frankly glad that I can use HTML/CSS and Electron + React. It's much easier on the developer, even if it's less performant for the end user.
- doodpants 8y agoThat's exactly the problem: the developer prioritizing their own convenience over the end user experience.
- derefr 8y agoElectron is the best way for a third-party to wrap someone else's web-app into a more-fully-featured desktop app when that someone else doesn't want to ship a native app. For example, there are a number of desktop Facebook Messenger "clients", that can pop OS notifications and so forth. They're all based on Electron. None of them are built by Facebook. Similarly, there are a number of desktop Gmail "clients", not built by Google. They're all Electron, too. The only alternative to this approach, would involve reverse-engineering the company's web-app's (proprietary, undocumented) API to write a native client library for it, and then constantly fighting the company as they try to block your native client library from being able to access their backend service. Some projects do that (there are at least two "native Gmail clients" that are actually native and are built on a reverse-engineering of the Gmail web-app backend API) but it's really not worth it if you're just a dev trying to scratch your own itch of wanting better desktop integration from these web-apps.
- jrs95 8y agoEven if you were equally proficient in C++ and JavaScript, you can't tell me that Electron isn't significantly more productive.
- AnIdiotOnTheNet 8y agoAdd up all the time and resources wasted by an Electron application for all users over the lifetime of the application, then compare that to the amount of developer time supposedly saved.
- scottlu2 8y agoIt’s about time to market and iteration speed being important success factors, coupled with users accepting the costs in exchange for the benefits.
- AnIdiotOnTheNet 8y agoSo it is ok because money? I don't accept that reasoning. Computers today are orders of magnitude faster than they were in the past yet this concept of developer time being so much more important than everyone else's has them still feeling slow and unresponsive on essentially the same tasks we were performing 30 years ago. This is why I hate this industry.
- scottlu2 8y agoI think it’s an economic reality for for-profit companies that make apps. If company A doesn’t go the html app route, and company B does for the same effective product, company B will have an advantage. It’s almost to the point where if your company app can be developed this way, you must do it this way to stay competitive.
- jrs95 8y agoIt might feel like this, but if you boot up an old Windows XP machine and edit some text, it's still going to feel slow as hell in comparison to Atom on a modern machine. We get used to what's "fast" to do on our computers, and anything significantly slower than that feels "slow". And sure, the software is much less efficient. But compare it on hardware from the time it was developed, and it's not as bad as it seems. And it's not just about money. With Discord as an example, they are able to quickly develop and deliver a great product, iterate on new features and integrations, and support all major platforms including web browsers. Their choice to use a web based stack helps A LOT with this.
- gammateam 8y ago> Electron is only the best way to do something when someone knows only javascript and web dev but doesn't want to learn a new language and when you want to fire all the obsolete specialists while making a product with one person that works for everyone. I mean, you can keep one specialist, since they know javascript too
- faissaloo 8y ago>Electron is only the best way to do something when someone knows only javascript and web dev but doesn't want to learn a new language. More like Electron is only the best way to do something when you're a business that's in dire need of developers and needs a cross-platform solution.