Make the Web Work for Everyone
hacks.mozilla.org
hacks.mozilla.org
http://web.stanford.edu/class/cs142/
It requires students to test on Chrome:
> Unfortunately, Web browsers are still not 100% identical in their behavior, so Web pages may behave differently on different browsers. For this class, the reference browser is Chrome: your project solutions must work on Chrome, and the CAs will use Chrome to test them. Your solutions need not work on any browser other than Chrome. You may use a different browser to develop your solutions if you wish (Chrome, Firefox, and Safari all have very similar behavior), but please test on Chrome before submitting. We do not recommend that you use Internet Explorer for development: historically, its behavior has been quite different from the other browsers, so things that work on IE may not work on Chrome, and vice versa.
I have mixed feelings on this. Sure...open web, and everything. But in academia, Chrome is one of the more ubiquitous dev environments to be used...I remember being locked into Visual Studio. And purportedly, the class isn't just about job skills...it's attempting to teach HTML/CSS/HTTP/JS to students who may have not had real exposure to any of those concepts, on top of Angular/Mongo/Node/Express. Restricting the environment allows at least for more consistent instruction/grading.
As far as grading, I wouldn't expect responsive design or old IE support, but it should work in all current, major desktop browsers. It's really not hard, you just have to be conscientious of the fact that there are multiple browsers out there.
In addition to being SQLite focused, I tell students to just use one open-source, cross-platform client: http://sqlitebrowser.org/
Sure, you could make the argument that I'm woefully preparing my students for jobs in which PG/MySQL/MSSQL is by far the standard...whether you're talking about web applications or dealing with legacy data files. But job viability is not in my scope...I argue that I'm teaching students the fundamentals of data and logical joins...that I use SQLite is merely an implementation detail.
That's how I feel about the CS 142 class...if students come out of that class being able to understand even an intermediate level of all those concepts...when they get out into the "real world", learning how to write for cross-browser compatibility will be well within what they can learn on the job. Just like it's trivial to learn the other variants of SQL once you've grokked SQL itself.
If I hired someone to do data analysis, and they delivered accurate results using SQLite, I could not fault them since the deliverable is correct, whether they used SQLite or PG.
If I hired someone to build a web application, and then found out that it only worked in Chrome, that's a broken deliverable.
The specific tool (SQLite/PG/etc or Chrome/FF/Lynx/etc) used for creating each deliverable doesn't matter.
FeatureA works in Chrome/FF but looks weird in Safari and is outright broken in IE. 7.346/10?
For your FeatureA, I'd ignore IE (that's a whole college course in itself), but I'd grade that 9.8/10. -0.2 cause it looks weird in Safari.
Indeed, in my experience, the thought that this is how it's done/what analysts should do is a chief complaint about academic-esque analysts, because they can't actually implement anything or their solution is completely unworkable for real scale/tech environment/software stack.
But I would happily take a job where I can be paid to live in my ivory tower if you know a place that views that as the deliverable of analysis :p
Indeed, I think the comparison of someone delivering a webpage that doesn't run on other browsers is quite an apt analogy...
http://writing-skills.com/five-annoying-ways-use-ellipsis
http://www.holyfuckingshityouredumb.com/2010/02/02/the-dread...
I remember my first job not knowing the difference between #includes with brackets versus quotes, and where the IDE was searching for them. I was so pissed that my CS program didn't prepare me adequately for my first job. But the truth is this was one of thousands of "figure that shit out for yourself" that they glossed over in favor of "don't write n^n algorithms" and "cartesian products will be the death of you"; I'm currently taking over a code base where simple requests from an ORM are issuing thousands of queries.
So, please continue to teach SQL. As for browser coding, I learned all that on the job too, and it has no place in an academic setting. It's entirely dependent on feature needs, your target market, accessibility concerns, etc. To say that some new graduate should have all the skills necessary to navigate that minefield is madness.
I wonder how many people bitching about Chrome/Firefox/IE are ARIA compliant.
Damn. I would definitely not take that class.
I don't think it makes sense even then. The toolset is just way too complex both for teaching, and even for practical use for small projects.
I mean, when people are supposed to learn about things like HTTP, or the idea that server-side programming involves writing programs (the normal, regular kind) that output text - which will later be sent over the wire to the browser. Or even how the control flows through your application. You know, the basic, fundamental stuff - understanding of which is kind of required to do this job well. All the "we'll teach non-programmers coding with current framework du jour" courses and classes I've seen involve typing in magic invocation that generate shit ton of folders and files that nobody tells you what they do or - more importantly - why they're even there, and that's all for a "hello world" app.
I feel that all the current sexy web classes are aiming to produce code monkeys, not programmers. Which might be an effective way to get someone to bullshit their way into the first job - but I doubt it serves the students long term.
Personally, when I'm teaching someone server-side development, I start with simple programs that print stuff to terminal using the regular printf()/whatever calls, and then show them that websites is what you get when you send that text to a browser instead...
On that note, my experience has been that academic environment often does more damage than good to its students. It sometimes takes a monumental effort to make the graduates unlearn all the wrong things they learned in the academic environment before they can proceed further in their professional development without all that bad baggage that keeps pulling them in the wrong direction.
It's like children mistreated by their parents in their youth who will carry their psychological trauma from the childhood through the years and that would detrimentally affect their lives until they get some professional help from a skilled counselor.
Grandparent. Two posts up the hierarchy from the person who used the term "GP".
So this is a personal attack then. Frankly, I expected better from the HN community. It looked more evolved when I was just an occasional visitor prior to joining. Rather disappointing.
Anyway, I appreciate your viewpoint.
It seemed like a bit of a snipe maybe (or a joke where they forgot the smiley). I went back and re-read your original "GP" comment and it seemed like you had encountered a number of students who had trouble as a result of such teaching. The snipe implied your experience was just your own personal problem, which seems false in looking at it again. Relax, it's just people you don't know responding to someone they don't know.
Consider that as a lecturer every your word will carry a meaning. Even an innocuous remark may turn out to be something that will stick with one of your pupils for years and will lead them to make a sequence of wrong decisions that will eventually ruin their life.
Having access to younger minds and influencing their personal and professional development is not a joke. It's that kind of a job which if not done properly may potentially produce the next tyrant.
Generally speaking, a person only begins to reach psychological maturity at around 30 years of age. Until that time all incoming ideas generally fall on a fertile ground, as the person is not yet capable of telling bad apples from the good ones apart and can't always discard the wrong ideas. Sometimes it's exactly those ideas that take and derail somebody's life, unnoticeably, one step at a time.
I asked him why he wasn't just storing it in a hash table instead. His answer: "Because I sometimes need to iterate over it and get both the key and the value"
My brain had to sit and parse what he'd said for a few moments, before I realized what the heck he was talking about. In all of the data structure courses, he'd been taught "A hash table hashes the key, and stores the value in the corresponding slot". In that mental model, there's no way to retrieve the key, only to retrieve the value given the key.
I explained to him that real-world implementations do do that, but also store the key along-side the value, so that you can still iterate across it. You could see the look of amazement wash over him, and then he frustratingly declared "Why the hell didn't they mention that?!"
And yes, when you've got a complete understanding, it seems quite obvious that the key has to be stored with it. That's why I got it. He'd just learned it though, and there were still those gaps in his knowledge that he would have carried for a long time until someone else helped point out the missing piece (or he had decided to sit through and make sure he understood everything)
DISCLAIMER IAMA academic
How bad are we talking? My small bubble doesn't constitute mountains of data, but I have friends across the US from top-tier and not-so-top-tier schools that aren't damaged goods from academia.
Better yet, are you sure it's academia that screwed up or stubborn individuals who worship the ground their professors walk on? Those are the types of people that see academia as the end all, be all of what's right.
Not helped by lecturers who'd either always been lecturers or lecturers who'd left industry 15 years earlier (this was 2005 so they'd have left in 1990).
It was still a valuable experience since a lot of the other stuff was valid but I took all the programming stuff with a massive pinch of salt.
* Except Charlie, Charlie was an ex-telecomms C/Unix God he didn't like the way a lot of the programming stuff was taught but he did point us all to where we should be looking.
Exactly what I'm talking about. I've met graduates with very weird ideas about how to approach problem solving, and they would eventually confirm it had been taught to them at the university as the one true method of doing things. I remember that I myself had to "accept" some of the ideas being taught to us and recite them at the examination, pretending I agreed with them. Was the only way to get through some courses, and I recall many other students suffering from wrongful instruction. Some tried to argue with the academic staff and get those wrong things fixed, many of them would pay the price later by failing the examination. Apparently, those lecturers and professors didn't like their competence questioned.
About 15 years ago we had a new lecturer come to teach our group. I remember my thoughts after a couple of his lectures: this guy must have been thrown out of every shop that's out there. Was completely useless, even if senior by age (around 50 I believe). Tried to teach us about computers by reading aloud a book similar to the "Computers for dummies" series. Was not a good reader either. From the rumor that was circulating around he had a buddy in the hierarchy and used that to land a job at our university. Was truly pathetic.
As the common saying goes: Those who can do, do. Those who can't do, teach. Those who can't teach, manage.
Please, your analogy just doesn't make any sense. Just because someone is stubborn and doesn't want to relearn something doesn't make it professor fault. Nor does it mean he/she suffered child mistreatment. Parents beating their children leads to mental illnesses if the right genes are present. You are reducing child abuse to banality.
And I say this as a JavaScript dev.
The last point on the graph is for July which is very partial data, so it's probably best to ignore it.
Without that point, the trend seems to be upwards.
I wish it was dying down - I do not have much love for any part of that stack - but Google trends does not tell us that.
While Angular 1.x is still big, most new things are made with React. Mongo has gotten a ton of bad press over the last few years that it's hard to find positive things about it any more. This has more of an effect that you'd think. Express and Node are fine though.
What I mean is that Rails, though older, is still much more popular than MEAN.
Ironically my work place uses Express and Mongo, but React!
Very happy to see Mozilla raising awareness around this issue.
Personally, I have Firefox and Chrome open side by side for development. If those two work, Safari and Edge generally will too. I'll add IE specific rules/hacks afterward.
Your CUSTOMERS do not want to see "To use this site / app, stop using the web browser you've chosen to use (or your company has chosen for you) and go install this instead!"
Servo is a modern, high-performance browser engine designed for both application and embedded use.
Sponsored by Mozilla and written in the new systems programming language Rust, the Servo project aims to achieve better parallelism, security, modularity, and performance.
EDIT seeing Etzos's answer, I see better what you meant (de-facto "standardizing" around electron). positron looks like a better answer then. But long term, there's clear interest from Servo developers, see http://blog.servo.org/2015/05/01/forward/ and Ctrl+F for "Chromium Embedded Framework"
There's a talk about this at https://air.mozilla.org/bay-area-rust-meetup-february-2016/ (HN discussion: https://news.ycombinator.com/item?id=11175258)
browser.html is just the current "skin" for Servo.
- At 03:00: pcwalton explains how this experiment leans on the GPU-ization of our Intel CPUs since Haswell.
- At 14:50: slide says "WebRender supports OpenGL ES 2.1 and OpenGL 3.x"
- "Benchmarks" at 26:00 running on his macbook, which may fit what you are looking for
TL;DR, yes this early work is for "integrated graphics such as those in normal laptops". Or try it yourself on your laptop with a nightly build: http://blog.servo.org/2016/06/30/servo-nightlies/
Software rendering makes it choke sometimes (other times it works surprisingly smoothly, but it depends on the load), but that is to be expected :)
Positron is indeed the thing you are looking for.
Obviously Mozilla tried and failed with Firefox OS to play in that market at the mobile level.
It might be nice to see an Electron and/or Cordova-compatible view engine from Mozilla, but I'm not sure how much adoption or testing it would see unless it became the default (and even then you probably would have a bunch of web developers revert to Chrome views simply because its comfortable to what they know).
Even when it did work, working with XPCOM sucked.
Positron https://github.com/mozilla/positron is the new XULRunner. WIP, doesn't actually work yet. :-(
I'm aware there is a setting which has to do with subpixel rendering or whatever this is called, I tried switching it on and off for no perceivable visual change. So I gave up on Chrome.
IE also has had broken font rendering since they moved to subpixel rendering several years ago, but at least it draws fonts in a strong and dark fashion making them more readable than in Chrome.
Personally, I design for Firefox which I consider the gold standard of web development. Then, at some intervals I check if things are okay in IE and Chrome and usually they are fine. Chrome was useful once in helping me spot some sort of a race condition, its developer tools also conveniently allow you to quickly bypass caching for testing purposes, but other than that I found it useless and unusable.
Not a problem really. Never used Chrome before. Only installed it out of curiosity and also for testing purposes. Within the first day of using it on my development machine it became clear I wouldn't be using this piece of software in the future either.
I find the opposite: never could stand Firefox's font rendering -- and I've used the thing for years back in early 00s.
Yes I know about e10s and servo, but they aren't in the regular Firefox right now, and especially weren't several years ago when I was forced to change from Firefox to Chrome. I'd love to go back ...
Instead W3C should have chosen simpler primitives from which developers can build complicated (formatting) rules themselves.
Simpler primitives is also better from a security perspective.
By designing the web for average users instead of for developers, W3C has shot itself in the foot.
There are hundreds of web technologies, each with their own spec. None of which are actually that complicated if you read them.
> Simpler primitives ... formatting rules ... better from a security perspective.
So you mean CSS? What does that have to do with security?
> Designing the web for average users
Not sure what you're trying to say.
I agree with your overall point, but there is a reason sites like MDN exist. It's because some of the HTML/CSS/JS specs are crazy complicated, contain years and years of edge cases and bugs that have become standard, and are written in standard-eze (which is easy enough to read once you know it, but it can be a bit of a learning curve for someone who just wants to know the order of function parameters).
For a more nuanced understanding of browser behavior, you have to read the spec. Worked on a high performance network app, and I think I know the XHR spec by heart now.
I am curious, can you elaborate on this? :) What part of the performance related work involved peeking at the XHR spec so much?
The first part is true. There are indeed hundreds of web technologies. The second is absolutely false. A lot of them are (and have historically been) horribly complicated to implement, with lots of edge cases and strange interactions. In fact prominent web standards people have talked about such cases many times.
>So you mean CSS? What does that have to do with security?
No, he means "simpler primitives" across the board. And even CSS has to do with security (e.g. loading third party fonts, etc).
>>Designing the web for average users >Not sure what you're trying to say.
He's obviously tries to say that W3C et al piled features to please end users and satisfy end user needs, without giving much care about how to make them more consistent and coherent for web developers.
I'm not sure if end users are the people W3C is trying to satisfy. Browser vendors do enough of that. If anything, they're trying to satisfy media corporations that want DRM standards, or ad corporations that want pervasive tracking.
CSS, for one, is notorious for being complicated to understand, with tons of complex cases, especially in the layout department, where whole cottage industries of "tips" and "workarounds" for the simplest of stuff -- and I'm not talking browser incompatibilities -- thrived for decades (until, at least, flexbox and the like).
CSS needs to be replaced with a more capable scripting language, or at least one based on constraints but until that happens we are stuck with javascript.
All mediums have limitations.
CSS like any technology has its limits. In reality it is often good because it forces you to rethink what you're doing and reconsider whether you really need it. If we had a technology with unlimited capabilities, a lot of developers would be lost there forever and wouldn't be able to accomplish the larger goal completely lost in pursuing all the secondary details they could possibly imagine.
This kind of objection is totally missing the point.
And this isn't an argument that CSS doesn't have painful limits (it does) or even about what constitutes "enough" (within its limits, CSS offers enough possibilities that your own ideas of what the app "should" be like may be as much as a limit as the problems of CSS are).
The power of CSS is largely orthogonal to the underlying issue.
Ideally, your web site/app is still usable even with every last stylesheet completely ignored. It should work with Lynx, or with entirely non-visual user agents (screenreaders, search bots, Siri etc).
CSS should enhance via layout and other presentation rules where that's possible.
JS should provide more convenient application behavior where that's possible.
Instead, we've slipped into a space where the browser (and, frequently enough, one browser) is simply considered The VM That Lived™, just another runtime target. And that's a sign of its growing power, and that power isn't a bad thing because there are in fact some applications that don't fit the hypermedia model well and the browser's ability to play the just another runtime role opens a space for them. But the rush to get into that space is considerably overdone and apparently executed without a lot of awareness of what's been lost in moving that way.
People care about the downstream effects, they don't know the how or why, but they care.
I think this is particularly easy to forget for those of us living in tech hubs where everyone is using almost-new Macbook Pros and iPhone 6Ss.
I've never seen that client devs test their apps on lower end devices.
It is especially annoying if one claims to target a world audience, but expects them to have a +500$ phones and vast data subscriptions.
It seems that most 'western' sites have decided focus on people with desktops or +500$ phones and vast data subscriptions.
But this isn't really about supporting the world's Lynx users specifically. There's a reason I put a whole class of non-mainstream UAs in there (and in particular Siri, given how likely it is that entirely non-visual UAs are to become more mainstream at some point, perhaps soon, on top of the awareness that intermediary UAs like GoogleBot are of course ubiquitous and clearly important). And which UAs you try to support has a chicken and egg effect on which UAs get employed as intermediaries in accessing your site/app... and therefore which UAs you think you see using it. Usage follows accessibility perhaps even more surely than accomodation follows demand.
If that weren't enough, the decision to do the things that would mean that your site is usable in Lynx is not just a feature -- it's also a technical decision. And like other technical decisions (database, language, library, application architecture, idioms and patterns you use, and data serialization/interchange format... which is actually part of what this decision actually is), it matters to how well your product performs and how tractable it is to develop and maintain, as well as how widely it can be consumed.
If you're having to make cold hard decisions about ROI for features, chances are decent that you're better off for thinking about whether it works in Lynx and why, even if not one single user visits with that specific UA.
Or put differently, how would someone who can't use or even see your thing become your user?
People like yourself who want HTML fallbacks for everything have a fundamental misunderstanding about the nature of technology. At some point, it doesn't make sense for the biggest roads to have support for both cars and horse-drawn wagons.
Naturally horses will stumble on those, and people like you will say the others don't understand the nature of transportation and should get rid of their old horses and conventional cars.
But perhaps the problem is just with you and you newly designed fancy wheels.
If you want to be Cyber-Amish, that's absolutely your right, but much like the actual Amish, you will need to create your own society that serves your needs instead of trying to drag us back into the past with you.The Amish are not demanding that the International Space Station build a wooden module to accommodate them, nor do they buy plane tickets with the expectation that the pilot will still get them there but won't turn on the engine due to the religious beliefs of a tiny minority. Everyone has the right to unreasonable beliefs, but when they try to be smug and condescending about their own backwardness... yeah. You are the human equivalent of IE6.
Doesn't enterprise development stay within enterprises? As for the public facing web, even if the functionality requires Javascript, having it look like crap without Javascript does seem kind of lazy. I'm even for being lazy, I don't test everything and on every device, but when something is pointed out to me, at least I realize it's suboptimal, and don't rationalize regression into progress.
https://www.w3.org/wiki/Graceful_degradation_versus_progress...
Nothing really changed to make these best practices moot.
With rare exceptions, (such as supporting IE6 clones in China) there's no business case for doing so, so it isn't done.
W3 is great, but the very page that information on violates their standards--it's div soup and won't work screenreaders, there are images without descriptions, and even the sidebar is using javascript to open the menu and change classes when it could use pure HTML.
So yes, those best practices are obsolete when the people recommending them can't even be bothered to follow them on their own page.
It took several years for Firefox to catch up [1], and in that time, Chrome's market share exploded, and Chrome's underpinnings V8 and Webkit found new uses outside of Chrome. Furthermore, Firefox was late to Android, where the Android Browser, and later Chrome dominated.
Part of the problem is a website/webapp developed and debugged using Chrome will work with Firefox more often than not -- so some people have been cultured to not even bother checking it in Firefox. Ironically, if more things broke spectacularly, more people would test in another browser.
This PR effort is nice, but it won't reverse the tide on its own. However, once Servo is released and sees use in an embedded setting, developers will no longer be able to get by without developing (or testing) on a Mozilla engine.
[1] https://techcrunch.com/2013/03/18/mozilla-promises-to-improv...
I agree regarding the relative quality, but developer tools have no place in a default Firefox install; the whole point of Firefox was to streamline Mozilla by moving as much as possible to plugins. It's unfortunate that they've recently started bundling stuff again (developer tools, PDF reader, pocket (whatever that is), etc.).
> Chrome's underpinnings V8 and Webkit found new uses outside of Chrome
To be clear, WebKit came from Apple (as a fork of KDE's KHTML), so this wasn't really due to Chrome devs; they were just part of the WebKit bandwagon.
Gecko (Firefox's rendering engine) was already quite widespread before Chrome existed, e.g. it was/is used in Gnome and GTK programs (Epiphany for sure, and I assume other HTML-consuming applications like Liferea); similar to the way KHTML is used in KDE programs, although it was more painful to integrate. Some of these programs were cross platform, so may have had a reasonable userbase (I don't know; I've used Linux exclusively for about 15 years).
Programs based on the XUL toolkit presumably had a much larger installed base; e.g. Thunderbird, RSSOwl, Songbird, Miro, etc.
I didn't notice any conspicuous users of Mozilla's Javascript engine except for Gnome 3, although there were other JS engines around for those who wanted them (e.g. Rhino for JVM applications). V8 certainly opened the floodgates for embedding JS though; I think I first started treating JS as a serious language when the D8 repl came out; node.js followed quite soon after.
> Furthermore, Firefox was late to Android
Well, Chrome and Android are both Google projects; we could say that Chrome was late to FirefoxOS ;)
> Part of the problem is a website/webapp developed and debugged using Chrome will work with Firefox more often than not
This is tricky; when I was doing Web dev around that time, I'd do a quick checking in FF or Chrome (whichever I had open) to spot glaring problems, then switch to IE6 for my serious testing.
Completely agree! But the fact is, Google shipped them anyway, and so people began using them. Now Firefox has to live with the (unintended) consequence of their decision.
> Well, Chrome and Android are both Google projects; we could say that Chrome was late to FirefoxOS ;)
Sure, but marketshare! My point is, Mozilla is doubly disadvantaged by having to battle against a vertical entity (Google), AND also being very late to the game on that platform.
> I'd do a quick checking in FF or Chrome (whichever I had open) to spot glaring problems
I'm pretty sure this is what most people do, and that's the problem, because most of the danger is from stuff that's only subtly broken, that a quick look won't catch. The non-web world has automated tests to help with this. Maybe we need tests that can run inside the browser script engine to test our webapps.
They are working an another JS Debugger prototype with a different UI, see https://twitter.com/jlongster/status/737831071379783682 and https://github.com/jlongster/debugger.html
As a side note I wish that there was a link to "installing" tota11y near the top of that site.
Web working for everyone is easy, you just don't add crapton of pointless script bloat and use what's been working for decades - unless you need to do something special, but then you can't expect it to work for everyone.
There are exceptions where the style is part of the content, but those sites are rare.
On might have thought that the modern browsers would come with a sane css baseline, making simple html-sites with headers, paragraphs etc look at least as good as a typical Medium.com site (or indeed, like "reader mode") - rather than insisting that every single author add completely redundant reinvention of basic styling.
And then we start displaying ads. Maybe add analytics? Probably a developer with 300 stars implemented scrolling better in JS than the boring old native. Then you look at the calendar and it's already 2016.
http://bettermotherfuckingwebsite.com/ is really quite good, and it's a single 4KB request
http://thebestmotherfuckingwebsite.co/ is 19 requests, 1.37MB, and the appearance and functionality are terrible
Yeah it's what everyone does these days, but it's everything I hate about the "modern" websites:
* it shows no content without scrolling
* full background photos with no relationship to the content
* gratuitous transitions and layout changes
with only the most tenuous relationship to the content
There's also a link to http://evenbettermotherfucking.website/ which cuts the contrast too far, but otherwise is fine, and only 5KB.So really, the "best" variant is not "a bit further", it's a full hop/skip/jump into the deep-end of "modern" anti-patterns
body {
background-color: #EEEEEE; /* bonus */
color: #444;
font-size: 18px;
line-height: 1.6;
margin: 40px auto;
max-width: 650px;
padding: 0 10px;
}
h1, h2, h3 {
line-height: 1.2;
}Edit: Sorry for not being clear, I meant websites where SPAs are not required, and plain old websites would do. In other words, do users (unconsciously?) prefer eye-candy over readability?
[1]: The benefits which users will prefer "applications" for like progressive enhancement with offline first thingy isn't here yet, and virtually no one is using it in real life. So please don't count on that yet. [2]: http://adventurega.me/bootstrap/#
That said, I never liked web forums in general - I prefer mailing lists (and the D-lang forum, as far as I can figure out, support usenet access (is a web usenet front-end) - so it should be possible use a native client rather than a web gateway -- which might be better.
But as the web has shown again and again, colourful backgrounds, smilies and avatars wrapped up in sloppy html and css wins every time - multimedia wins every time. Eg: slack.
I think it should be perfectly viable, and desirable, to meet both: an open (preferably federated/self-hostable) (set of) protocol(s) - a web client - and native clients. For me, the fact that I don't really thing gmail is any good, is kind of the only nail the "web app" coffin needs -- if Google can't make something half-way ok to work with in terms of UX -- for something that's arguably simple -- what hope does anyone else have?
As for your real question: I think wikipedia is a great example of both "it can be simple" and "complex provides value". Reading wikipedia works fine from lynx or w3m - but editing, viewing revisions, etc - benefits a lot from a richer "web app" client. (I would still prefer to edit in vim, use "real" version control and push changes - and I'm not sure what options are there for wikipedia, the project, or mediawiki, the software, to do that via apis etc -- but I'm sure it'd be possible to hook something up if it's not already there - I haven't really looked).
There needs to be more work separating a critical base set of features from the rest. There needs to be more separation of the fancy from the functional (i.e. instead of requiring some bizarre mixture of JavaScript support in order for anything to look right, you have two choices: “turn on animation support” or “turn off animation support”, or some such division).
- Everything is UTF-8.
- All tags must balance and nest properly.
- Any syntax errors or JavaScript errors generate a visible error message for the user telling them the site is broken. Then everything renders in the default font with default formatting.
- When something goes wrong, the site gets a HTTP PUT request with an error report, so sites can tell this happened.
That last feature would make it possible to fix things.
This would make users not use the browser that implemented it.
> When something goes wrong, the site gets a HTTP PUT request with an error report, so sites can tell this happened.
If I bother to implement a handler just to get error reports from browsers, I surely took first the easier step to open my website in such a browser to check how it looks.
If some ad code or third-party Javascript library blows up, your site may never know.
>This would make users not use the browser that implemented it.
I think the idea behind this is that
1) the web developer will now the site is broken and
2) the client who is paying the web developer will know the site is broken so
3) the site will be fixed before it even gets to the end user.
We run a large grid of all different browsers, both old and new versions. You create a test where you verify certain aspects of your website and then run it on all these versions on our grid.
With the feedback we provide (screenshots/videos) you can fix any issues that may have come up across different browsers/versions.
Necessity is the mother of invention.
If developers catered to the other browsers like they used to we wouldn't have seen the dramatically improved compatibility we now have.
Really? There's more than 35 millions internet users with vision impairment? The previous section says there are 8 million people with vision impairment in the USA.
[1]- https://nfb.org/blindness-statistics [2] - http://www.afb.org/info/blindness-statistics/adults/facts-an...
The graph says there are as many vision-impaired American internet users as there Canadian internet users - not the entire population - around 20-25 millions (the graph is hard to read). I'm sceptical of that number because it suggests ~10% of the USA is vision impaired, seems too high.
Anyway the only reason I care is that I'm Canadian ;)
My website has a position:fixed canvas area that works in every browser except Firefox. For firefox I have to re-apply the fixed property regularly for it to sick, otherwise the canvas scrolls with the rest of the interface.
The bug is logged with Mozilla, but nobody over there cares. If they don't care, why should I care? https://bugzilla.mozilla.org/show_bug.cgi?id=1258911
Competition in the software space is what encourages innovation to happen. Problems being tackled in different ways by different groups often leads to the best solution being found among them.
More competition is ALWAYS a good thing. It prevents vendor lockin, prevents bugs from becoming defacto standards, and prevents developers trying to "optimize" for the platform and instead has the platform try to optimize for developers (that was a weird way to say that, but I mean things like avoiding "performance bottlenecks in one engine" from becoming "performance bottlenecks in javascript")
A good example of that last one is try/catch blocks. In V8 they trigger a deopt for the whole function making it run slower, in most other engines it doesn't. Because of V8's large usage, many people avoid try/catch in performant code to avoid that penalty, even though it's just an issue with v8's implementation. And because of that you start seeing "avoid try/catch" as a general performance "tip" for javascript.
See hardware architectures -> operating systems -> browser engines -> frameworks -> services etc. The first two are effectively fully commoditized, few people get excited about them anymore, even as Linux development is more active than ever. Similarly the browser engine is now entering the unification phase, with Chromium swallowing competitors. Meanwhile the battle to define how higher level components are created on top of the browser is in full swing with rapid innovation.
As Google becomes more of a looming threat on privacy, the idea that they win in the mobile space and the browser space, and we suggest that nobody should compete with them is a terrifying situation.
Can we just let these older browsers die out by not developing for them? Surely the users using them will update once every website they visit is broken.
Personally I only add the html5shiv and make HTML5 elements display block.
Where does this figure come from?
I work for a large company. Opposite of agile. A huge chunk of the people who work here are non-technical. Most machines are heavily locked down and users do not have permission to install their own applications. Upgrades (like changing versions of the browser) are rolled out from our Information Services department. I imagine there are many many "large corporate" environments around the world which have similar application policies to us.
The transition to IE 11 was was not all that smooth a large number of internal sites broke (including our intranet which runs Microsoft's own SharePoint product). Even today some months after upgrade some sites still behave oddly and you have to go through the enable/disable "Compatibility Mode" dance to get some sites to wok correctly.
> The 2.07% of users currently running IE8 are on a browser that Microsoft no longer patches
1) I want innovation. I want new features for the web. I don't want innovation to be hampered by the priority of making features cross-browser compatible.
2) I want cross-browser compatibility. I don't want to have to develop N apps (N representing the total # of browsers my website / app supports).
Personally I don't care if X browser has feature Y. As a developer, if I find a feature I want to program into my website / application, I don't want to have to wait for N-1 other browsers to implement this feature before I start using it.
I want to be able to "declare" or send a "hint" in my HTTP headers (or meta tags?) telling the browser that my site is supported by X,Y,Z browser engines. Each browser would implement a bare bones interface that decouples the "chrome" of the browser window from the "application" window, and makes the application window interchangeable (plug n play) with other browser engines. This would make browser engines interchangeable without requiring a user to close one browser and open another.
Granted, if a user doesn't have browser engine 'X', and refuses to download / install it, that's my loss as a developer / website owner. Or of course I could write some graceful degradation into my app / website. Already I hear some folks saying "but this is what we do now". Not quite. It's a subtle but I think important difference. Most people are willing to install (or already have installed) all major browsers on their computers. The point is, currently we must develop for / test for all major browsers to get the desired reach (or to prevent a user from having to switch browsers). This alternative approach moves the needle when a user installs a browser, not when they use the browser. So if there are a substantial # of people who have both Chrome / Firefox installed on their computers, but 'X'% of those people regularly use Firefox, I can still develop ONLY for Chrome and still get the desired reach into the world's population who have internet access.
There are of course going to be pros / cons no matter what you do, but given the above priorities, and the predispositions of all actors involved (web browser developers, web browser users, website / web app developers) I really think this is going to be the most scalable, least intrusive / obstructive path forward.
I agree with a lot of what you say but I won't upvote a comment that compares bad practices in academia to child abuse.
For the kids that are beaten, burned, neglected, abused etc: please change that.
That's just hilarious. For as long as I'm saying things that conform with the majority's opinion, I will be upvoted. But when a have a different opinion, then I will be downvoted until I censor myself back into conformity. Is that how things work here, on Hacker News?
Have you by any chance heard of concepts like pluralism of opinions, freedom of expression and that sort of things? I'm not sure where you come from, but in some parts of the world people are freely able to have a civilized discussion around complex and sometimes controversial matters. You may consider going abroad, living there for a while and learning how a liberal society works. Will be a great help to you.
BTW: I did not downvote you.
I can't really crop my ideas if some parts of them are not well received. They come as packages, I either tell what's truly on my mind regarding some matter or I don't tell it at all.
If I can't say what I mean, then I can never mean what I say. And then the entire dialogue becomes meaningless.
Not much better in Chrome where the body of the article is not-really-centre-aligned.
In IE the search box is also of insufficient height, meaning that lower portion of the watermark text is not visible.
Maybe the author was being ironic.
I don't see any alignment issues at all actually; the text is supposed to sit just to the left of the center of the page.
Now what we have got is again proprietary code, app just for smartphones, and one browser taking over all the others. Bravo. Great progress here...
I wish the web could stay open.
I use the exact same strategy you do: if the feature doesn't work in all browsers, it's not ready yet and I don't use it. It can be painful, but I will NEVER AGAIN use browser-specific tricks or hacks because I remember a time when we pretty-much had to.
> You have the power
hehe if only...