A Study of URL Scope in Web Applications

Table of Contents

Table of Contents

Introduction

Alexa Top 20

1. google.com

2. facebook.com

3. youtube.com

4. yahoo.com

5. baidu.com

6. wikipedia.org

7. amazon.com

8. twitter.com

9. taobao.com

10. Qq.com

11. google.co.in

12. live.com

13. linkedin.com

14. sina.com.cn

15. tmall.com

16. weibo.com

17. blogspot.com

18. yahoo.co.jp

19. hao123.com

20. yandex.ru

Chrome Web Store Top 20

1. Instagram

2. Evernote

3. Word Online

4. OneDrive

5. Google Play

6. Angry Birds

7. Spotify

8. Google Finance

9. Little Alchemy

10. Google News

Firefox Marketplace Top 20

1. ConnectA2

2. Info Whatsap And Firefox OS

3. MessageMe

4. SoundCloud

5. PenguinPop

6. PacMan

7. YOUZEEK

8. Wallpaper Wonderful

9. Zombie Apocalypse

10. Slice Fruits

11. Blozzle

12. Rooftops

13. Fruit Cut Ninja

14. Pasjans/Solitaire

15. 12 games in 1

16. Air Combat

17. Duck Shooting

18. Blocked Car

19. Finger Print

20. Chess

Conclusions

Some conclusions so far:

Regarding the previous proposal of using the start_url or Document URL as a default origin:

Regarding the proposal to set an unbounded scope for apps by default:

Regarding the proposal to use the root of the web app's origin as the default scope:

Other observations:

Possible Solutions

Example Manifests

Google

Facebook

YouTube

Yahoo

Baidu

Wikipedia

Amazon

Twitter

Taobao

QQ News

Rough Notes

Introduction

The following are notes on the URL structures of the top 20 web sites in the Alexa Top 500 (as used in desktop Firefox), the Chrome Web Store (as used in Chrome OS) and the Firefox Marketplace (as used in Firefox OS).

The Alexa Top 500 is a list of top web sites on the web, but not all of these web sites would necessarily translate well into an “app” user experience. The web properties listed in the Chrome Web Store and Firefox Marketplace are more likely to have app-like characteristics because the developer has submitted them to an “app store”.

URLs considered “outside the app” are those which are linked to from the start URL but have their own visual identity and “feel” separate from the initial “app”. Indications might be that they have their own logo, their own navigation or their own style. This is obviously very subjective.

These tests were carried out in the United Kingdom and therefore some of the URLs automatically redirect to UK-specific versions.

Alexa Top 20

1. google.com

Start URL

https://google.com/ 

