This is great. I appreciate an open-source project looking at the amount of developers working on locked-in legacy projects where dependency upgrades take years.
This is a rare moment of empathy in an industry that - judging from other comments here - is ALWAYS on the hunt for the next best thing. Bootstrap has brought me joy and made my life as a developer much easier. Thank you to @mdo & team for keeping it that way.
A prior maintainer of that lib here - that library is a behemoth.
Unfortunately I ran out of time to be able to continue to maintain it, and now work for one of those big tech companies that requires a lot of approvals to participate in open source anymore unfortunately :( . There are a lot of good fixes pre-2.0 though if you can upgrade to it!
Probably one of the biggest disincentives for continuing to me though were some of the users - some were outright abusive.
If the developers read this, one thing I really liked about Bootstrap (v3 anyway, they've changed it for v4) is that the documentation is a few long HTML pages[0]. As a user, it makes it really easy to see what components are available and to search the documentation (I can just use Ctrl-F).
It supports most (if not all) of bootstrap’s components, and works well enough that even large-ish projects can do without bootstrap.js (which needs jquery).
FYI: Semantic UI has one of the largest file sizes for CSS libraries at 730 KB uncompressed, 95 KB gzipped - add in React and you'll reach 1MB in no time.
use something to remove unused css in your build process. i use purgeCss for that..
https://github.com/FullHuman/purgecss
so simple and yet so powerful!
This is one of reasons why icons were dropped in Bootstrap 4. For people who need icons, they are easy to add via other sources. Also, some people didn’t like the default icons and replaced them.
i guess removing unused rules on deployment would reduce the file size. But a few kb is not much today - with auto playing hd videos on Facebook et. al.
There's a big difference between a video that streams in while the user watches it, and all the styles and scripts that are needed to render the page itself. If the former is too slow the user just keeps scrolling or the player switches to a lower quality stream. If the latter is too slow the user will just close the tab and move onto something else.
With 12,000 kb/s the user will hardly notice the difference. You could add the CSS needed for the first render on the document, and it would save you a round-trip, and with HTTP2 you can send the CSS file together with the document. CSS files can however be cached so the few kb shaved off will only be saved on the first page load. If it's a common file, hosted on a CDN it might already be cached. If you are however worried about bandwidth usage the lowest hanging fruit are the binary files such as video,images, and fonts, then JavaScript trackers and frameworks, then the CSS and further trimming the content by getting rid of unnecessary markup.
Your bandwidth numbers are … extremely optimistic … unless you're only targeting business users at large companies. Worse, that's the wrong number to care about: what impacts user-perceived performance far more is latency and that's where something render-blocking like a huge pile of CSS really matters.
If you care about people on wireless connections, with less than perfect fiber connections, etc. a 500KB CSS file is going to add seconds to the total page load time and users will see it more often because the size will get it evicted from small caches more frequently. HTTP/2 won't help because the entire CSS file needs to be transferred before the page renders.
With HTTP2 you can add files to a request, if the user requests index.htm you can also send style.css in the same response. Versus the user first requesting index.htm, parses it, then request style.css. It's a pretty new feature, and will help a little bit with latency as it can save a round-trip.
Wireless connections have had bad latency, but it's getting better. 15 years ago you could get 200+ ms latency on WiFi. today we are down to around 10-20ms. 15 years ago we only had 100Mbit fiber. If you live in a city today you can get 10Gbe.
Meanwhile there are people surfing using satellite up-link, or very poor GSM, so there are strong contrasts. But they probably wont bother loading any CSS (which makes semantic HTML important).
You're assuming roughly a 50MBit/sec connection. What about people on mobile connections or in regions where 1MBit are barely achievable? Drop them over the edge? Ignore them? Might be a valid decision for your project, but for some people, bandwidth still matters.
What were the benefits over using Bootstrap? Interested. I use bootstrap a lot, so I feel as if it is easy to be productive, but always exploring alternatives.
I find Semantic's React library to be great and it's well maintained, so if you're using React, I think it has a leg up over Bootstrap there, also just more keen on the aesthetic and design choices.
Excuse me for a stupid question, how does Semantic UI compare to React and Angular? I seek to pick up a framework and start developing browser-based GUI apps and don't know which to choose. I want to just layout GUI widgets and code the logic without using any Photoshop or anything like that.
They're different things. Semantic is the UI framework that you can use from React (in fact, there is a react-semantic-ui npm) or other.
React will deal with lifecycle of objects on the screen and state machines to mutate them, but the actual look & feel of the widgetry is defined by whatever ui framework you decide to use (bootstrap, semantic, blueprint, etc).
Well, At first semantic UI is a UI library which helps in providing pre-built UI components. React and Angular are Frontend frameworks, which helps in performance and code modularity. Photoshop is a photo editor, although people used to make layouts with it long ago,,, not anymore, instead people are using Sketch. You can of course code the logic using plain simple JS, HTML, CSS and you can make widgets as well, unless you mean desktop widgets - for that you need electron.
I see. Thanks. Can you suggest the quickest and most relevant learning path if I define what I seek more precisely? My relevant experience includes building WinForms apps in VisualStudio (where you just drop a widget on a form, click it and code what it does) and writing simple websites with vanilla HTML+CSS+JS. I've also tried some WPF and loved the MVVM model (AFAIK Angular is somewhat close to it but I also love functional programming so perhaps Reason-React or Elm can make a better choice) but didn't stick with it as I want my apps to run everywhere. I'd like to build a desktop-like (but reasonably webish-looking, responsive and mobile-friendly) single-page app that would be hosted on a static hosting, work in a browser and interact with the world by means of web services (some provided by 3rd parties, some coded myself in Python) and browser APIs. The idea of using a graphics editor like Photoshop or whatever to draw my UI scares the hell out of me, I want all the look&feel pre-designed "out of the box" the way it is in desktop widget toolkits like Qt. I've once studied Bootstrap and it seemed like a toolkit that can make the kind of UIs I want but I feel like I should probably pick up a modern SPA framework like React or Angular rather than code vanilla JS if I want to build a reasonably complex application.
anvil.works seems awesome but its widgets selection is too humble, it doesn't even have tree view to the date (but they've said they are going to add it later AFAIK). I'll explore the others from the list. Thanks!
The biggest gotcha for Semantic UI is that it requires FlexBox support which is extremely buggy (or non-existent) in IE 10 and 11. Edge is OK (mostly), but there are a lot of users still on IE 10/11.
That's good to know since they carefully avoid mentioning anything about browser compatibility on their site. Bootstrap 4 also uses flexbox but they have done a good job supporting IE 11, which is good: on a general audience site I see ~2.5% of traffic from IE11 worldwide whereas IE10 is ~0.08% so it's much easier to write off.
I was also disappointed to see zero mention of accessibility, which is a deal-breaker for government and large business sites.
Yeah a lot of people, including me, were waiting that. Not able to rebuild to Bootstrap 4 at this point in time. Google Lighthouse was complaining about that Bootstrap 3 was not secure.
Shameless plug: I just put `rbx` 1.0 together which has 100% coverage and fully implements the Bulma framework for React.
Every component has a story, and it’s written in TypeScript (transpiled to JS). I hope to get around to releasing this big update on npm tonight(!) but for now you can use the code straight from GitHub.
Also, the wrapping is complete yet minimal - there are only a couple components with state and you can override those with a `managed` flag.
Also, every component supports ref forwarding (using of course `ref`), and can render as any other component using the `as` prop. For example, if you want to bring your own Form, Link, or Table framework, this will work with that seemlessly.
If you're using a frontend view engine like React then I'd recommend looking into component-based CSS frameworks like https://tachyons.io/ or https://tailwindcss.com/ where you have classes for the basics and add them together for the final output. It's a natural fit to view components.
I have tried both with quite complicated applications and I have to say that I prefer tailwind.
With PostCSS in your pipeline, you can add the tailwind plugin and start composing CSS. This way, you can use your configuration even in places where you are required to write CSS (e.g. for transitions or media queries):
And then you thought that millions of websites, a lot of commercialy crafted for customers, adopted it in no time? So an update, to the most used version which has even security isseus is not nessacary? You live in a nice world :)
This is a rare moment of empathy in an industry that - judging from other comments here - is ALWAYS on the hunt for the next best thing. Bootstrap has brought me joy and made my life as a developer much easier. Thank you to @mdo & team for keeping it that way.