What are the difference between Chrome, Canary and Chromium? - google-chrome

Here's how I understand the google browser differences:
Chrome - Production release (the one we're currently using, stable version)
Canary - Test release before new production release (Version prior to Chrome release)
Chromium - Dev release and available in Linux (maintained by Ubuntu developers, no auto-update of version - user triggered)
Are there any other points that I missed? And in terms of development, is there any other consideration if I use Chromium and Canary rather than Chrome? Like caching, compatibility, cookie, performance and etc. (bugs?)

Your interpretation is correct
Canary is basically a (near) nightly release built from the current tip of tree of the Chrome repo. It's the bleeding edge of development and so you should expect crashes and bugs but it's the quickest way to test recent changes to chrome. (Aside from building ToT yourself)
Aside from Canary, there's also the Dev channel which is a slightly longer development release, usually about weekly, but still built from the bleeding edge tip-of-tree. Beta channel is a long running branch that's the upcoming release and is generally quite stable/bug free.
The order from "freshness" to "stable": Canary -> Dev -> Beta -> Stable
Chromium is the name of the open-source project from which Chrome is built. A Chromium build is basically equivalent to Chrome but doesn't include proprietary bits (Flash plugin, codecs, etc) or official Google branding (icons, etc).
Compatibility in terms of web-facing APIs between the different versions should be essentially the same except, of course, for intended upcoming changes. In general, changes that occur in Canary, Dev, and especially Beta, are intended to make it to Stable channel so it's a good idea to test your apps against Beta to make sure your app will continue to function as expected once the Beta is promoted to Stable. You can find upcoming changes to Web APIs at ChromeStatus
In Canary and Dev, you're more likely to run into unintentional bugs that creep in during development. If you'd like to help Chrome development you can file bugs for these at the Chromium bug tracker (use this for bugs you find in Stable/Beta channel too!)
In terms of performance, a hand-built Chromium will depend on who built it and with what flags. The performance between Canary/Dev/Beta/Stable should be comparable and indicative of the final stable release.

Related

I can't find chromium build version for stable chrome

I want to use stable chrome version at pptr, so i search https://omahaproxy.appspot.com/ for finding chromium build.
but build 902210 is not in chromium browser snapshot( https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html)
is there something another way to find stable chromium build?
I had the same issue so here is what I found in case it helps:
On https://www.chromium.org/getting-involved/download-chromium, it is written "you can get a build of Chromium 44.x which should mostly match the stable release" and "sometimes you may have to decrement the commit number until you find one".
I searched the latest version number (which is currently 94.0.4606.81) on https://omahaproxy.appspot.com/ but cannot find its build number (911515, known as Branch Base Position on the previous link) on https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/.
So I decremented the number until I find one matching, like explained previously and I found 911494: https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/911494/
When I downloaded this Chromium version, in "About Chromium", it displayed "Version 94.0.4606.0 (Developer Build) (64-bit)". Which almost matches 94.0.4606.81.
On https://githubmemory.com/repo/Bugazelle/chromium-all-old-stable-versions/issues/2, I read "You cannot install a stable Chromium version downloaded from chromium-browser-snapshots because there are absolutely no Chromium stable versions there." and "It is recommended to compile Chromium yourself to have a similar stable version... or find third-parties builds.".
Linux distributions like Ubuntu provide a stable Chromium package. Otherwise if we don't want to compile the stable version, we can get the closest developer version like explained previously.

Chrome Canary - Where's the feature list or changelog?

I understand what Canary is. But it's pretty useless if you don't know what beta features are available. So is there a place where this information can be found? I've been googling but can't find anything.
Chrome Canary isn't the Chrome Beta, it's built daily and is the bleeding edge of Chromium development. Writing digested changelogs isn't feasible for daily builds.
You can have a look at every change here:
https://chromium.googlesource.com/chromium/src/
click on the current tag, e.g. 62.0.3168.0 and then on log.
For Chrome Beta, the Chromium Blog is a good resource:
https://blog.chromium.org/
e.g. for Chrome 60 Beta:
https://blog.chromium.org/2017/06/chrome-60-beta-paint-timing-api-css.html
Releases (Stable, Dev, Beta) in more detail:
https://chromereleases.googleblog.com/

Why does developing a firefox extension involve installing an sdk?

I'm currently trying to port a Chrome extension into a Firefox add-on, but the development process is incredibly different, and the part in particular that I find confusing is why I should have to install an SDK.
How are these two so different? Do Firefox add-ons run faster because they're precompiled? Why aren't firefox add-ons just HTML and javascript like (some) Chrome ones?
What's going on behind the scenes here that involves using so much command line just to get a firefox addon started?
The SDK exists to help developers build their extentions, but if you don't want to use it there is also a way.
You can use web extensions which as the wiki says have their benefits:
Porting add-ons to and from other browsers should be easier.
Reviewing add-ons for addons.mozilla.org should be easier.
WebExtensions must be compatible with multiprocess Firefox (Electrolysis).
Changes to Firefox's internal code should be less likely to break add-ons.
WebExtensions should be easier to use than the existing Firefox XPCOM/XUL APIs.
I don't have personal experience with web extension but it seems to be promising for someone who does not want to use SDK and the benefits ofthe web extensions are that they support an enrich manifest document and you only need to zip your extension and run it.
There are some examples on github to get started.

What are the functional differences between NW.js, Brackets-Shell and Electron?

Now that TideSDK is effectively dead, I've been looking into alternative 'wrappers' to run HTML/CSS/JS applications as stand-alone desktop applications. The three viable options I have run across so far, are NW.js (formerly node-webkit), brackets-shell, and Electron (formerly atom-shell).
The problem is that there does not appear to be a sufficiently complete comparison between the three in terms of feature set, compatibility, etc. I'm hoping to turn this into a more-or-less canonical thread on the (objective) differences between the three, in particular regarding:
Platform support; operating systems, dependencies, etc.
Language feature support, as far as HTML5, CSS3 and JavaScript are concerned. Think things like "does HTML5 video work, and if yes, what codecs are available?"
Non-standard extra features, such as tray icons, popup notifications, and OS-rendered menu bars.
Extensibility; eg. ability to 'plug in' native code, talk to Node.js, and so on.
Architecture; in particular the architectural differences that affect daily usage as a developer.
Debugging; included development tools, compatibility with commonly used tools like node-inspector, etc.
... and so on.
What are the objective, technical differences that matter when making a choice between them as an application developer?
I did similar research about two months ago, and in the end I went with node-webkit. The biggest upside on node-webkit is node.js and npm. The package management of npm is really nice, and node has well done filesystem access.
Brackets-shell looked interesting, but other than a nice IDE I didn't really get what made this one as good or better than the rest. They are very clear that "The brackets-shell is only maintained for use by the Brackets project ", that screams run away to me.
https://github.com/adobe/brackets-shell#overview
Atom-shell seems to be recently active, but it seems much like brackets in that they are really writing and editor/IDE that just happens to be attached to a webkit runtime. It also is built on top of node.js. This one has the downside of being difficult to search for stuff online without being reminded of your middle school chemistry.
I really don't want an new editor, and most programmers have their favorite already. For the actual application development, they pretty much work the same, and should, since they all use webkit. You basically write 90-95% of it like a website, and then deal with the native parts, and some config.
These things are true for all three of them
platforms - runs on Windows, Mac, and Linux
language support - HTML5, CSS3 and Javascript : since they run javascript you can download and run nearly any library/framework that you want.
The big caveat on webkit is codec support. Typically you will have problems with non-free video codecs, unless you rebuild the dll/so to support them. For example the shipped node-webkit won't play mp4 video.
I've been playing with Atom-Shell over the last few days, and I am loving it so far.
The best part about it is that it's backed by GitHub.. which should allow you to settle into the platform for the long term, especially if it gains a large following. It's also made possible by direct Node.js improvements courtesy of a contract with StrongLoop, who is a major Node.js contributor (they claim to employ more Node.js core developers than any other company, even Joyent).
I've also found it rather comfortable to get started. It took me about a day to learn the structure and get my first proof of concept running. Very cool.
Bullet Points:
Platform support: Windows, Linux, Mac OSX (More Info Here)
Language feature support: HTML5, CSS3, JS via Chromium - so far, zero issues, but I have not tested video specifically.
Native Features: Native App Menus, Task Tray Support, Global Hotkeys, Protocol Handler Support (that I've seen so far)
Extensibility: Excellent Node.js integration, both the client and server can "require" Node.js modules and natives. I've also successfully tested Bower libraries (incl jQuery) without issue.
Architecture: Covered in the other points, but in general its very smooth.
Update (11/25/14): I've not yet found use case for Atom-Shell in any official capacity, but I have used it to build a few small apps for my own use, the most complex being an app that pulls my time logs from my PM software and creates Paypal invoices.
My opinion of the platform remains positive. It's pretty awesome.
On my time invoicing app I successfully brought in Bootstrap 3's Dashboard Example Template and a few node modules (bluebird, Paypal SDK, Teamwork PM Client) to create a mildly complex app. It took me a few days and does its job well.
I really cannot think of anything negative to say about Atom-Shell, its solid, stable, fast, and easy to code for. I hope this helps someone.
Besides fully support Web standards, NW.js supports a list of non-standard features for native app development including:
Protect JS source code by compiling them into machine code: https://github.com/nwjs/nw.js/wiki/Protect-JavaScript-source-code-with-v8-snapshot
Jailed devtools: https://github.com/nwjs/nw.js/wiki/Devtools-jail-feature
Additional security model with which you can do more in DOM: https://github.com/nwjs/nw.js/wiki/Security https://github.com/nwjs/nw.js/wiki/Changes-to-DOM
enhanced file dialog: https://github.com/nwjs/nw.js/wiki/File-dialogs
kiosk mode: https://github.com/nwjs/nw.js/wiki/The-Kiosk-mode
supports for a growing list of chrome.* API, include chrome.webRequest so you can intercept HTTP requests from DOM: https://github.com/nwjs/nw.js/issues/518
support for rich notifications, print preview, many more chrome.* APIs, Chrome Apps and other Chromium features starting from 0.13.0-alpha0
There is much more to see in the wiki including Menu, Tray, etc.
I've been working with brackets-shell for some time now, here are some of my findings:
brackets-shell is primarily developed as a shell under the brackets IDE project, but the project can run any web application. You just need to point it to your own html page. Clint Berry wrote an excellent tutorial about doing just this: http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
The project is backed by Adobe and has a lot of activity
Documentation could be better
platform support They support Windows, Mac and Linux. An installer package can also be created. I only tested it on Win and Mac, it works great.
feature support html5, css3, js. Html5 video does not work out of the box, but is very easy to enable (by default the ffmpegsumo.dll is not copied into the installer, if you change the script to copy it it will work).
native features menu bar, 'open file with', file system access. I am not using any of these, as all I need is the communication with the node process.
extensibility a nodejs is built in, and you can communicate with node from your web application. In this way, you can use node to access the filesystem etc.
architecture The project is well set up, keeping a nice separation between the shell project and your own web app running inside it. In your own application, a global appshell object is available which gives you access to the brackets functionality (filesystem access, communication with node process, ...).
One thing to note (if you care), is that the Electron officially does not support Windows Vista. Vista's market share is about halfway between OSX 10.9 and 10.10 (both of which are fully supported by Electron). Vista is also still supported by Microsoft until 2017.
NW.js works fine in Vista, as well as OSX 10.9+. NW.js works on Ubuntu, Debian, Zorin, Manjaro, Arch, and most other Debian based Linux OS's. Electron has refused PR's to fix Ubuntu specific bugs on their platform which is concerning.
NW.js works in XP too. Currently 18% of the market is still on XP. So if you're desktop application is more general purpose or wants to have access to the late adopters still on XP, you're probably better off with NW.js (0.14.7) as Electron only supports Win 7 and up.
If you use NW.js 0.12.3 you can also support OSX 10.6+ and very old versions of Debian based Linux OS's like Ubuntu, and Win XP+. It is recommended that you do special builds just for those legacy systems though and use the newer versions of NW.js for newer OS's.

Does Chrome support GPU hardware acceleration for the 2D Canvas under Windows XP?

I keep reading conflicting answers to this question, and I can't find a definitive answer in an official Google document.
By suppressing the blacklist I can enable hardware acceleration for almost every rendering feature under chrome://gpu-internals/ but not the 2D Canvas. My system is service pack 3, fully updated. DirectX 9. All drivers for the onboard video (Intel GMA3100) are completely up to date. The chip is quite capable, and I even flashed my mobo BIOS to the latest version as a last ditch effort. I'm thinking that Google just isn't supporting HW accel. for the 2D Canvas under Windows XP.
The problem is that Chrome developers have disabled Canvas HW Accel for XP, it calls Direct3DCreate9Ex from d3d9.dll which is DirectX 9L available only on Vista+, but it is possible to wrap D3D9Ex on Windows XP via WineD3D Direct3D to OpenGL wrapper. (special thanks to WineHQ/Crossover)
Then we need to disable blacklist and disable sandbox in launch options. (Special thanks to BlackWingCat)
I have already managed to force HW accel for Chromium-based browsers for Windows XP/2003. And it works somehow.
System requirements:
CPU with SSE3 feature support, OpenGL 3.0 hardware/software support.
In fact I use video card from "green" company :)
Installation:
1. Copy and paste d3d9.dll, wined3d.dll, libwine.dll into chrome folder where you have chrome.exe, for example "C:\Program Files\Google\Chrome\Application"
2. Copy and replace d3dcompiler_47.dll and libwine.dll into your Chrome folder where chrome.dll is, for example C:\Program Files\Google\Chrome\Application\49.0.2623.112.
3. Add launch parameters "--ignore-gpu-blacklist --no-sandbox --disable-infobars" to your Chrome shortcut. (without quotes)
4. Run Chrome with your modified shortcut
If you experience issues with Chrome after this hack you can just remove launch options from Chrome shortcut it will disable this hack.
Download:
ChromeHW_accel_XP.zip (tested with backported Chrome 50.0.2661.102 beta-m, Opera 37, Chrome 49)
Known issues:
1. Address bar flickers quickly when you type.
2. HTML5 video doesn't work correctly (you need to force to use Flash Player)
Actually, I can report that Opera 36/37 (chromium based) is a way more stable with this hw accel hack.
UPDATE:
New Chromium builds use libGLESv2.dll version 1.2.0.2448. I'm no expert in VB, but it seems as if the new version doesn't need the mod...
HOWEVER -
The new Chromium builds that use this new libGLESv2.dll always crash (And then restart automatically in safe mode) if you try to enable the overriding of GPU blacklist in flags.
If someone can check this out and report back it would be much appreciated (Could this have something to do possibly with the added support for DirectX 11?)
Update patch is released, anyone interested can check