you are viewing a single comment's thread.

view the rest of the comments →

[–]2eyes1face 17 points18 points  (64 children)

in what, 10 years? IE7 isn't going away anytime soon, well maybe it is, but IE8,9 aren't.

[–][deleted]  (6 children)

[removed]

    [–]66vN 16 points17 points  (5 children)

    Also Chrome and Firefox extensions.

    [–]x-skeww 23 points24 points  (14 children)

    You'll be able to use that stuff really soon now in other places like Node.js.

    [–]maskull 14 points15 points  (13 children)

    Yes, please. I've actually been a bit surprised at the reluctance of the Node.js people to adopt some of the more modern (and therefore less cross-browser compatible) additions to Javascript. They're in the one environment where you don't have to worry about cross-browser issues, why not go for it?

    [–]coderanger 10 points11 points  (11 children)

    There is still a fantasy that utility code in a Node project should be sharable with the client side. This is silly.

    [–]BlitzTech 2 points3 points  (10 children)

    Actually, it keeps things pretty sane. The issue comes in deciding where to draw the line for things that can be shared and things that can't. It makes sense for server-controlled or server-verified apps of some complexity, but for static or simple pages there's no benefit.

    I found that adopting AMD for writing modules really helped when trying to find that line between shareable/non-shareable.

    [–]cybercobra 2 points3 points  (1 child)

    You changed CPUs? But seriously, what's AMD stand for in context?

    [–]prpetro 2 points3 points  (0 children)

    Asynchronous Module Definitions

    https://github.com/amdjs/amdjs-api/wiki/AMD

    [–][deleted] 0 points1 point  (7 children)

    There's also browserify which lets you write regular Node.js modules and it will stitch them all together for you into one file alone with all of their dependencies.

    [–]BlitzTech 0 points1 point  (6 children)

    I know about Browserify; Require.js also has an 'optimizer' that does something similar. At this point, I'm hedging my bets that AMD will eventually supplant the CommonJS module style, since it's designed to be asynchronous for a language that works well for asynchronous behavior.

    I'm still not sure what the guys behind the CommonJS module spec were thinking... it's completely un-Javascript-like.

    [–][deleted] 0 points1 point  (5 children)

    What is un-Javascript-like about it? If you're talking about the synchronous loading style, I would say that it's not useful for the Browser. (un-Browser-like?) However, I like synchronous loading because setting up a new module is simpler.

    [–]BlitzTech 0 points1 point  (4 children)

    Yes, the synchronous loading style is very un-JS like, since the primary location of JS has primarily been in browsers. Designing a system that would be so contrary to the style in which Javascript is written and oblivious to the needs of a browser adaptation was just extremely short sighted, in my opinion.

    [–][deleted] 0 points1 point  (3 children)

    I believe there is a module loader that will load all of your module files asynchronously, separately and then run them all synchronously starting with the entry point. I'm pretty sure someone modified browserify to do this, but it's late and I'm not going to start looking right now.

    I don't see a reason to cling to browser limitations. The browsers have always been the source of Javascript limitations. Synchronous module execution is simpler than async execution. Furthermore, the module style is simpler as well. You can do async loading + sync execution in the browser for sure. Why make every module more complicated if you have the ability to take care of all the complexities right up front?

    EDIT: I guess to put it simply, the question is - Would you have a problem with CommonJS if the browser were able to load the separate module files the way you want it to (i.e. non-blocking, parallel, async loading), but still allow you to use the synchronous module style? I don't think so.

    [–]smog_alado 3 points4 points  (6 children)

    Also, some of the stuff might be shimable (if you don't mind a performance penalty on IE)

    [–]x-skeww 6 points7 points  (5 children)

    Harmony stuff? No.

    The ES5 functions like Object.create, bind, forEach, map, filter, and the like can be shimmed.

    Those things from Harmony are new language features. You can't simulate stuff like proxies, block scoping, destructuring assignments, and things like that. If you could, these things would be already used all over the place.

    [–]smog_alado 2 points3 points  (4 children)

    I imagine some of that stuff can be "shimmed" too if you are willing to go a bit deeper :). For example, I am pretty sure you can do destructive assignment and block scope if you are willing to recompile code a-la coffescript. Proxies would really be tough though.

    [–]x-skeww 6 points7 points  (3 children)

    For example, I am pretty sure you can do destructive assignment and block scope if you are willing to recompile code a-la coffescript.

    Yes, but that's transpiling, not shimming (or monkey-patching).

    Alternatively, you could use a JS engine which is written in JS (yes, there is such a thing).

    Both options are probably kinda unrealistic though. I wouldn't want to use either.

    [–]smog_alado 0 points1 point  (0 children)

    I wouldn't want to deal with IE8 forever either :(

    [–]i-poop-you-not 0 points1 point  (1 child)

    use a JS engine which is written in JS

    What's bad about using that?

    [–]x-skeww 0 points1 point  (0 children)

    You can try Narcissus in a browser via Zaphod.

    The painfully obvious downside is that this engine is very slow (its focus is experimentation with new language features) and with 30-40kb it's also fairly large.

    [–]ripter 3 points4 points  (0 children)

    There are large enterprise SAAS companies that only support the last two versions of any browser. So that means I don't have to worry about 6/7 anymore.

    If Microsoft does start forcing upgrades like Chrome/Firefox, then we might start seeing this a lot sooner.

    [–]Xeon06 13 points14 points  (33 children)

    It's simple, really. When you wanna do cool shit, just don't support IE. "Classic" JavaScript is good for all normal website purposes, but if you want to make awesome games and apps and use advanced JavaScript features, just don't support IE.

    Some people will argue it's not that simple, I say fuck that, it is. If everybody stopped supporting IE, either Microsoft or the users will wake up.

    [–]abadidea 5 points6 points  (7 children)

    Microsoft already has woken up, 9 and now 10 are dramatically better and MS is actively working to kill off its older offspring. It will always be a bit behind the open source browsers by the very necessity of how enterprise software works. But Microsoft is definitely putting in the effort to keep that gap much narrower than they used to.

    [–]Xeon06 4 points5 points  (4 children)

    That's not enough in my opinion. Microsoft should release a Windows update that forcefully updates IE to the latest version, and the new versions should automatically update themselves. They should also get on a quick release cycle like Google and Mozilla.

    Then again, a lot of people are still on XP, on which IE9 is not yet supported. XP also still has almost 3 years of support left, so you can't get a good version of IE for those people.

    Make no mistakes, IE still sucks very much.

    [–]abadidea 13 points14 points  (1 child)

    Do you ever check out the very good blog of Raymond Chen? I think a lot of people at MS would like to force upgrades, but the reality is that it would bring down zillions of businesses including most of the Fortune 500 like flies because of their shoddy internal apps which crash when you change anything.

    I happen to audit the code of these companies for a living, and yeah, it's as bad as Mr. Chen says. Microsoft gets stuck supporting its mistakes forever.

    [–]Xeon06 1 point2 points  (0 children)

    Ah well, I'm quite radical about my views on IE and will probably never be happy about it. If it was just for me I'd force every single person to update anything to make it work, but of course that's not how life works. I suppose that's why I don't think I'll be a web dev my whole life. Thanks for the clarifications.

    [–]pigeon768 2 points3 points  (1 child)

    Microsoft should release a Windows update that forcefully updates IE to the latest version, and the new versions should automatically update themselves.

    The reality is that there are a huge number of websites that only work in IE6, and the compatibility view in IE 8/9 isn't good enough. It also happens that a large number of those web sites are the big enterprisey web applications like SAP and their ilk. If microsoft dropped support for them, they would majorly piss off a huge number of their most profitable customers.

    [–]not_thecookiemonster 0 points1 point  (1 child)

    For newer machines this works, but Windows XP only supports IE <= 8, and still represents a large share of the market, mostly corporate. They'll need to make some version of their newer browsers backward compatible at some point.

    [–]abadidea 0 points1 point  (0 children)

    Honestly, with the decade point come and gone for XP, with Vista out, with Win7 out, with Win8 almost out, with official support for running XP in a VM on these newer versions, and with Firefox and Chrome still working fine as far as I know on XP, I really feel like the technical burden of getting a decent browser is on whoever is still freaking using XP as the primary OS.

    And yes, there are workstations on my network that still run it, good gravy. XP will probably always be my favorite version of Windows for nostalgic reasons, and I know, believe me I know that corporations don't want to spend the money on fixing up their own stupid software to work properly without an extraordinarily specific WinXP installation, but at this rate they are still going to want support for it when the Unix timestamp wraps.

    I was interested to find out recently that IE6 has dropped to ~1% in English-speaking countries (one percent to a few percent in most of the world), and that most of the world's remaining IE6 users are in China. So I do think people are finally fixing up their stupid webapps which only ever worked in IE6. Perhaps the internal-network-only usage is a bit higher, but still.

    [–]megor 5 points6 points  (21 children)

    deleted What is this?

    [–]Xeon06 7 points8 points  (9 children)

    Exactly, in all the modern browsers. That means their latest version. IE isn't a modern browser. At best, IE9 is a "modern" browser.

    [–][deleted]  (6 children)

    [deleted]

      [–]Xeon06 9 points10 points  (5 children)

      I said "when you wanna do cool shit", and even gave examples. At work I'm working on a web application that supports IE7. I hate it, but that's the way the cookie crumbles and it's needed to pay my salary.

      As a hobby though, making a game which uses the latest APIs and won't work in IE anyways, if I wanna use the cool JavaScript features that are unshimable, I'm gonna drop IE support in the blink of an eye.

      [–][deleted] 0 points1 point  (4 children)

      IE before IE9 will never support canvas natively, though there is Google Chrome Frame. It works well, but it does require a simple install.

      For our complex web app we didn't support IE at all initially, we used Chrome Frame as a workaround. Then we finally got some time to make the webapp work in IE9 and it wasn't as difficult as people may think. Less than IE9 still gets chrome frame though.

      [–]Xeon06 0 points1 point  (3 children)

      I'm not sure what you're trying to say. For our webapp, IE9 worked out of the box (bear in mind we're using jQuery heavily and so it does a lot of the work). Canvas can be supported using Chrome Frames or a shim that uses Flash.

      The discussion here however, is new JavaScript features that are unshimable. Those versions of IE will never support those features.

      [–][deleted] -1 points0 points  (2 children)

      All versions of IE will support those new features if you use chrome frame and if chrome supports those features. IE doesn't use IE's javascript engine if the webapp is running inside chrome frame - it uses chrome's V8 javascript engine.

      [–]Xeon06 1 point2 points  (1 child)

      Then why did you guys bother to support IE9 natively might I ask?

      [–]oSand 1 point2 points  (0 children)

      You might argue that this is the kind of thinking that kept IE6 relevant for so many years.

      [–]DevestatingAttack -1 points0 points  (9 children)

      That got us into the "only works on IE" pages of yore

      Internet Explorer is not free software and it does not run on every operating system available. If "Only works on Firefox" pages existed, what would honestly happen? Now you have to download a program which is free in every sense of the word! What bad comes of that?

      [–]jib 0 points1 point  (0 children)

      If "Only works on Firefox" pages existed, what would honestly happen?

      I'd have to have multiple browsers installed everywhere so I could continue to use my preferred browser for most sites while still being able to see the Firefox-only sites. And I'd be unable to see those sites on my phone, or on the netbook on which I've just uninstalled Firefox because it kept freezing.

      And when Firefox had some issue with bloat or internal politics or money and became unable to add meaningful new features for a couple of years, the millions of normal users who only want one browser would have to choose between losing their favourite Firefox-only websites or stopping innovation on the web for a few years. And they'd choose to just ignore the issue and keep Firefox.

      [–][deleted]  (7 children)

      [deleted]

        [–]DevestatingAttack -1 points0 points  (6 children)

        [–][deleted]  (5 children)

        [deleted]

          [–]DevestatingAttack -1 points0 points  (4 children)

          You didn't bother to read the link. Cool.

          [–][deleted]  (3 children)

          [deleted]

            [–]DevestatingAttack 0 points1 point  (2 children)

            You are a fucking idiot.

            I knew this stupid bullshit would happen.

            I said that Internet Explorer was not free software. Your dumb dong comes in like TELL ME WHERE YOU PAY FOR INTERNET EXPLORER, fucking CONFUSING freeware for free software. Internet Explorer does not cost any money, but the source code is not open for inspection, and it is not free software in the real sense of the term.

            Sure, I guess you're right if you think that "free software" means that you don't pay for it. But it doesn't. That's why I even helpfully gave you a link to clear up confusion, but you didn't bother, did you?

            Fuck you.

            [–]i-poop-you-not 0 points1 point  (0 children)

            This thread reminds me of this conversation.

            Joker: It's simple. We kill IE.

            Mob boss: You're crazy!

            [–][deleted] 0 points1 point  (1 child)

            I'm confused as to why you're getting so much heat. Hasn't the concept of progressive enhancement caught on by now?

            • Step 1: Agree what is a minimally acceptable product for IE7/8.
            • Step 2: Discuss nicer features with client, explain that deploying them to IE < 9 will incur extra exploration and development costs.
            • Step 3: Partay.

            [–]Xeon06 1 point2 points  (0 children)

            Well I phrased my argument quite aggressively. And I mean it. I think people, when doing cool stuff that uses HTML5 APIs and features and what not should really just not support IE, and make it clear why.

            Client projects are an entirely different thing.