Tuesday, January 12, 2016

Crossrider no longer recommended for cross-browser extensions, sadly


Update (2016-09-26): 8 months later the Crossrider Extension Platform is shutting down.

Some time ago, I shared about developing cross-browser extensions using JavaScript with Crossrider framework, and even investigated unit testing these extensions. These articles are quite popular, so I ought to provide an update on where Crossrider stands.

It isn't doing very well, unfortunately.

I still think it is a solid framework with rich API. It is clear the team spent countless hours ironing out the quirks of every supported browser, and presented us with a unified development environment. I still applaud Crossrider's support team for their responsiveness and helpfulness. Thing is… browsers change, while Crossrider fails to keep up.

Even when I started studying the framework almost two years ago, it seemed to be in a “feature complete” state, with most visible work done by the support team. There was no clear roadmap for future enhancements.

Not much have changed. My best guess is that their development team was dramatically reduced, rerouted to another project, or both. Probably a project with more clear and direct financial gain—selling advertisements for extensions is unlikely to fly unless you work very closely with extension developers, to ensure you have lots of popular and successful extensions to sell ads for. I can't blame them—keeping a good development team afloat (looking at their framework I can say that they are a good team) takes a steady income.

Enough of speculation. Here's what I've seen happen with different browsers in regards to Crossrider.

Firefox

Last March I wrote:
…One significant weakness is that currently it isn't possible to publish Crossrider extensions to Mozilla Addon Directory. which is a huge shame. Extensions fail automatic checks performed on submission, and, having gone through this process myself, I see that the complaints aren't about my code — they are about the code provided as part of Crossrider framework, and thus out of our control. Crossrider team is aware of this, yet it is hard to say whether any progress is being worked on in this regard.
No progress here. AMO (addons.mozilla.org) still does not allow uploading Crossrider extensions. I gather from several support threads that Mozilla's validation algorithms take issue with the way Crossrider wrapper is built. Changing it would require full rework, so they tried to “talk” to Mozilla, probably failing to impress them. Too bad.

That's not all, though.

In order to increase addon security for end users, Mozilla is introducing a signing process. In Firefox vv.42 and 43 it was just a warning, while v.44, slated for January 26th, 2016, will simply disallow all unsigned extensions. This may be somewhat postponed, yet looks inevitable.

Crossrider extensions fail the signing process, even if you sign it as an “unlisted” addon, which skips most checks required for AMO. You can check the relevant support thread. Response from the team is that they cannot do anything about it. Sigh.

Thus for Firefox I recommend writing a native extension instead of using Crossrider.

This is especially valid now that Mozilla started active implementation of WebExtensions API, which is planned to be compatible with Chrome's extension API. It is not fully implemented yet, but working with Firefox Developer Edition / Nightly versions I can confirm that it has enough features in place to allow migrating from Crossrider, at least for our extension.

WebExtension support is planned for Firefox 45, expected around end of March 2016. Great news if you'd like to start developing Firefox extensions—your code will also work on Chrome (with minor tweaks)

Of course, Mozilla also announced plans to phase out their old extension API, which caused much weeping and gnashing of teeth in the community. Let's hope this doesn't trigger such a decline in the browser's popularity that a year from now Firefox won't matter anymore, WebExtensions or not.

It is a nice browser, especially from development point of view—still the best to develop, test and debug extensions on and for.

Chrome

Not all is well in the state of Google, either. For Crossrider, that is.

It isn't bad yet, the extensions are fully supported and work well, but Google constantly “enhances” extension security and validation, so at one point last autumn their new algorithm axed all of Crossrider extensions.

Ouch. You can almost hear the cries for mercy in the support thread.

Luckily, contacting Google support actually helped (I was amazed), they reinstated the extensions. Yet this is a sign that something in the Crossrider wrapper doesn't sit well with Google's logic either. It wouldn't worry me if the Crossrider development team was actively (and visibly) doing something about it, but, as it stands, the situation can only get worse as Chrome moves on and Crossrider doesn't.

I admit, I am pessimistic here. One [solved] problem is not the end of the world. But I am pessimistic in a practical way, since we have a solution. If you use WebExtensions API (Chrome's link this time), then you can support two browsers—Chrome and Firefox,—all with one codebase.

So for Chrome, while there isn't much urgency, I recommend to plan your migration to native API, while keeping one eye on Mozilla's progress.

Safari

This browser is… limited. Looks like the only reason people use it is because “it came with the OS” (much like IE). It is not a healthy situation for any software, and it shows. I can only imagine the lengths the Crossrider development team went to support it, with some of framework's features still marked as “absent on Safari”.

Yet, surprisingly, Apple's browser still lives most peacefully with Crossrider-based extensions. Perhaps this is the blessing of stagnation—it doesn't change much (even with new extension requirements that came with El Capitan), so Crossrider continues to work with it like nothing ever happened.

You need to be aware of possible issues with publishing to the Apple Extension Directory, yet those are usually solved fairly quickly with aid of Crossrider support team.

So, hey, Crossider is still good for Safari!… I wonder if anyone cares, though.

Internet Explorer

Quote from last March:
Theoretically, the extension should work, and for simpler extensions it should be OK to test and claim IE support. In our case, though, it is an uphill battle to try to make it work. Since so few people use it, we decided to leave working out the “IE wrinkles” as lower priority, and then it turned out that the Internet Explorer extension runs in some limited JS context, that even some simplest JavaScript functions fail to run (e.g. .indexOf, .forEach etc). The error reporting is almost absent, too, so even debugging these issues means placing tons of console.log statements around the code, trying to guess where it fails now. On top of this, updating an extension once you change something in the code doesn't always work, sometimes requiring going to Control Panel / Add & Remove Programs, and even that is flaky.
And that's all I can say. We simply didn't claim IE support after those initial tests, as it would be lots of pain for our customers and for our support, so I can't tell you one way or the other: whether the situation has improved or (gasp!) got worse.

Edge is not supported, and no current plans to implement it. Not surprised.

Conclusion

Software development is like that. We produce perishable high-maintenance goods.

That cute Tetris clone you wrote in Turbo Pascal 6.0 for Windows 3.11? If you didn't stay on top of things, it probably won't run easily today. The site you wrote in Notepad in 1995, making your first steps in HTML? Likely beyond repair, with GeoCities dead, domain name unpaid for decades, and even if it worked—it would look bad on today's browsers, since <blink> is no longer supported.

Crossrider is a nice framework, and a pleasant team to interact with, so I am thankful for all their help. They saved me tens and hundreds of hours to support three browsers. If they manage a comeback—I'll be happy for them! Yet currently, for technical, financial, political or personal reasons, the framework is gradually sliding into history, and it is time to start looking for alternative solutions, so that we can keep our tasks—done, customers—happy, and children—fed.

4 comments:

  1. Thank you so much for this update. Since crossrider is now not really a viable option anymore, do you have any comments on alternatives like kangoextensions.com etc.? I found little to no current activity on that project or other projects that relate to cross browser extension development. Do you have any more insights or are we back to per browser development until WebExtensions are adopted across browsers?

    ReplyDelete
    Replies
    1. Hi Nikolas! Yes, I would not waste time with crossbrowser stuff, since WebExtensions are already supported on two biggest ones (Chrome / Firefox), and Safari / IE were too fiddly even with Crossrider, so for them "crossbrowser" solutions are not helping much.

      Delete
    2. Thank you for that. This would probably make a good conclusion for your post and help others make a decision which route to go.

      Delete
    3. You're right, I need to update it now that FF formally supports WebExtensions. Thank you!

      Delete