(redirects to https://www.google.co.uk/?gfe_rd=cr&ei=TrBjVK1T0qrzB9jagNAN&gws_rd=ssl)

Example URLs Inside App

Web search

https://www.google.co.uk/?gfe_rd=cr&ei=TrBjVK1T0qrzB9jagNAN&gws_rd=ssl#q=foo

Sign In

https://accounts.google.com/ServiceLogin?hl=en&continue=https://www.google.co.uk/%3Fgfe_rd%3Dcr%26ei%3DE7FjVLTCMNKq8wfY2oDQDQ%26gws_rd%3Dssl

Example URLs Outside App

Image search

https://www.google.co.uk/imghp?hl=en&tab=wi&ei=TrBjVPW2CKiv7Abgy4D4DQ&ved=0CAQQqi4oAg

About

https://www.google.co.uk/intl/en/about/

Business Solutions

https://www.google.co.uk/services/?fg=1

Google Ads

https://www.google.co.uk/intl/en/ads/?fg=1&utm_expid=92519113-19._wvg6PQFTUiSRwsSpYgdCg.0&utm_referrer=https%3A%2F%2Fwww.google.co.uk%2F%3Fgfe_rd%3Dcr%26ei%3DE7FjVLTCMNKq8wfY2oDQDQ%26gws_rd%3Dssl

Mail

https://mail.google.com/mail/u/0/?tab=wm&pli=1#inbox

Notes

Google search feels like it part of google.com, but Google Image search has its own logo and home page so might be considered a separate app like Mail, Calendar etc.


2. facebook.com

Start URL

https://www.facebook.com/

Example URLs Inside App

Login

https://www.facebook.com/login.php?login_attempt=1

Wall

https://www.facebook.com/johnsmith

Events

https://www.facebook.com/events/upcoming

Messages

https://www.facebook.com/messages/john.smith

Photos

https://www.facebook.com/johnsmith/photos

Requests

https://www.facebook.com/friends/requests/?fcref=jwl

Notifications

https://www.facebook.com/notifications

Create Page

https://www.facebook.com/pages/create/?ref_type=logout_gear

Settings

https://www.facebook.com/settings

Games

https://www.facebook.com/games/?from_bookmark=1

Example URLs Outside App

Help

https://www.facebook.com/help/privacy/sharing-choices?ref=contextual


3. youtube.com

Start URL

https://www.youtube.com/

Example URLs Inside App

Sign In

https://accounts.google.com/ServiceLogin?service=youtube&hl=en-GB&uilel=3&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Ffeature%3Dsign_in_button%26hl%3Den-GB%26action_handle_signin%3Dtrue%26next%3D%252F%26app%3Ddesktop&passive=true

My Channel

https://www.youtube.com/channel/UCW65Kls_xXp71iry-zsIXEg

Subscriptions

https://www.youtube.com/feed/subscriptions

History

https://www.youtube.com/feed/history

Channels

https://www.youtube.com/channels

Search

https://www.youtube.com/results?search_query=foo

Example URLs Outside App

About

https://www.youtube.com/yt/about/en-GB/

Press

https://www.youtube.com/yt/press/en-GB/

Copyright

https://www.youtube.com/yt/copyright/en-GB/

Terms

https://www.youtube.com/t/terms


Privacy

https://www.google.com/policies/privacy/


4. yahoo.com

Start URL

https://yahoo.com

(redirects to https://uk.yahoo.com/?p=us)

Example URLs Inside App

Sign In

https://login.yahoo.com/config/login?.src=fpctx&.intl=uk&.done=https%3A%2F%2Fuk.yahoo.com%2F

Example URLs Outside App

Mail

https://uk-mg42.mail.yahoo.com/neo/launch?.rand=9gqb23t3ef8q3

News

https://uk.news.yahoo.com/

Finance

https://uk.finance.yahoo.com/

Celebrity

https://uk.celebrity.yahoo.com/

Search

https://uk.search.yahoo.com/search;_ylt=AnrE.vY4SZlNU0QkUnV50WM4hJp4?p=foo&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-903&fp=1

Notes

If you consider Yahoo Search (which has its own subdomain and homepage) as a separate app, and everything else like Mail, News, Finance, Weather (which also have their own home pages and visual identity) as separate apps, then there’s very little which is part of yahoo.com itself, that’s just a starting point to get into various apps.


5. baidu.com

Start URL

http://www.baidu.com/

Example URLs Inside App

Search

http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=gda&rsv_pq=918886490004182b&rsv_t=a18eANva9K6pjNYenlz9ALx%2F9IJ3XzbA7OUDbu4dcfwWZEQkKQAI&rsv_enter=0&rsv_sug3=2&inputT=538

Example URLs Outside App

News

http://news.baidu.com/ns?cl=2&rn=20&tn=news&word=ga&ie=utf-8&ie=utf-8

Music

http://music.baidu.com/search?fr=ps&key=ga&ie=utf-8&ie=utf-8

Maps

http://map.baidu.com/

Notes

News, Music and Maps etc. could be considered separate apps, and each have their own subdomain. There is relatively consistent navigation across these various properties though.


6. wikipedia.org

Start URL

http://www.wikipedia.org/

(user then presented a choice for their language http://en.wikipedia.org/wiki/Main_Page)

Example URLs Inside App

Article

http://en.wikipedia.org/wiki/Philae_%28spacecraft%29

Edit Article

http://en.wikipedia.org/w/index.php?title=Philae_%28spacecraft%29&action=edit

Talk Page

http://en.wikipedia.org/wiki/Talk:Philae_%28spacecraft%29

Help

http://en.wikipedia.org/wiki/Help:Contents

About

http://en.wikipedia.org/wiki/Wikipedia:About

Example URLs Outside App

WikiBooks

http://en.wikibooks.org/wiki/Main_Page

Terms of Use

http://wikimediafoundation.org/wiki/Terms_of_Use

Privacy Policy

http://wikimediafoundation.org/wiki/Privacy_policy

Donate

https://donate.wikimedia.org/w/index.php?title=Special:FundraiserLandingPage&country=GB&uselang=en&utm_medium=sidebar&utm_source=donate&utm_campaign=C13_en.wikipedia.org

Notes

Wikipedia uses a subdomain per language and everything is fairly contained within that subdomain.

7. amazon.com

Start URL

http://www.amazon.com/

(Redirects

Example URLs Inside App

Sign In

https://www.amazon.com/ap/signin?_encoding=UTF8&openid.assoc_handle=usflex&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Fcss%2Fhomepage.html%3Fie%3DUTF8%26ref_%3Dnav_yam_ya

Search

http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=gda

Today’s Deals

http://www.amazon.com/gp/goldbox/ref=nav_cs_gb

Amazon Instant Video

http://www.amazon.com/Instant-Video/b/ref=nav_shopall_aiv?ie=UTF8&node=2858778011

Digital Music Store

http://www.amazon.com/MP3-Music-Download/b/ref=nav_shopall_digi_str?ie=UTF8&node=163856011

Help

https://www.amazon.com/gp/help/customer/display.html/ref=nav_cs_help?ie=UTF8&nodeId=508510

Sell

http://www.amazon.com/gp/seller-account/mm-product-page.html/ref=nav_cs_sell?ie=UTF8&ld=AZSOAUSCSNav

Example URLs Outside App

Careers

http://www.amazon.jobs/

Investor Relations

http://phx.corporate-ir.net/phoenix.zhtml?c=97664&p=irol-irhome

Become an Affiliate

https://affiliate-program.amazon.com/gp/associates/join/landing/main.html

Amazon Fire TV

http://www.amazon.com/Streaming-Internet-Media-Player/oc/Fire-TV

Notes


8. twitter.com

Start URL

https://twitter.com/

Example URLs Inside App

Sign In

https://twitter.com/login/

Forgotten Password

https://twitter.com/account/begin_password_reset?account_identifier=bfrancis

Signup

https://twitter.com/signup

Profile

https://twitter.com/johnsmith

Notifications

https://twitter.com/i/notifications

Discover

https://twitter.com/i/discover

Search

https://twitter.com/search?q=foo&src=typd

Who to Follow

https://twitter.com/who_to_follow/suggestions

Example URLs Outside App

About

https://about.twitter.com/

Jobs

https://about.twitter.com/careers

Blog

https://blog.twitter.com/

Developers

https://dev.twitter.com/

Privacy

https://twitter.com/privacy

Support

https://support.twitter.com/groups/31-twitter-basics/topics/109-tweets-messages/articles/14606-what-is-a-direct-message-dm#

Notes


9. taobao.com

Start URL

http://www.taobao.com/

(redirects to http://www.taobao.com/market/global/index_new.php)

Example URLs Inside App

Search

http://s.taobao.com/search?q=foo&commend=all&ssid=s5-e&search_type=mall&sourceId=tb.index&spm=a215z.7106357.5803581.d4908513

Product Detail

http://detail.tmall.com/item.htm?id=37132519928&ali_refid=a3_420434_1006:1104750227:N:%C6%A4%B4%F8:36884c068aa94c78aa580b7dd6ff9990&ali_trackid=1_36884c068aa94c78aa580b7dd6ff9990&spm=a230r.1.0.0.tlqC8S

Example URLs Outside App

Alibaba Group

http://www.alibabagroup.com/cn/global/home

Notes

Very difficult to define the boundaries of this web property, there are multiple interlinked websites over a large number of origins. Most links open in a new tab.


10. Qq.com

Start URL

http://www.qq.com/

Example URLs Inside App

Example URLs Outside App

http://news.qq.com

Notes

QQ is a portal similar to Yahoo which links to lots of other web properties spanning multiple origins. Many of these (e.g. mail.qq.com) would be considered “apps” in their own right and have their own homescreen and visual identity.


11. google.co.in

Start URL

https://www.google.co.in

Example URLs Inside App

Search

https://www.google.co.in/?gws_rd=ssl#q=ag

Image Search

https://www.google.co.in/imghp?hl=en&tab=wi&ei=DcJkVPOoEs73aoS5gsgK&ved=0CAQQqi4oAg

Example URLs Outside App

About

https://www.google.co.in/intl/en/about/

GMail

https://mail.google.com/mail/u/0/?tab=wm

Notes

Basically the same as google.com, but a version for India at its own origin.


12. live.com

Start URL

Example URLs Inside App

Login

https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=12&ct=1415889581&rver=6.4.6456.0&wp=MBI_SSL_SHARED&wreply=https:%2F%2Fmail.live.com%2Fdefault.aspx%3Frru%3Dinbox&lc=1033&id=64855&mkt=en-us&cbcxt=mai

Trouble signing in

https://account.live.com/ResetPassword.aspx?wreply=https://login.live.com/login.srf%3fwa%3dwsignin1.0%26rpsnv%3d12%26ct%3d1415889581%26rver%3d6.4.6456.0%26wp%3dMBI_SSL_SHARED%26wreply%3dhttps:%252F%252Fmail.live.com%252Fdefault.aspx%253Frru%253Dinbox%26lc%3d1033%26id%3d64855%26mkt%3den-us%26cbcxt%3dmai%26bk%3d1415889582&id=64855&uiflavor=web&uaid=8c2b030d14554d1490236ef20f143f99&mkt=EN-US&lc=1033&bk=1415889582

Mail Inbox

https://snt152.mail.live.com/default.aspx

Sent Items

https://snt152.mail.live.com/?fid=flsent

Example URLs Outside App

Calendar

https://bay04.calendar.live.com/calendar/calendar.aspx

Word Online

https://office.live.com/start/word.aspx?auth=1&WT.mc_id=O16_Switcher_OneDrive_Outlook

Word Document

https://onedrive.live.com/edit.aspx?resid=2470E99F46C9BA37!108&app=Word&wdnd=1&wdPreviousSession=04f7173d-1d57-46e1-8957-5a909f9c9198&wdNewAndOpenCt=1415889963229&wdPreviousCorrelation=4400c085-a821-4208-b345-62bd37e86318

Notes

Used to be a search engine but now basically serves as a login page for the Outlook mail service.


13. linkedin.com

Start URL

https://www.linkedin.com/

Example URLs Inside App

Forgotten Password

https://www.linkedin.com/uas/request-password-reset?trk=signin_fpwd

Logged in homepage

https://www.linkedin.com/nhome/?trk=

Messages

https://www.linkedin.com/inbox/#messages?trk=hb-messages-hdr-item-msg-v2

Invitations

https://www.linkedin.com/people/pymk/hub?ref=global-nav&trk=nav_utilities_invites_header

Profile

https://www.linkedin.com/profile/view?id=23547549&authType=NAME_SEARCH&authToken=aZAn&locale=en_US&srchid=107906971415890493006&srchindex=1&srchtotal=38495&trk=vsrp_people_res_name&trkInfo=VSRPsearchId%3A107906971415890493006%2CVSRPtargetId%3A23547549%2CVSRPcmpt%3Aprimary

Advanced Search

https://www.linkedin.com/vsearch/f?adv=true&trk=federated_advs

Example URLs Outside App

About

http://www.linkedin.com/about-us?trk=hb_ft_about

Careers

http://www.linkedin.com/company/linkedin/careers?trk=hb_ft_work

Advertising

http://www.linkedin.com/advertising?src=en-all-el-li-hb_ft_ads&trk=hb_ft_ads

Notes

14. sina.com.cn

Start URL

http://www.sina.com.cn/

Example URLs Inside App

Example URLs Outside App

About

http://corp.sina.com.cn/eng/sina_index_eng.htm

News

http://news.sina.com.cn/

Notes

Mainly a portal to other content across multiple origins, probably doesn’t translate well into an app-like experience in its own right.


15. tmall.com

Start URL

http://www.tmall.com/

Example URLs Inside App

Search

http://list.tmall.com/search_product.htm?q=foo&type=p&vmarket=&spm=3.7396704.a2227oh.d100&from=mallfp..pc_1_searchbutton

Register

http://register.tmall.com/?spm=a220m.1000858.a2226mz.3.lVL9LP

Login

http://login.tmall.com/?spm=a220m.1000858.a2226mz.2.lVL9LP&redirect_url=http%3A%2F%2Flist.tmall.com%2Fsearch_product.htm%3Fq%3Dfoo%26type%3Dp%26vmarket%3D%26spm%3D3.7396704.a2227oh.d100%26from%3Dmallfp..pc_1_searchbutton

Example URLs Outside App

Notes

A shopping portal which links into multiple sub-sites with their own origins. The registration page, login page and search results are also on separate origins.


16. weibo.com

Start URL

http://overseas.weibo.com/

Example URLs Inside App

Signup

http://www.weibo.com/signup/mobile.php?lang=zh-tw&from=twweibo

World News

http://overseas.weibo.com/worldnews

Entertainment

http://overseas.weibo.com/ent

Fashion

http://overseas.weibo.com/fashion

Search

http://s.weibo.com/weibo/foo

Example URLs Outside App

Help

http://help.weibo.com/

Movies

http://movie.weibo.com/

Talk

http://talk.weibo.com/

Notes

More self-contained than other Chinese sites, mostly under one origin with lots of subdirectories, except for search which has its own origin. Links to sub-sites with their own origin and visual identity.


17. blogspot.com

Start URL

https://www.blogger.com/home

(redirected from http://blogspot.com)

Example URLs Inside App

Profile

https://www.blogger.com/profile/122680544004560511

Login

https://accounts.google.com/ServiceLoginAuth

Edit Blog Post

https://www.blogger.com/blogger.g?blogID=265267023115423649#allposts/src=dashboard

Manage Comments

https://www.blogger.com/blogger.g?blogID=265267023115423649#publishedcomments

Example URLs Outside App

Blog

http://johnsmith.blogspot.co.uk

Help

https://support.google.com/blogger/#topic=3339243

Terms

http://www.google.com/intl/en/policies/terms/

Privacy

http://www.google.com/policies/privacy/?hl=en

Content Policy

https://www.blogger.com/content.g?hl=en

Notes

Blogging software. The blog editor behaves a lot like an app, the blog itself is on its own origin.


18. yahoo.co.jp

Start URL

http://www.yahoo.co.jp/

Example URLs Inside App

News article

http://news.yahoo.co.jp/pickup/6138453

Example URLs Outside App

Docs

http://docs.yahoo.co.jp/

Notes

Mainly a portal to other web sites and web apps, like yahoo.com.


19. hao123.com

Start URL

http://www.hao123.com/

Example URLs Inside App

TV

http://www.hao123.com/

Movies

http://www.hao123.com/

News

http://www.hao123.com/

Example URLs Outside App

Search

http://www.baidu.com/s?word=foo&tn=sitehao123&ie=utf-8

Topic

http://topic.hao123.com/xjcy

News Article

http://news.china.com/focus/ddz/11163081/20141113/18960631.html?hao123

Notes

Many of the sub-sections of this site are loaded via AJAX and do not change the URL of the top level browsing context. Largely a portal to other web sites.

20. yandex.ru

Start URL

http://www.yandex.ru/

Example URLs Inside App

Search

http://yandex.ru/yandsearch?lr=105001&text=foo&csg=482%2C1288%2C3%2C3%2C0%2C0%2C0

Example URLs Outside App

Maps

http://maps.yandex.ru/?ll=-1.613333%2C54.977778&spn=0.161362%2C0.081653&z=13&l=map

Market

http://market.yandex.ru/?clid=505

Notes

Search results on same origin, lots of links to other sub-sites at their own subdomains.r


Chrome Web Store Top 20

Note: The “most popular” apps seem to be randomised so you’ll never see the same ten apps. This is just a selection. Packaged apps were excluded as by definition the scope of a packaged app is anything inside the package.

1. Instagram

Start URL

http://instagram.com/

Example URLs Inside App

Login

https://instagram.com/accounts/login/

Forgotten password

https://instagram.com/accounts/password/reset/

Example URLs Outside App

About

http://instagram.com/about/us/

Support

https://help.instagram.com/

Blog

http://blog.instagram.com/

Notes


2. Evernote

Start URL

https://www.evernote.com/Home.action

Example URLs Inside App

Registration

https://www.evernote.com/Registration.action?code=chromestore&targetUrl=%2FHome.action%3FsecurityRegCode%3Dchromestore

Login

https://www.evernote.com/Login.action

Main Page

https://www.evernote.com/Home.action

Settings

https://www.evernote.com/Settings.action

Example URLs Outside App

Products

https://evernote.com/products/

About

https://evernote.com/corp/

Notes

If you install Evernote as an app and set it to open in its own window then the settings screen acually opens separately from the app in the browser.


3. Word Online

Start URL

https://office.live.com/start/word.aspx?WT.mc_id=016_Chrome_Web_Store_App_Word_1

Example URLs Inside App

New Document

https://onedrive.live.com/edit.aspx?resid=2470E99F46C9BA37!113&app=Word&wdnd=1&wdNewAndOpenCt=1415903110004&wdPreviousCorrelation=153b05cf-a577-4fb8-be41-159ac50b2a09

Example URLs Outside App

Document list

https://onedrive.live.com/?id=2470E99F46C9BA37!106&cid=2470e99f46c9ba37

Notes


4. OneDrive

Start URL

https://onedrive.live.com/

Example URLs Inside App

Recent

https://onedrive.live.com/?qt=mru

Shared

https://onedrive.live.com/?qt=sharedby

Options

https://onedrive.live.com/options?ru=https%3a%2f%2fonedrive.live.com%2f

Example URLs Outside App

Help

http://windows.microsoft.com/en-gb/onedrive/onedrive-help#onedrive=other


Account Settings

https://account.live.com/

Terms

http://windows.microsoft.com/en-us/windows/microsoft-services-agreement

Notes


5. Google Play

Start URL

https://play.google.com/store

Example URLs Inside App

Apps

https://play.google.com/store/apps

Music

https://play.google.com/store/music

Movies

https://play.google.com/store/movies

Wishlist

https://play.google.com/wishlist

Example URLs Outside App

Buy a gift card

https://play.google.com/intl/en-GB_uk/about/giftcards/

Notes


6. Angry Birds

Start URL

http://chrome.angrybirds.com/

Example URLs Inside App

http://chrome.angrybirds.com/

Example URLs Outside App

FAQ

http://www.rovio.com/en/support/faq&support_category_id=36

Notes

A single page app.


7. Spotify

Start URL

https://play.spotify.com/

Example URLs Inside App

Login

https://www.spotify.com/uk/login/?forward_url=%2Fuk%2Faccount%2Foverview%2F

Browse

https://play.spotify.com/browse

Radio

https://play.spotify.com/radio

Your Music

https://play.spotify.com/collection/playlists

Follow

https://play.spotify.com/follow

Settings

https://play.spotify.com/settings

User Profile

https://play.spotify.com/user

Example URLs Outside App

Forgotten Password

https://www.spotify.com/uk/password-reset/?_ga=1.248610254.8358110.1415732233

Legal

https://www.spotify.com/uk/legal/end-user-agreement/?utm_source=web-player&_ga=1.240152906.8358110.1415732233

Notes


8. Google Finance

Start URL

https://www.google.com/finance

Example URLs Inside App

News

https://www.google.com/finance/market_news?ei=z_1kVLngO8zFwAODh4DgDQ

Portfolios

https://www.google.com/finance/portfolio?action=view&pid=1&ei=CP5kVPmEG-aLwAP69IHYDQ

Example URLs Outside App

Help

https://support.google.com/finance/?hl=en&ei=CP5kVIHJO4fDwAPUhIGoDg

Notes


9. Little Alchemy

Start URL

http://littlealchemy.com/

Example URLs Inside App

Cheats

http://littlealchemy.com/cheats/

Example URLs Outside App

Notes


10. Google News

Start URL

https://news.google.com/

Example URLs Inside App

Technology

https://news.google.com/news/section?pz=1&cf=all&topic=tc&siidp=d57c29ef8f437b69471a125695092f73f0ec&ict=ln

Sports

https://news.google.com/news/section?pz=1&cf=all&topic=s&siidp=d57c29ef8f437b69471a125695092f73f0ec&ict=ln

Example URLs Outside App

News Story

http://www.bbc.co.uk/news/technology-30036057

Notes


Firefox Marketplace Top 20

Note: Many of the top 20 are packaged apps and therefore scope isn’t particularly relevant. By definition the scope of a packaged app is everything inside the package.

1. ConnectA2

Packaged app.

2. Info Whatsap And Firefox OS

Packaged app.

3. MessageMe

4. SoundCloud

5. PenguinPop

6. PacMan

7. YOUZEEK

8. Wallpaper Wonderful

9. Zombie Apocalypse

10. Slice Fruits

Packaged app.

11. Blozzle

12. Rooftops

13. Fruit Cut Ninja

14. Pasjans/Solitaire

15. 12 games in 1

16. Air Combat

17. Duck Shooting

18. Blocked Car

19. Finger Print

Packaged app.

20. Chess

Conclusions

Some conclusions so far:

  • Many web sites do not translate well into an app-like experience. Some of the most popular web sites are portals to content spanning multiple separate web sites with different origins. This is particularly the case for popular web sites in Asia which span multiple origins and often open every hyperlink in a new tab. This type of content might be better suited to being used in the browser.
  • Web properties which have been submitted to the Chrome Web Store and Firefox Marketplace tend to be a bit more self-contained and more often restricted to one origin.
  • Logging into a web app often requires navigating to another origin.
  • Web apps will often share an origin with a web site so that /foo and /bar might be part of the app but /about or /products are not.
  • Both Chrome OS and Firefox OS currently have an unbounded scope for apps which means that their browsing context can be navigated to any URL. This often results in a bad user experience where the user navigates away from the app but stays in the same browsing context with no browser chrome, leaving them stranded without a back button.

Regarding the previous proposal of using the start_url or Document URL as a default origin:

  • Using the Document URL as a default scope is probably a bad idea. This would mean that the scope of the app would vary depending on which URL it was installed from, which makes the scope unpredictable. The scope should be something more static.
  • Using the start_url as a default scope is probably also a bad idea. The Start URL of a web app may change over time and restricting the scope of an app to just the start URL will provide a bad user experience in the majority of cases. Most web apps consist of more than one web page.

Regarding the proposal to set an unbounded scope for apps by default:

  • Defaulting to an unbounded scope is the "least surprising" thing to do because this is generally how browsing contexts behave. A browser tab can be navigated to any URL.
  • However, this doesn't always provide the best user experience. Users can navigate away from the app in standalone mode and get stranded without a back button.

Regarding the proposal to use the root of the web app's origin as the default scope:

  • This will be too broad for some web apps, and too narrow for others.
  • Web content which is intended to be used like an "app" is more likely to be restricted to one origin.
  • Must provide a way to temporarily navigate to another origin in order to log in.

Other observations:

  • A single URL prefix is not sufficient to define the scope of a web app in a large number of cases. Web apps share URL spaces with web sites and other web apps in complex ways.
  • It may be necessary to have a whitelist of multiple URL prefixes as an array. In some cases an additional blacklist of certain URL prefixes would also be helpful.
  • In some cases it might be helpful to also specify a whitelist of URL prefixes which are not part of the app but should open inside the context of the app (e.g. for third party authentication).
  • Service Workers do not need to share their scope with the Web Manifest from which they are referenced. The service_worker property can specify a separate scope for the Service Worker.

Possible Solutions

It seems there are a couple of directions this could be taken in. One is to try to accommodate all existing web content with a complex, flexible solution. The other is to go for a simpler solution which is not backwards compatible with some of the web.

A complex solution might be an unbounded scope by default and a manifest which looks like:

{

  "start_url”: “http://foo.com/",

  "scope": {

        "include": ["/foo", "/bar"],

        "exclude": ["/baz", "/qux"]

  },

  "stay_in_app": ["http://norf.com"]

}

The scope has both a whitelist and a blacklist and there's an additional list of URLs which are not part of the app but should stay in the context of the app (e.g. third party authentication). This is very flexible but I think the danger is that the matching rules start to get quite complex for the user agent to carry out on every top level navigation and we risk creating a complex declarative list like AppCache which is unwieldy to maintain.

At the other extreme, the default scope is the root of the domain and the manifest looks like:

{

  "start_url": "/foo",

  "scope": "/foo"

}

Scope is a single URL prefix. This would be simple for new web apps to use, but may provide a bad experience for a lot of existing content where web sites and web apps share URL spaces in complex ways. For example https://evernote.com/products/ would be forced to open inside the Evernote app, and users of GMail might be kicked out of the app into the browser when they want to log in.

If we were starting with a clean slate then my preference would be that the default scope is the root of the origin and the scope of the app is defined by a single URL prefix (or perhaps a whitelist array).

Unfortunately if we turned this feature on overnight in Firefox OS and Chrome OS for existing apps it would create a bad user experience for many existing apps which were not built to this pattern. In fact in the case of Firefox OS which has separate data jars for each app it might actually break apps which navigate to a separate origin in the top level browsing context for authentication purposes. It would also create friction for a lot of big name web properties to adopt Web Manifest because it would either require them to add in workarounds in their apps or to make big infrastructure changes in order to use a manifest.

So, should Web Manifest be backwards compatible with all web content, should it be a clean slate for new web content built with a clean URL scope, or should it take a middle ground?

An example of a middle ground might be:

{

  "start_url": "http://foo.com/bar",

  "scope": ["/bar", "/baz"],

  "stay_in_app": ["http://qux.com"]

}

which incidentally is basically what Jonas proposed in https://groups.google.com/forum/#!topic/mozilla.dev.webapi/yqLffXgokuI

I think we could also make the root of the origin the default scope as in Jonas' proposal above, but to do this for existing apps we would need to give developers advance warning.

Example Manifests

Below are some example manifests for the Alexa top ten web sites with the middle ground example given above.

Google

{

  "name": "Google Search",

  "start_url": "https://google.com/webhp",

  "scope": : ["/webhp"],

  "stay_in_app": ["https://accounts.google.com"]

}

Note: I have assumed that a Google app would just be for Google Search.

Facebook

{

  "name": "Facebook",

  "start_url": "https://www.facebook.com"

  "scope": "/"

}

Notes: http://facebook.com/help would open in the app, but has a link back to the homepage.

YouTube

{

  "name": "YouTube",

  "start_url": "https://www.youtube.com/"

  "scope": ["/feed", "/channel", "/channels", "/results", "/playlist",

        "/purchases", "/subscription_manager", "/upload", "/user"],

  "stay_in_app": ["https://accounts.google.com"]

}

Notes: I may have missed some of the scope.

Yahoo

{

  "name": "Yahoo Search",

  "start_url": "https://uk.search.yahoo.com/"

  "scope": ["/"],

  "stay_in_app": ["https://login.yahoo.com"]

}

Note: I have used Yahoo Search as an example, yahoo.com itself wouldn't make a great app.

Baidu

{

  "name": "Baidu Search",

  "start_url": "http://www.baidu.com",

  "scope": ["/"],

  "stay_in_app": "https://passport.baidu.com"

}

Wikipedia

{

  "name": "Wikipedia",

  "start_url": "http://en.wikipedia.org/",

  "scope": "/"

}

Note: Wikipedia would require one app per language as they use a separate origin for each language.

Amazon

{

  "name": "Amazon",

  "start_url": "https://www.amazon.com",

  "scope": ["/"],

  "stay_in_app": "http://www.amazon.com"

}

Note: Amazon tends to switch between https:// and http:// URLs a lot which might cause problems for capturing scope.

Twitter

{

  "name": "Twitter",

  "start_url": "https://twitter.com/"

  "scope": "/"

}

Note: https://twitter.com/privacy would open in the app, but it has a link back to the homescreen

Taobao

{

  "name": "Taobao Search",

  "start_url": "http://s.taobao.com/"

  "scope": "/",

  "stay_in_app": "https://login.taobao.com"

}

Note: Using Taobao Search as an example, most of the results would open in the browser. It would be very hard to create an app spanning the whole of Taobao.

QQ News

{

  "name": "新闻",

  "start_url"http://news.qq.com/"

  "scope": ["/"],

}

Note: Using QQ News as an example, the whole of QQ would probably not make a great app.


Rough Notes

More Examples:

{

  "name": "Facebook",

  "start_url": "https://www.facebook.com",

  "scope": {

    “include”: "/",

    "exclude": "/help"

  }

}

{

  "name": "YouTube",

  "start_url": "https://www.youtube.com/",

  "scope": {

    “include”: ["/"],

    "exclude": ["/yt", "/t"]

  }

  "stay_in_app": ["http://accounts.google.com"]

}

{

  "name": "Wikipedia",

  "start_url": "http://en.wikipedia.org/",

  "scope": ["/”]

}

{

  "name": "Twitter",

  "start_url": "https://twitter.com"

  "scope": ["/"],

}

{

  "name": "LinkedIn",

  "start_url": "https://www.linkedin.com",

  "scope": ["/"],

  "exclude": ["/about-us", "/company", "/advertising"]

}

{

  "name": "Blogger",

  "start_url": "https://www.blogger.com",

  "scope": ["/"],

  "exclude": ["/content.g"],

  "stay_in_app": ["http://accounts.google.com"]

}


{

  name: “Google”,

  start_url: “http://google.com/webhp”,

  scope: : [“/webhp”],

  open_in_app: [“http://accounts.google.com”]

}


Notes from Firefox Marketplace

1. ConnectA2 (packaged app)

2. Info Whatsap And Firefox OS (packaged app)

3. MessageMe - Gives a launch_path of /index.html but redirects to / which would exit the app. The two main screens of the app are /#conversations and /#contacts which would also open outside the app.

4. SoundCloud - Doesn't provide a launch path, what would we use as scope?

5. PenguinPop - launch_path of / should be fine

6. PacMan - launch_path of / should be fine

7. YOUZEEK - launch_path of /helixmini.v4.aspx?source=FirefoxMarketplace login page at /Auths/AltDefault.aspx would exit the app

8. Wallpaper Wonderful - launch_path of /firefox/ should be OK, single page app

9. Zombie Apocalypse - launch_path of /zombie-apocalypse/index.html?platform=kirk&p=mozilla should be OK, single page app

10. Slice Fruits (packaged app)

11. Blozzle - launch_path of /Blozzle.php?pid=6900 Probably OK as mainly a single page app. Links to other games would open outside the app and high scores board is on a separate origin, but that's probably OK. Note: Registering a high score requires submitting a form to another origin.

12. Rooftops - launch_path of / but redirects to another origin, not sure what we can do about that

13. Fruit Cut Ninja - launch_path of /fruit-cut-ninja/index.html?p=mozilla single page app probably OK

14. Pasjans/Solitaire - launch_path of / and single page app probably OK

15. 12 games in 1 - launch path of /mozilla/12in1/ probably OK

16. Air Combat - launch_path of / probably OK

17. Duck Shooting - launch_path of /DuckShooting.php?pid=6900 probably OK

18. Blocked Car - launch_path of /BlockedCar.php?pid=6900 probably OK

19. Finger Print (packaged app)

20. Chess - launch_path of /index.html single page app probably OK

Box - no launch path, what would we use?

Evernote - launch path /Home.action, settings panel of /Settings.action would open outside the app

Facebook - launch path of / probably OK

Twitter - doesn't specify a launch_path, what would we use as default scope?

Digg - don't provide a launch_path

Fire Tasks - /FireTasks/app.html# probably OK

YouTube - launch_path of / probably OK

SoundCloud - no launch path

Pinterest (packaged)

Jolicloud - no launch path

BrowserQuest (Packaged)