So-called modern web developers are the culprits
Published on 2021-12-17. Modified on 2021-12-29.
Google Chrome currently dominates the market share of web browsers. This is a problem because Google, being the advertisement company it is, are planing to implement the deceitful and threatening Manifest V3.
Some people naively look towards Mozilla Firefox as the "savior" and alternative to the Chrome hegemony. Maybe that's because of the way it previously saved the Internet from the "evil dominance" of Microsoft Explorer. The problem is that Mozilla is extremely mismanaged. In 2018 Mozilla got $435.7 million in revenue from search engines who pay to be the default search option in Firefox in different parts of the world, mainly Google, but also Yandex and Baidu. Still, in 2020 Mozilla cut about 25% (250 people) of its global workforce, blaming the corona virus impact on economies as something that "significantly impacted their revenue". Yet, Mozilla had received more that enough money. In 2018 Mozilla's top executive was paid $2.4 million and his payments has more than doubled the last five years!
Mozilla is NOT the "trusting" organization it used to be. If Mozilla is going to survive, the management needs to be fired as soon as possible with no compensation what so ever, products that nobody wants need to be stopped and Mozilla needs to be limited to its core competence, not only so that it can survive on less revenue (perhaps on donations only), but also so focus can be where it needs to be.
Yet, we need to pause here for a second!
We need to ask ourselves why we are having these problems to begin with? Why do we even need these major browser vendors in the first place?
I blame the so-called modern web developers! They are the culprits!
Without so-called modern web development we don't need these huge monsters that the browsers have become. We can get fully functional websites with simple lightweight browsers, and only specialized websites would require special solutions. But even most of these special solutions can be made to work without any of the huge browsers.
I know that some web developers just doesn't know any better, they do web development as they where taught, but that's possibly the least acceptable excuse. If you're doing any kind of software development you need to study beyond what you have been taught, you need to understand the technology you work with. You need to know when to use a specific tool over another.
The fact is that all the popular frameworks are bad. They are mostly developed by theory. Theory about abstractions, design patterns, and all the other buzz that is more or less useless in real life. Not only that, you cannot use a framework in the first place because when you need performance, you need to work with raw optimized code. You need to get rid of all the clutter, not add more of it. You cannot build software for performance when it requires 75 classes or modules just to print "Hello world" on the monitor. What you need is simple tools, small, optimized and specialized libraries, not frameworks!
We used to sit around in the Unix Room saying, 'What can we throw out? Why is there this option?' It's often because there is some deficiency in the basic design — you didn't really hit the right design point. Instead of adding an option, think about what was forcing you to add that option.
― Doug McIlroy.
With regard to Rails and Django specifically then that is a matter beyond comprehension. Neither Ruby nor Python should ever have been utilized for web development. They are simply ill-suited because they are too slow. They are the wrong tool for the job. Just because I can use Bash to create and run a website doesn't mean it's a good idea to do so.
Some people argue that developer time is more costly than computing resources and Rails and Django is all about getting things done fast, but that is exactly the problem. The problems we're facing on the Internet today is the long term consequence of exactly that irresponsible short term view. To get things done fast rather than right.
If you're a web developer consider these points:
- If you have studied "modern" web development on some university or educational institution you need to be willing to discard what you have been taught and start to think for yourself. Unless you have had a really good teacher chances are that you have been listening to people who know nothing but theory. Study how the underlying technology works so you can make educated decisions. So-called modern web development is working against the technology it is running on.
- Test your product on a crappy laptop
- No, your website is not a webapp even if you call it so
- Stop making single page websites! The HTTP protocol is build to serve small individual and discrete requests, each with its own unique purpose. It makes no sense to load an entire website on to the browser in one go. Most people don't read or view 90% of the content on a website. There is absolutely no reason to load e.g. the "About Us" page on to the browser if the user never reads it. Split the website up in several small parts and let the user decide what he or she wants to see, that is what HTML anchor tags are for. Serve a small front page only, then let the user specifically request what he or she wants by clicking on relevant hyper links. This is how the web is supposed to work - even on a smartphone.
- Stop sending JSON from the backend to the frontend. You're not building an API. When the client is a browser you need to send HTML directly to it.
- Stop sending fonts to the browser. Nobody really cares about fonts and few people even notice any difference. Do a user test, you will be surprised. Let the browser choose the fonts from the operating system.
- Stop sending the browser to CDNs. It is dangerous, privacy compromising and can potentially harm your users. Serve your content locally.
- Get rid of ads and remove all popups, slideovers, mailing list signup garbage, etc.
- Give clear and concise information on your website. Don't make users chase answers.
- Stop using Google Analytics, Facebook links and all the other social media junk on your website! We need to get rid of all of this. Besides, do you really need all the statistical data? If so, are you absolutely sure that the statistical data that the server already is collecting isn't enough? You do know that you can collect most of what is truly needed on the server alone right? Also, if you're running on multiple servers you send logs to a logging server. Don't let Google Analytics do that for you. Last, but not least, how do you even know you can trust Google to display valid statistical information back to you?
- Don't use programming languages unsuited for web development. Python and Ruby are two programming languages that should never have made it to the web. Make sure that the programming language has been optimized for performance. Even consider using C for specific tasks that require massive performance. It will surprise you just how much money you can actually save by the huge increase in performance that C can provide.
- Take ownership of the software you develop. You have to do this. When you take ownership you become responsible for everything that happens with the project. This has a major impact on the quality of the work you do and it complete changes your mindset. If something goes wrong, you're responsible. The power requirements your project creates on users computers, you're responsible. The impact your project is having on the environment, you're responsible. The impact your project is having on people with disabilities, you're responsible. The impact your project is having on the future, you're responsible. If you cannot be responsible you should not be involved.
- Stop following trends and hype blindly. Make educated decisions. You should know that most trends and hype are driven by either ignorance or people who make money on people who follow trends and hype.
Maybe you believe that this article belongs in 2001 and not 2021, but it really doesn't. More and more web developers are slowly waking up to the fact that what they have been doing all these years of so-called modern web development is wrong. We need less power hungry websites both on the servers and on the clients.
Email from an anonymous user
I have been arguing with all of my teachers and classmates about this very problem!
You use a project tool that pulls down 1786 packages with 69 vulnerabilities. 45 moderate, 20 high and 4 critical. In summary 432 MB of a mess. Yet, you can't even print "hello world" with it. You need a separate package for routing, another for state management, etc.
This is just about as crazy as it gets, yet everyone is doing it and it's considered "the modern way".