Tenets #10085
Replies: 19 comments 34 replies
-
@Rich-Harris How do you imagen sveltekit will embrace the no-one cares tenet? I dream of a world where we don't have to think of package managers as much. |
Beta Was this translation helpful? Give feedback.
-
Oh, you moved from 'optimise for vibes' when you decided to deprecate |
Beta Was this translation helpful? Give feedback.
-
the first time I use Svelte & Kit I feel the same joy as I feel when the first time learning web development in 2015 I don't know how I can be thankful enough |
Beta Was this translation helpful? Give feedback.
-
I love the "Vibe Based Optimization" philosophy |
Beta Was this translation helpful? Give feedback.
-
no-one cares, that's the best vibe 🎉 |
Beta Was this translation helpful? Give feedback.
-
RICH FOR PRESIDENT |
Beta Was this translation helpful? Give feedback.
-
With enthusiasm and community like ours, I feel like SvelteKit in five years from now will able to do this:
Enjoyed The Tenets |
Beta Was this translation helpful? Give feedback.
-
I gave up on learning webdev some time ago. Svelte brought me back last year! I wish there was a bit more in the philosophy of going from 0 - 1 given a lot of docs and resources cater for other web framework converts. Great tenets and can't wait whats ahead! |
Beta Was this translation helpful? Give feedback.
-
Beautifully said for the most part! |
Beta Was this translation helpful? Give feedback.
-
HTML, The Mother Language ! |
Beta Was this translation helpful? Give feedback.
-
This is the biggest reason for me to use Svelte. |
Beta Was this translation helpful? Give feedback.
-
As a backend dev trying to do frontend stuff sometimes for side projects this statement is the best thing i ever read. |
Beta Was this translation helpful? Give feedback.
-
I love svelte and kit. Even I am just a regular developer but I really enjoy what svelte has reached so far and use svelte and kit as my main tool. I used to learn React, I do not like it because the virtual DOM and advertising that virtual DOM beat DOM, I learn Angular, I feel it too heavy and uncessary thing to configure and pain in ass like layout and router. I wish Svelte still enjoyable to make web because right now there is no a single framework can do it like Svelte and I love the no one cares and numbers lie philosophy because I am tired of those, just look at React has to change to compiler, it's funny 😂 |
Beta Was this translation helpful? Give feedback.
-
No mention of cybernetics? |
Beta Was this translation helpful? Give feedback.
-
My hate for JSX alone would push me toward Svelte :) |
Beta Was this translation helpful? Give feedback.
-
Regarding "Don't optimise for adoption", if the other tenets are done well adoption rates will increase. So perhaps adoption rates can be a measure of how well other things are being done. I actually think adoption rates are important because when choosing a development environment one of the considerations is how many people can be employed with the necessary experience. |
Beta Was this translation helpful? Give feedback.
-
I've written this out elsewhere, but thought I'd repost it - and significantly elaborate on it - here, because it feels relevant, specifically to the "No one cares" point: I'm really not a fan of how much "background knowledge" is now necessary in many Svelte 5 workflows in general. The introduction of proxied state may have opened up new possibilities and quality of life, but it's also brought many a potential pitfall and footgun with it, and it seems like there are too many stopgap measures and bandaid fixes to issues it's brought up that essentially boil down to "this thing that was previously possible and intuitive with little headache now requires this very specific workflow that you'll always have to keep in mind if you don't want to run into issues". In short, when previously, you could write code that looks like it should work, and it worked as you expected - I'd reckon this aspect of Svelte was the main reason for why it was the king of DX - now, you constantly need to worry about how Svelte achieves what it achieves in the background. For instance, you need to remember to Or, you need to use
Or - as an extension of this - you have to know that state is proxied and that proxying any arbitrary object is a bad idea in order to understand why non-POJOs will just blanket refuse to become reactive in Svelte 5 now, requiring you to either write cumbersome boilerplate to make it work or tie all of your application's code to Svelte inextricably by adding runes all over it. Every one of these examples is going to need a mention somewhere in the docs, adding sizeable API surface, and will add something you will need to mentally make a note of and keep in the back of your mind whenever you write Svelte code. It feels very un-Svelte-like, and I wouldn't be surprised to see many issues related to all of the above pop up once Svelte 5 is out and about. To circle back to the tenets: I agree that "no one cares", and previously, no one had to care. You wrote code that looked like it should work, and it worked. Therein lay the magic of Svelte. Now, you do have to care in what feels like far too many cases, and if you don't, then the code you wrote, the code that looks like it should work... just won't work. And you'll have no idea why, because broadly, this stuff just isn't intuitive to anyone who doesn't know about how Svelte works behind the curtains. |
Beta Was this translation helpful? Give feedback.
-
I've gotta say, runes ruin the vibes |
Beta Was this translation helpful? Give feedback.
-
Please revert the changes made in Svelte 5 |
Beta Was this translation helpful? Give feedback.
-
This is an attempt to articulate the Svelte philosophy — our bedrock principles, that guide our design decisions.
Edit: for visitors from Hacker News, and anyone else who is curious, here is the video that this list came out of
The web matters
We work on Svelte because we believe that the web is a critically important technology, and that its continued survival is not guaranteed.
Optimise for vibes
People use Svelte because they like Svelte. They like it because it aligns with their aesthetic sensibilities.
Instead of striving to be the fastest or smallest or whateverest, we explicitly aim to be the framework with the best vibes.
Don't optimise for adoption
We're not trying to be the most popular framework, we're trying to be the best framework. Sometimes that means making choices that we believe in but that go against the grain of web development trends.
HTML, The Mother Language
HTML is a really good language for describing UI. Svelte augments HTML in a way that makes it a really good language for describing interactive UI.
Most frameworks are JS-centric, because JS is the most powerful language. But then they find themselves jumping through hoops to make it feel like you're writing HTML. We think both options are valid, but the HTML-first approach ends up feeling more natural.
Embrace progress
There is a tendency in the web developer community towards a harmful form of pessimistic nostalgia — the idea that things were better in the prelapsarian age before bundlers, TypeScript, client-side routing and other trappings of modernity.
This is nonsense. As a community our default position is one of optimism about technology — the platform is getting better, our tools are getting better, our devices are getting better, and if we embrace that fact we can make better stuff.
And when other frameworks introduce new ideas like signals or server components, we look at them with interest and jealousy, and try to work out how we can incorporate good ideas, instead of resting on our laurels. There is always room for improvement.
Numbers lie
Lighthouse has broken the brains of a generation of web developers. We have replaced good judgment with subservience to metrics that were only ever intended to be used as a diagnostic tool.
Goodhart's Law states that
and this is very true in web development. Numerical rigour is good, and we pay attention to the various numbers, but when designing Svelte we think qualitatively, not quantitatively.
Magical, not magic
There's a subtle line between something feeling magical, and something feeling like magic. We want Svelte to feel magical — we want you to feel like a wizard when you're writing Svelte code. Historically I think Svelte went too far into magic territory, where it's not 100% clear why things work a certain way, and that's something that we're rectifying with Svelte 5.
Dream big
'Choose the right tool for the job' is sensible but boring advice.
It makes us small in our ambitions. I want us to dream bigger. I don't want to feel like my tools can't handle evolving requirements, or that if I want to dabble in a new field I need to learn an entirely new way of working first.
Even if it turns out to be unachievable, I find it valuable to ask the question 'what would it take for SvelteKit to be the best framework for any app?', whether it's purely static content, or a realtime multiplayer app, or an offline-first productivity app, or even something built for an augmented reality headset.
No-one cares
Most people do not care about frameworks. They just want to build something cool, and Svelte is for those people too.
So when we design things we need to think about the people who haven't read the docs in a while, if at all, and don't care about things like fine-grained rendering or configuring their build tool. This means that things need to be intuitive, that we shouldn't need to worry about manual optimisations like memoisation, that we should have as few APIs as possible, and that things need to be discoverable — for example you should be able to hover over a rune and get a link to comprehensive documentation.
This also informs our approach to documentation and tutorials — it should be possible to build what you want by just learning the concepts that you need, and worrying about the other stuff for another day.
Design by consensus
Svelte is a community-driven and consensus-led project. It's important that the community — that's you — has a stake in the project's future. Many of Svelte's best ideas originated outside the core team.
When we introduce new plans, we want to communicate them openly and provide everyone with good opportunities to offer their feedback.
Those of us who work on the project every day have a vision for what kind of thing we want it to be, but we don't want to foist that vision on people against their will. And so while we can't get unanimous agreement on every change, we can at least say that dissenting voices have been heard and considered.
Beta Was this translation helpful? Give feedback.
All reactions