3 ms·
Continuing my morning rant on here a little ... I'm an experienced developer, I have a pretty good ideas of what these boilerplate projects are trying to achie
by ColinEberhardt 5y ago
Continuing my morning rant on here a little ...
I'm an experienced developer, I have a pretty good ideas of what these boilerplate projects are trying to achieve. However, at the moment I'm helping Python dev get up-to-speed with web development.
They are creating a desktop app, and wanted to use MS FluentUI, a React UI component library.
I'm now trying to teach them JavaScript, webpack, TypeScript, React, ESLint, ... Help them resolve dependency issues. Explain bundlers, the various different module systems ... the list just keeps getting longer!
- z3t4 5y agoOne have to be reminded that you do not need webpack, TypeScript, React, ESLint et.al. to make a web app. For best platform/hardware support it's best to use the native components built inside the browser, like textarea, select-box, etc. If you use a popular component framework/library it's likely that it has only been tested on one or two platforms, and will be abandoned in a few years so it won't work on the latest gadgets. If you want to make a web page or web app fast, with good performance, easy maintainability, small in size/bandwidth, and superb hardware support - go with "vanilla" web components. If you want to follow the latest fashion in web development and have a cool resume then pick a framework (but make sure it's not the most mainstream/enterpise - that's not as cool)
- zvr 5y agoThe concerns about security and licensing expressed in the tweets are real... but the analysis didn't go deep enough. For example, electron includes Chromium, which includes a number of copyleft-licensed libraries... In order to fulfill the license obligations, complete corresponding source code for these libraries must be accompany (or be made available) for each electron app.
- richeyryan 5y agoWhy not use QT with Python? Why include Typescript or ESLint if they're a Python dev getting used to the ecosystem? Why choose a boilerplate with a bunch of things you don't seem to want or need?
- amelius 5y agoPerhaps because it allows people to use the app remotely and perhaps collaboratively without changing much code. Once you go down the path of a native app, it's difficult to go back.
- ColinEberhardt 5y agoBecause we want the application to have a modern look and feel, and this Python developer has a genuine desire to start learning about modern web technologies.
- jcelerier 5y ago> Because we want the application to have a modern look and feel, you think that e.g. Telegram or MauiKit apps don't look modern ? https://github.com/telegramdesktop/tdesktop https://github.com/telegramdesktop/tdesktop https://mauikit.org/ https://mauikit.org/
- dalmo3 5y agoIs it fair to say that the expressed concerns are only your own? As I see it, people with genuine desire to learn don't see details such as "number of dependencies" or "linters" as impediments to anything at all.
- dragonwriter 5y agoAn electron desktop app makes sense for applying knowledge of web tech, its kind of silly to complain that Electron + React + TS + ESLint isn’t an ideal pedagogical platform for web tech, and is overwhelming to a bewbie with lots of different moving parts. (Also, while React is my go to web framework because I’ve learned it well from necessity at $DAYJOB, it’s not particularly modern.)
- TechBro8615 5y agoIt really feels like Python devs are casting stones from glass houses whenever they complain about the boilerplate required to setup a modern JS development environment. In Python, the correct way to setup a new project seems to change every six months. And the most future proof package manager seems to be Poetry, which is directly inspired by Yarn.
- throw_m239339 5y agoHow about: pip install mypackage No? it's too 2010? I've been a developer for some time now. All I know is a lot of developers love unnecessary complexity. It's even more true in the JS world to be honest. Javascript modules were supposed to make everything easier yet some people still manage to write insane boilerplates and tools on top of that and bring back complexity where it is not needed.
- ivanbakel 5y ago>No? it's too 2010? The issue with blind use of pip is that it will inevitably break something in your system when a dependency upgrades too much. Hence virtualenv, and later pipenv. And setting up a Python project is more than just dependency management. Do you want an egg/wheel/etc? Do you use setup.py, or is it deprecated? Speaking from experience, the docs for various Python tools simply don't agree on these things, and it's very hard to set up a project "correctly" without someone helping you.
- TechBro8615 5y agoDo this on a brand new MacBook (or for a bigger challenge, try it on a MacBook that already has a bunch of Python development tools installed). Count how many Google searches you need to make before you have a reproducible and isolated development environment you can share with a junior teammate.
- mlnj 5y agoAs someone who is fairly new to Python and have lost hundreds of hours on different project in this exact same situation. I've found Dockerized development containers (VS Code Remote Containers) to be a very good solution. Nothing leaks out. Everything is reproducible. But then again I do only web stuff.
- locallost 5y ago> I'm now trying to teach them JavaScript, webpack, TypeScript, React, ESLint, ... Help them resolve dependency issues. Explain bundlers, the various different module systems ... the list just keeps getting longer! I think teaching people all that, all at once is the actual problem, not that all those systems are not impeccable (which they aren't). Maybe as developers we should figure out what are the things that are truly important, and draw the line at that, and then treat the rest as optional. I truly wish that things we do are simpler, but they are not going to get better by wishing. But even that is not my biggest grief, it's that the pain is often self inflicted. Developers love using everything possible and making everything into something they can't live without (in part because it's a way to look down on people that don't know or use something), but it's not true. So, ESLint is a great tool, but a beginner does not need to know about it. I think you do need to suffer a bit before you can appreciate a tool like that. Webpack is a... well, it does things that we need, but a beginner does not actually need to know what goes on when they run their dev server. Slim things down and it's fine as long as they're still doing the real thing. Kids don't go to school and start with the square root of a negative number. They don't even teach them what a negative number is.
- ColinEberhardt 5y agoYep, totally agree. For now we are focussing on plain-old-JS with VueJS. Nothing more. It's just frustrating that the UI component library we want to use (FluentUI) requires React & TS, which in turn require a bundler / build system, which leads to a world of pain!
- richeyryan 5y agoYou can use any Typescript project in plain Javascript, it all compiles down to and runs as Javascript in the end. You obviously don't get the guarantees of static typing but you should be able to use React FluentUI in plain JS. FluentUI also seem to offer a web components distribution which you could probably use handily in Vue if you were so inclined.
- janpot 5y agoWhat is it with modern frontend development that people think you can just quickly "get up-to-speed" with it? Nobody would accept these complaints of complexity had you said "I'm just trying to get these web developers up-to-speed hacking on the linux kernel", they would advise you to start them on something simpler, to get to learn the languages and tools gradually. I agree there's more complexity than there should be, but you also dump them in the most complex stack that can be dreamed up in the field.
- rgoulter 5y agoVarious swathes of programming benefit from being able to make use of abstractions that hide details. e.g. embedded development is difficult, but Arduino makes starting out more accessible. Beginners are able to get an LED blinking on a development board without needing to understand all the details. While expecting to fully comprehend all the complexities of some unfamiliar system is unreasonable, I think it's reasonable to hope for a development experience where what you need to know to be able to contribute is covered by a small surface of well-made abstractions.
- 8eye 5y agowhat if we create an engine that finds similar objects and merges them together, so it find redundant code and creates slices that are only called from within whatever file needs that part of the code. basically a don’t repeat yourself engine..
- the_other 5y ago> I'm helping Python dev get up-to-speed with web development. They are creating a desktop app, and wanted to use MS FluentUI, a React UI component library. Creating a desktop app isn't web development, it's desktop app development. You've got to teach web dev from the basics outwards. We (developers) have taken a platform for "document" delivery and layered it with tools for app development. Teach it this way. Start with simple content - including a little style, enough layout to get going, some rollovers or form helpers, and basic accessibility. Then talk about templating (static sites, or server-side apps). Then talk about single page apps. Then talk about desktop apps.