You are not logged in.
Hi folks,
I created yet another Chromium spin-off called Inox (a synonym for stainless steel).
Inox goal is to provide a minimal chromium based browser with focus on privacy by disabling data transmission to google.
This is not a whole fork, but a set of patches applied on the arch chromium package. I do not want to create a whole fork to keep things as close as possible to Chromium.At this state Inox and Chromium can't run in parallel, but they share the same Chromium user profiles.
Source code and a pre-built binary are available on AUR.
Links: github | source | binary
Screenshots: http://imgur.com/a/IUfqm
Edit 04.12.2015: The feature list below is not up to date, view the github page instead.
The following features are already available:
based on patches:
Disabled Google's Instant Extended API, this has the effect that the old "New Tab" is in place. (See disable-instant-extended-api.patch)
DuckDuckGo as default search engine. (See add-duckduckgo-seaarch-engine.patch)
Disabled AutoFill data transmission (See disable-autofill-download-manager.patch)
All Browser Extensions are now visible (See modify-default-prefs.patch)
Enabled user-modification for ALL extensions (See disable-default-extensions.patch)
Removed following default extensions: (See disable-default-extensions.patch)
-> Hotword (incl. Shared Module)
-> Google Now
-> Google Feedback
-> Cloud Print
-> Google Webstore
-> Network Speech synthesis
-> Google Hangout
Disabled URLTracker data transmission. I know this class has a bad naming, but nevertheless it connects to Google. (See disable-google-url-tracker.patch)
Disabled promo-notification fetching (See disable-notification-promo-fetch.patch)
Disabled ipv6 probes to google servers (See disable-google-ipv6-probes.patch)
Disabled Google Cloud Messaging status check (See disable-gcm-status-check.patch)
Modified default settings: (See modify-default-prefs.patch)
-> DefaultCookiesSetting: CONTENT_SETTING_SESSION_ONLY
-> EnableHyperLinkAuditing: false
-> CloudPrintSubmitEnabled: false
-> NetworkPredictionEnabled: false
-> BackgroundModeEnabled: false
-> BlockThirdPartyCookies: true
-> AlternateErrorPagesEnabled: false
-> SearchSuggestEnabled: false
-> AutofillEnabled: false
-> "Send feedback" checkbox if user triggers settings-reset: false
-> BuiltInDnsClientEnabled: false
-> SignInPromoUserSkipped: true
-> SignInPromoShowOnFirstRunAllowed: false
-> ShowAppsShortcutInBookmarkBar: false
-> ShowBookmarkBar: true
-> PromptForDownload: true
-> SafeBrowsingEnabled: false
-> EnableTranslate: false
based on build flags:
Disabled google now: enable_google_now=0
Disabled WebRTC: enable_webrtc=0
Disabled Remote service: emable_remoting=0
Disabled safe browsing: safe_browsing_mode=0
Disabled RLZ Identifier: enable_rlz=0
Disabled google hangouts: enable_hangout_services_extension=0
Disabled wifi bootstrapping: enable_wifi_bootstrapping=0
Disabled speech input: enable_speech_input=0
Disabled pre backups on sync: enable_pre_sync_backup=0
Disabled print preview: enable_print_preview=0
Disabled Chrome build: google_chrome_build=0
How to install extensions from Google WebStore?
Since there is no WebStore plugin, you cannot install extensions directly from the store, but there exists a workaround to download and install any extension manually.
https://clients2.google.com/service/update2/crx?response=redirect&prodversion=38.0&x=id%3D[EXTENSION_ID]%26installsource%3Dondemand%26uc
To download a extension just replace [EXTENSION_ID] with the extension-id from the WebStore.
To install it, just drag and drop the downloaded file into a chrome://extensions/ tab.
Thanks to the guys from Iridium Browser for pushing in the right direction.
I hope someone find it useful and I'd be happy to hear about your thoughts and feature requests. (issue tracker follows)
Edit:
Spelling, Title, changed URL to AUR4
Edit2:
I finally managed to push the package to AUR4. I had to force SSH to use IPv4
The default profile is now in ~/.config/inox instead of ~/.config/chromium (See branding.patch). This means Inox and Chromium are able to run in parallel.
I also removed the Google API key, Client Id and Client Secret
Edit3:
Added link to binary version. (See links)
Added link to github
Michael
Last edited by gcarq (2016-01-25 20:49:34)
Offline
Great. Looks promising. I will try this one.
[genEric@…] ~$
Offline
Looks good, but please also push it to AUR4.
Offline
Looks good, but please also push it to AUR4.
I tried but I think it takes some time before my SSH key gets activated. (double checked my key)
Cloning into 'inox'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Offline
Please push a binary version as I don't want to end up compiling this for the next week. (Alright maybe an over-exaggeration but still..) Cheers
Offline
Please push a binary version as I don't want to end up compiling this for the next week. (Alright maybe an over-exaggeration but still..) Cheers
Take your time and read everything https://bugs.debian.org/cgi-bin/bugrepo … bug=786909
Offline
runical wrote:Looks good, but please also push it to AUR4.
I tried but I think it takes some time before my SSH key gets activated. (double checked my key)
Cloning into 'inox'... Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
Strange. Are you sure you set it up correctly?
Other than that, I tried to build it just now and it seems there is a version conflict for python2-ply. The PKGBUILD states python2-ply<3.5, but the version in the repos is 3.6. Is it really needed to use 3.5?
Last edited by runical (2015-06-18 09:23:20)
Offline
Strange. Are you sure you set it up correctly?
I will try again as soon I'm at home, I was tired yesterday.
Other than that, I tried to build it just now and it seems there is a version conflict for python2-ply. The PKGBUILD states python2-ply<3.5, but the version in the repos is 3.6. Is it really needed to use 3.5?
Yeah unfortunatly chromium compiles only with python2-ply<3.5 for now.
sl1pkn07 pointed out this issue on chromium-dev.
With the latest version ninja will raise a TypeError exception during compilation.
Offline
runical wrote:Other than that, I tried to build it just now and it seems there is a version conflict for python2-ply. The PKGBUILD states python2-ply<3.5, but the version in the repos is 3.6. Is it really needed to use 3.5?
Yeah unfortunatly chromium compiles only with python2-ply<3.5 for now.
sl1pkn07 pointed out this issue on chromium-dev.
With the latest version ninja will raise a TypeError exception during compilation.
I just found that out. Too bad. I'll have build 3.5 then.
Offline
Very nice project!!! I like your approach a lot to provide your modifications with patches. Makes it very transparent! Might replace Firefox for me, since it starts to go on my nerves.
Offline
My favorite browser for now Thanks!
Offline
Works well. Added LastPass extension plus my own extension I wrote to control the behavior of Arch Forums on Chrome.
Well Done My CPUs just dropped from 98C back to 55C. Reminds me of my Gentoo days.
Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
Sometimes it is the people no one can imagine anything of who do the things no one can imagine. -- Alan Turing
---
How to Ask Questions the Smart Way
Offline
Do you think you might be able to do a binary version? Would be really awesome.
Offline
Do you think you might be able to do a binary version? Would be really awesome.
I think that was answered in post #6
Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
Sometimes it is the people no one can imagine anything of who do the things no one can imagine. -- Alan Turing
---
How to Ask Questions the Smart Way
Offline
So I got some time and published a binary version, for now it's x86_64. i686 follows when I have a working chroot. AUR(inox-bin)
cheers
Last edited by gcarq (2015-06-22 21:14:11)
Offline
So I got some time and published a binary version, for now it's x86_64. i686 follows when I have a working chroot. AUR(inox-bin)
cheers
Nice. I suggest you provide it in a repository and remove inox-bin from the AUR. Instead add a comment to the inox package that links to the repository.
https://wiki.archlinux.org/index.php/Pa … repository
Last edited by progandy (2015-06-22 21:54:26)
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' |
Offline
hi, just wondering why you don't contribute to the Iridium project directly? It's still missing in the AUR.
Even Iridium gets criticism https://news.ycombinator.com/item?id=9482689
Mainly about policies regarding upstream security patches, as Chromium is quite a complex beast.
These criticisms would even go harsher for a one-man fork.
Offline
hi, just wondering why you don't contribute to the Iridium project directly? It's still missing in the AUR.
Even Iridium gets criticism https://news.ycombinator.com/item?id=9482689
Mainly about policies regarding upstream security patches, as Chromium is quite a complex beast.These criticisms would even go harsher for a one-man fork.
This fork started as a little side project while fiddling with chromium source because I wanted to know whats buried within its code, then after a while I decided to patch it for my own needs.
At this time I had no idea Iridium exists.
I detected Iridium just before publishing, but there are some things I don't agree with.
For example certificate pinning and hardcoded URLs to iridiumbrowser.de.
IMO there is lack of transparency of built-in/disabled features (of course you can check their git repo, but thats not the way I want it to be).
I've also heard Iridium is sometimes behind upstream versions and therefore missing security patches. (Cannot prove though, since I know this project just for a short period)
So I decided to create a minimal patch-set which can be applied to the chromium upstream version.
Don't get me wrong, I think Iridium is a great project, but their goals are not identical with mine (i.e. disabled WebRTC). But the good thing in the OSS world is you can easily share and reuse code. So it's a win-win situation.
I don't mind about unproductive critic as in the beginning there was no intention to make this public, just to create it for personal use.
cheers,
Michael
Last edited by gcarq (2015-06-23 12:26:08)
Offline
Chromium (and Inox) installs something called "ChromeDriver".
https://aur4.archlinux.org/cgit/aur.git … =inox#n201
It's this thing, apparently: https://sites.google.com/a/chromium.org/chromedriver/
Is it something we really need to have installed in other to run chromium/inox?
Or could we just get rid of this cruft?
Thank you.
Offline
Can you provide instructions on how to apply the patches for a different distribution like Ubuntu? I never patched from source before. I'm familiar with building from source though. I would greatly appreciate your efforts.
Offline
@windozupdate
If all you want is just the browser it's not really necessary, but very useful if you want to create automated browser tests with Selenium for example.
So if you don't plan to use a testing framework which depends on it you can get rid of it by deleting the following line in PKGBUILD:
install -D out/Release/chromedriver "$pkgdir/usr/lib/$pkgname/inoxdriver"
@tristank
Sorry it's been quite some time since I used Ubuntu so unfortunately I can't help you much, but I am sure there exists some chromium-dev PPA where you can grab the source including dependencies.
The patching process itself is easy.
Place the patch files in the parent directory and apply them i.e. with:
patch -p1 < ../disable-autofill-download-manager.patch
patch -p1 < ../disable-google-url-tracker.patch
patch -p1 < ../disable-default-extensions.patch
patch -p1 < ../modify-default-prefs.patch
patch -p1 < ../disable-notification-promo-fetch.patch
patch -p1 < ../disable-instant-extended-api.patch
patch -p1 < ../disable-google-ipv6-probes.patch
patch -p1 < ../disable-gcm-status-check.patch
patch -p1 < ../add-duckduckgo-search-engine.patch
patch -p1 < ../branding.patch
patch -p1 < ../disable-missing-key-warning.patch
To get a rough idea how the browser gets compiled view PKGBUILD.
This script is seperated into prepare(), build() and package(), which are called in this order.
I hope this helps a litte bit.
cheers
Offline
Any chance you could make a binary with webrtc enabled? Sorry, I know your goal is to turn it off... I just don't have the resources to compile something like chromium but I kind of think webrtc is neat (only fully working skype replacement easy to get people to switch to)
Last edited by gothmog123 (2015-07-17 06:48:04)
Offline
@gcarq
Could you please add a patch to deal with HTTP referer, please?
https://en.wikipedia.org/wiki/HTTP_referer
It is a huge security concern.
Maybe change google's source code to completely remove all its abilities to identify the referer and all that and instead add a simple function that makes it send http://example.com/ or another dummy one.
Thank you.
Offline
Maybe change google's source code to completely remove all its abilities to identify the referer
But then you won't be able to post here on this forum At least I can't in firefox with network.http.sendRefererHeader set to 0.
Offline
windozupdate wrote:Maybe change google's source code to completely remove all its abilities to identify the referer
But then you won't be able to post here on this forum At least I can't in firefox with network.http.sendRefererHeader set to 0.
Make it send www.google.com or www.example.com.
Anything is better than sending the real website you were in before. That hurts the user privacy.
Maybe fake it so it seems the user typed the URL directly from his chrome:url address bar, without being on any website before. Yes, this sounds like the best option.
Offline