Open Source Development Preferences - Page 1
Forum section: electronics / projects

author: Eric_the_EE
author_rank: Contributor
timestamp: December 17, 2017, 04:01:41 pm
content: Considering an open source project that will include a GUI for interacting with the hardware, how would you prefer the GUI be developed? Remembering that Java would allow multiple platforms, but would require Java. Microsoft Visual projects will not allow multiple platforms, but would allow the project to only require native support, no extra Java installation.

author: NiHaoMike
author_rank: Super Contributor
timestamp: December 17, 2017, 04:06:47 pm
content: Out of what you listed, I'd pick Java, but I would suggest also considering Python and a popular GUI library for it.

author: xani
author_rank: Frequent Contributor
timestamp: December 18, 2017, 12:08:00 am
content: Exactly what hardware and what would GUI do ?I'd throw "just a webpage" to a mix. Then you can have backend in anything (Go got nice and painless cross-compiling built-in)As for Java, at cost of a bunch of MBs of disk space you can just embed JRE with your app and end user does not have to install anything else.I think the question should be more about which framework to use, Qt is supported from few different languages and usually works pretty well (Digilent's waveforms 2015 uses that afaik)

author: nctnico
author_rank: Super Contributor
timestamp: December 18, 2017, 12:23:43 am
content: WxWidgets or Qt. At least WxWidgets can be compiled into a single self sustaining executable. Maybe Python is an option but you'd have to pack everything in one installer and be carefull the libraries you use are available on every platform.

author: prasimix
author_rank: Unknown
timestamp: December 18, 2017, 10:52:11 am
content: Electron athttps://electronjs.org/and here:https://github.com/electronI'm wondering how LabVIEW end up as one of your poll option.

author: Karel
author_rank: Super Contributor
timestamp: December 18, 2017, 11:12:59 am
content: Definitely Qt. It runs on Linux, Mac, Android, windows.You can create a statically linked executable that contains the framework/library.No need to use an installer in order to install necessary so's/dll's.

author: hans
author_rank: Super Contributor
timestamp: December 18, 2017, 11:38:48 am
content: Chose some portable. 3 out of 4 listings are based on MS products, which are partially crap or completely useless on Linux or Mac OSX.I therefore voted Java, but I would personally first attempt C++ QT .If this only needs to run on Windows though, then C# >> Basic >>> Labview IMHO.

author: lundmar
author_rank: Frequent Contributor
timestamp: December 18, 2017, 01:01:39 pm
content: I would go with QT since it is actively maintained and supported by all the popular platforms (Windows, Mac, Linux, etc.) and it has a good GUI editor (QT Creator).I would not choose anything MS specific. Also, I would not choose Java nor Python as they offer less performance and often users end up in trouble if they install the wrong version of Java or Python, unless of course, these runtime dependencies come bundled with the application in which case there is a larger size cost (compared to e.g. a statically linked QT application).On a slightly off-topic but related note, when you develop your application, I recommend to use git so you can easily manage your changes. In case of an open source project, definitely go with GitHub.If you are new to running an open source project you might find this site useful:https://opensource.guide

author: prasimix
author_rank: Unknown
timestamp: December 18, 2017, 01:12:06 pm
content: Quote from: lundmar on December 18, 2017, 01:01:39 pm+1

author: Eric_the_EE
author_rank: Contributor
timestamp: December 18, 2017, 05:55:56 pm
content: Thanks for the info.I included LabVIEW as an option based on prior experience. At my school, everyone used LabVIEW for hardware interaction GUIs. Where I work, LabVIEW is used often for developing our own utilities.I believe Texas Instruments uses LabVIEW to develop some of their GUIs used with Eval boards. So it is not uncommon. I just don't know how common. Hence the poll to see what people want.

author: lundmar
author_rank: Frequent Contributor
timestamp: December 18, 2017, 06:22:48 pm
content: Quote from: Eric_the_EE on December 18, 2017, 05:55:56 pmIn my experience, LabVIEW is mostly used by production/test engineers. It is useful to the extend that it is supported by the gear or application you are interfacing with. Also, it offers extremely high level programming - I think it is one of the best examples of graphical programming. However, it makes application distribution troublesome because users need to install LabVIEW to run LabVIEW applications and LabVIEW carries a very high cost (starting at 399$/year !).For professional software engineers, the performance, cost, and limitations of LabVIEW are generally not acceptable for application development and distribution. But your requirements might differ.

author: nctnico
author_rank: Super Contributor
timestamp: December 18, 2017, 07:44:01 pm
content: Quote from: lundmar on December 18, 2017, 01:01:39 pmI have been slightly involved in a cross platform project done in Python to create a GUI. It is possible to pack everything in one blob so it doesn't confront the user with a version and dependancy hell. One of the advantages Python has is that the programmers don't have to deal with memory management and/or pointers like they would have to using C++. So there is less chance people shoot themselves in the foot and usually there are a lot of libraries available as well.I'm not sure whether the performance is an issue because with many JIT compiled or semi-interpreted languages a lot of time is spend in code which is executed as machine code.

author: lundmar
author_rank: Frequent Contributor
timestamp: December 18, 2017, 08:38:54 pm
content: Quote from: nctnico on December 18, 2017, 07:44:01 pmSure. Thats why I pointed out you can bundle it. You can even compile Python to binary to improve performance if you wish. However, when it comes to performance, languages like C/C++ still reign supreme, in part due to the lack of automatic memory management. Yes, C/C++ is more low level thus more prone to programming errors or at minimum a different set of errors but with the advances of the C++ standard it is catching up with features. Also, the vast sea of available C/C++ libraries makes it easy to create stuff fast, just like Python. It is also worth mentioning that Python has a horrible syntax using indentation to separate code blocks, but that is very much my subjective opinionEither way, regardless of language choice, it takes a good programmer to write good programs.