Combine our tests with the new regresssion_test stuff

0.3.0.dev
Richard Harding 12 years ago
parent 2505c78e5b
commit ace51a6819

@ -1,307 +0,0 @@
"""
This module provides a regression test for results of running the readability
algorithm on a variety of different real-world examples. For each page in the
test suite, a benchmark was captured that represents the current readability
results. Note that these are not necessarily ideal results, just the ones used
as a benchmark.
This allows you to tweak and change the readability algorithm and see how it
changes existing results, hopefully for the better.
"""
from lxml.html import builder as B
import lxml.html
import lxml.html.diff
import os
import os.path
import re
import readability
import sys
import unittest
import yaml
YAML_EXTENSION = '.yaml'
ORIGINAL_SUFFIX = '-orig.html'
READABLE_SUFFIX = '-rdbl.html'
RESULT_SUFFIX = '-result.html'
DIFF_SUFFIX = '-diff.html'
TEST_DATA_PATH = 'regression_test_data'
TEST_OUTPUT_PATH = 'regression_test_output'
TEST_SUMMARY_PATH = os.path.join(TEST_OUTPUT_PATH, 'index.html')
SUMMARY_CSS = '''
table, th, td {
border: 1px solid black;
border-collapse: collapse;
font-family: Georgia, 'Times New Roman', serif;
}
table {
margin: auto;
}
.skipped {
color: gray;
}
td, th {
font-size: 1.2em;
border: 1px solid black;
padding: 3px 7px 2px 7px;
}
th {
font-size: 16px;
text-align: left;
padding-top: 5px;
padding-bottom: 4px;
}
'''
READABILITY_CSS = '''
#article {
margin: 0 auto;
max-width: 705px;
min-width: 225px;
font-family: Georgia, 'Times New Roman', serif;
font-size: 19px;
line-height: 29px;
}
#article p {
font-size: 19px;
line-height: 29px;
margin: 19px 0px 19px 0px;
}
ins {
background-color: #C6F7C3;
text-decoration: none;
}
ins img {
border-width: 3px;
border-style: dotted;
border-color: #51B548;
}
del {
background-color: #F7C3C3;
text-decoration: none;
}
del img {
border-width: 3px;
border-style: dotted;
border-color: #D12626;
}
'''
class ReadabilityTest:
def __init__(
self, dir_path, enabled, name, desc, notes, orig_path, rdbl_path
):
self.dir_path = dir_path
self.enabled = enabled
self.name = name
self.desc = desc
self.notes = notes
self.orig_path = orig_path
self.rdbl_path = rdbl_path
class ReadabilityTestData:
def __init__(self, test, orig_html, rdbl_html):
self.test = test
self.orig_html = orig_html
self.rdbl_html = rdbl_html
class ReadabilityTestResult:
def __init__(self, test_data, result_html, diff_html):
self.test_data = test_data
self.result_html = result_html
self.diff_html = diff_html
def read_yaml(path):
with open(path, 'r') as f:
return yaml.load(f)
def make_path(dir_path, name, suffix):
return os.path.join(dir_path, ''.join([name, suffix]))
def make_readability_test(dir_path, name, spec_dict):
if 'enabled' in spec_dict:
enabled = spec_dict['enabled']
else:
enabled = True
if 'notes' in spec_dict:
notes = spec_dict['notes']
else:
notes = ''
return ReadabilityTest(
dir_path,
enabled,
name,
spec_dict['test_description'],
notes,
make_path(dir_path, name, ORIGINAL_SUFFIX),
make_path(dir_path, name, READABLE_SUFFIX)
)
def load_test_data(test):
if test.enabled:
orig = open(test.orig_path, 'r').read()
rdbl = open(test.rdbl_path, 'r').read()
return ReadabilityTestData(test, orig, rdbl)
else:
return None
def load_readability_tests(dir_path, files):
yaml_files = [f for f in files if f.endswith(YAML_EXTENSION)]
yaml_paths = [os.path.join(dir_path, f) for f in yaml_files]
names = [re.sub('.yaml$', '', f) for f in yaml_files]
spec_dicts = [read_yaml(p) for p in yaml_paths]
return [
make_readability_test(dir_path, name, spec_dict)
for (name, spec_dict) in zip(names, spec_dicts)
]
def execute_test(test_data):
if test_data is None:
return None
else:
doc = readability.Document(test_data.orig_html)
summary = doc.summary()
diff = lxml.html.diff.htmldiff(test_data.rdbl_html, summary.html)
return ReadabilityTestResult(test_data, summary.html, diff)
def element_string_lengths(elems):
return [len(e.xpath('string()')) for e in elems]
class ResultSummary():
def __init__(self, result):
doc = lxml.html.fragment_fromstring(result.diff_html)
insertions = doc.xpath('//ins')
insertion_lengths = element_string_lengths(insertions)
self.insertions = sum(insertion_lengths)
self.insertion_blocks = len(insertions)
deletions = doc.xpath('//del')
deletion_lengths = element_string_lengths(deletions)
self.deletions = sum(deletion_lengths)
self.deletion_blocks = len(deletions)
pass
def make_summary_row(test, result):
def data(suffix):
return os.path.join('..', TEST_DATA_PATH, test.name + suffix)
def output(suffix):
return test.name + suffix
if test.enabled:
s = ResultSummary(result)
return B.TR(
B.TD(test.name),
B.TD('%d (%d)' % (s.insertions, s.insertion_blocks)),
B.TD('%d (%d)' % (s.deletions, s.deletion_blocks)),
B.TD(
B.A('original', href = data(ORIGINAL_SUFFIX)),
' ',
B.A('benchmark', href = output(READABLE_SUFFIX)),
' ',
B.A('result', href = output(RESULT_SUFFIX)),
' ',
B.A('diff', href = output(DIFF_SUFFIX))
),
B.TD(test.notes)
)
else:
return B.TR(
B.CLASS('skipped'),
B.TD('%s (SKIPPED)' % test.name),
B.TD('N/A'),
B.TD('N/A'),
B.TD('N/A'),
B.TD(test.notes)
)
def make_summary_doc(tests_w_results):
tbody = B.TBODY(
B.TR(
B.TH('Test Name'),
B.TH('Inserted (in # of blocks)'),
B.TH('Deleted (in # of blocks)'),
B.TH('Links'),
B.TH('Notes')
)
)
for (test, result) in tests_w_results:
row = make_summary_row(test, result)
tbody.append(row)
return B.HTML(
B.HEAD(
B.TITLE('Readability Test Summary'),
B.STYLE(SUMMARY_CSS, type = 'text/css')
),
B.BODY(
B.TABLE(
tbody
)
)
)
def write_summary(path, tests_w_results):
doc = make_summary_doc(tests_w_results)
with open(path, 'w') as f:
f.write(lxml.html.tostring(doc))
def add_css(doc):
style = B.STYLE(READABILITY_CSS, type = 'text/css')
head = B.HEAD(style, content = 'text/html; charset=utf-8')
doc.insert(0, head)
def write_output_fragment(fragment, output_dir_path, test_name, suffix):
doc = lxml.html.document_fromstring(fragment)
add_css(doc)
html = lxml.html.tostring(doc)
file_name = ''.join([test_name, suffix])
path = os.path.join(output_dir_path, file_name)
with open(path, 'w') as f:
f.write(html)
def write_result(output_dir_path, result):
test_name = result.test_data.test.name
specs = [
(result.test_data.rdbl_html, READABLE_SUFFIX),
(result.diff_html, DIFF_SUFFIX),
(result.result_html, RESULT_SUFFIX)
]
for (html, suffix) in specs:
write_output_fragment(html, output_dir_path, test_name, suffix)
def print_test_info(test):
name_string = '%s' % test.name
if test.enabled:
skipped = ''
else:
skipped = ' (SKIPPED)'
print('%20s: %s%s' % (name_string, test.desc, skipped))
def run_readability_tests():
files = os.listdir(TEST_DATA_PATH)
tests = load_readability_tests(TEST_DATA_PATH, files)
test_datas = [load_test_data(t) for t in tests]
results = [execute_test(t) for t in test_datas]
for (test, result) in zip(tests, results):
print_test_info(test)
if result:
write_result(TEST_OUTPUT_PATH, result)
write_summary(TEST_SUMMARY_PATH, zip(tests, results))
def main():
if len(sys.argv) > 1 and sys.argv[1] == 'unittest':
del sys.argv[1]
return unittest.main()
run_readability_tests()
if __name__ == '__main__':
main()

@ -1,664 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
<head>
<title>June Web browser stats: Rapid Release edition</title>
<!-- Begin CSS -->
<link rel="stylesheet" type="text/css" href="http://static.arstechnica.net//public/v6/styles/light/light.c.css?1309476728" media="screen" />
<link rel="stylesheet" type="text/css" href="http://static.arstechnica.net//public/v6/styles/print/print.css?1309476728" media="print" />
<!-- End CSS -->
<link rel="apple-touch-icon" href="http://static.arstechnica.net/apple-touch-icon.png" />
<link rel="canonical" href="http://arstechnica.com/web/news/2011/07/june-browser-stats-rapid-release-edition.ars" />
<link rel="shorturl" href="http://arst.ch/q4c" />
<link rel="shortlink" href="http://arst.ch/q4c" />
<link rev="canonical" href="http://arst.ch/q4c" />
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Ars Technica" />
<link rel="shortcut icon" href="http://static.arstechnica.net/favicon.ico" />
<link rel="icon" type="image/x-icon" href="http://static.arstechnica.net/favicon.ico" />
<!-- Begin Feeds -->
<link rel="alternate" type="application/rssxml" title="The Web" href="http://feeds.arstechnica.com/arstechnica/web/" />
<link rel="alternate" type="application/rss+xml" title="All Articles " href="http://feeds.arstechnica.com/arstechnica/everything" />
<!-- End Feeds -->
<!-- C-razy IE9 stuff -->
<meta name="application-name" content="Ars Technica"/>
<meta name="msapplication-starturl" content="http://arstechnica.com/"/>
<meta name="msapplication-tooltip" content="Ars Technica: Serving the technologist for 1.2 decades"/>
<meta name="msapplication-task" content="name=News;action-uri=http://arstechnica.com/;icon-uri=http://arstechnica.com/favicon.ico"/>
<meta name="msapplication-task" content="name=Features;action-uri=http://arstechnica.com/features/;icon-uri=http://static.arstechnica.net/ie-jump-menu/jump-features.ico"/>
<meta name="msapplication-task" content="name=OpenForum;action-uri=http://arstechnica.com/civis/;icon-uri=http://static.arstechnica.net/ie-jump-menu/jump-forum.ico"/>
<meta name="msapplication-task" content="name=One Microsoft Way;action-uri=http://arstechnica.com/microsoft/;icon-uri=http://static.arstechnica.net/ie-jump-menu/jump-omw.ico"/>
<meta name="msapplication-task" content="name=Subscribe;action-uri=http://arstechnica.com/subscriptions/;icon-uri=http://static.arstechnica.net/ie-jump-menu/jump-subscribe.ico"/>
<!-- Begin Metadata -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=1000" />
<meta name="description" content="In our monthly look at the world of Web browser market share statistics, we take a look at the first impact of Mozilla's new Rapid Release policy for Firefox and also consider why some Chrome users aren't aboard Google's update bandwagon." />
<meta name="keywords" content="" />
<meta name="title" content="June Web browser stats: Rapid Release edition" />
<link rel="image_src" href="http://static.arstechnica.net/assets/2011/03/firefox-09-small-thumb-300x169-20442-f.jpg" />
<meta name="medium" content="news" />
<meta name="entry_id" content="51247" />
<meta property="og:title" content="June Web browser stats: Rapid Release edition"/>
<meta property="og:site_name" content="Ars Technica"/>
<meta property="og:image" content="http://static.arstechnica.net/assets/2011/03/firefox-09-small-thumb-300x169-20442-f.jpg"/>
<meta name="advertising" content="ask" />
<meta property="fb:admins" content="13703630" />
<!-- End Metadata -->
<!-- Entry - itbiz_general_computing -->
<style type="text/css" id="resource-styles"> </style>
<script type="text/javascript" src="/public/shared/scripts/da-1.5.js"></script>
<script type="text/javascript">
try {
cnp.ad.dart.setSite("ars.dart");
cnp.ad.dart.setZone('itbiz_general_computing');
//cnp.ad.dart.addParameterString('kw=june-browser-stats-rapid-release-edition;kw=07;kw=2011;kw=news;kw=web;');
cnp.ad.dart.addParameterString('mtfIFPath=/mt-static/plugins/ArsTheme/ad-campaigns/doubleclick/');
cnp.ad.emptyFrameSrc="/public/shared/scripts/empty.html";
cnp.ad.loaderFrameSrc="/public/shared/scripts/ad-loader-frame.html";
} catch(e) {}
</script>
<script type="text/javascript" charset="utf-8">
// In case someone on a desktop clicks a mobile #! link
var l = window.location;
if(l.hash.indexOf('#!') !== -1){
window.location = l.protocol + '//' + l.host + l.hash.slice(2);
}
</script>
</head>
<body class="individual">
<div id="page" class="">
<div id="masthead" class="">
<div id="logo"><a href="/"><img src="http://static.arstechnica.net//public/v6/styles/light/images/masthead/logo.png?1309476728" alt="Ars Technica: The Art of Technology" width="110" height="81" /></a></div>
<div id="ebc51ce07629d0e14d2fbc4236e44067" >
<script type="text/javascript">
var pbanner_start = new Date();
try {
var pbanner = cnp.ad.create(cnp.ad.refreshable, false);
//pbanner.addParameter({'dcopt':'ist'});
pbanner.addParameterString('kw=june-browser-stats-rapid-release-edition;kw=07;kw=2011;kw=news;kw=web;');
pbanner.addParameter({'sz': '728x90' });
} catch(e) {}
</script>
</div>
</div>
<div id="search-navigation">
<div id="search">
<a id="search-link" href="http://www.google.com/cse?cx=011835048811694782689:7zpko-isndo">Search</a>
<div class="form">
<span>Search:</span>
<form action="http://www.google.com/cse" id="search-form">
<div>
<input type="hidden" value="011835048811694782689:7zpko-isndo" name="cx"/>
<input type="hidden" value="UTF-8" name="ie"/>
<input type="text" id="search-form-text" value="" name="q"/>
</div>
</form>
</div>
</div>
<div id="navigation">
<ul id="primary-navigation">
<li class=""><a href="/">All</a></li>
<li class="apple"><a href="/apple/">Apple</a></li>
<li class="ask-ars"><a href="/ask-ars/">Ask Ars</a></li>
<li class="business"><a href="/business/">Business</a></li>
<li class="gadgets"><a href="/gadgets/">Gadgets</a></li>
<li class="gaming"><a href="/gaming/">Gaming</a></li>
<li class="microsoft"><a href="/microsoft/">Microsoft</a></li>
<li class="open-source"><a href="/open-source/">Open Source</a></li>
<li class="science"><a href="/science/">Science</a></li>
<li class="tech-policy"><a href="/tech-policy/">Tech Policy</a></li>
<li id="primary-navigation-more" style="display:none;">
More
<ul >
<li><a href="/hardware/">Hardware</a></li>
<li><a href="/media/">Media</a></li>
<li><a href="/security/">Security</a></li>
<li><a href="/software/">Software</a></li>
<li><a href="/staff/">Staff</a></li>
<li><a href="/telecom/">Telecom</a></li>
<li><a href="/web/">Web</a></li>
<li style="padding:0;"><span style="display:inline;background-color: #920404; padding: 3px; color:white; -webkit-border-radius: 4px;">New</span> <a style="display:inline;" href="/site/tv.ars" title="Ars Technica TV">Ars.TV</a></li>
</ul>
</li>
</ul>
<ul id="secondary-navigation" class="web">
<li class="news selected"><a href="/web/news/">News</a></li>
<li class="guides"><a href="/web/guides/">Guides</a></li>
<li class="reviews"><a href="/web/reviews/">Reviews</a></li>
</ul>
<ul id="auxiliary-navigation">
<li class="subscribe"><a href="/subscriptions/">Upgrade to a Premier Subscription</a>
</li>
<li class="customize" style="display:none;">
<a href="#">Customize ▾</a>
<ul>
<li>
<p>Site Theme:</p>
<label><input type="radio" checked="checked" value="light.css" class="site-style" name="site-style" /> White</label>
<label><input type="radio" value="dark.css" class="site-style" name="site-style" /> Black</label>
</li>
<li>
<p>Choose body font:</p>
<label><input type="radio" checked="checked" value="arial" class="body_font" name="body_font" /> Arial</label>
<label><input type="radio" value="helvetica" class="body_font" name="body_font" /> Helvetica</label>
</li>
<li>
<p>Layout (beta):</p>
<label><input type="radio" checked="checked" value="normal" class="fp_layout" name="fp_layout" /> Normal</label>
<label><input type="radio" value="compact" class="fp_layout" name="fp_layout" /> Compact</label>
</li>
</ul>
</li>
<li class="openforum"><a href="http://arstechnica.com/civis/">OpenForum</a></li>
<li class="login-join"><a href="/civis/ucp.php?mode=login&amp;return_to=http%3A%2F%2Farstechnica.com%2Fweb%2Fnews%2F2011%2F07%2Fjune-browser-stats-rapid-release-edition.ars">Login/Join</a></li>
</ul>
</div>
</div>
<div id="main">
<div id="silo-header" class="">
<h1 class="web"><a href="/web/" title="Go to The Web">The Web</a></h1>
</div>
<div id="content" class="normal"> <div id="content-inner">
<div id="story">
<h2 class="title">June Web browser stats: Rapid Release edition</h2>
<div class="byline"><span class="author">By <a rel="author" href="/author/peter-bright/">Peter Bright</a>
</span> | <span class="posted"><span class="published updated"><span class="name">Published </span> <abbr class="timeago datetime" title="2011-07-06T16:00:00Z">July 6, 2011 11:00 AM</abbr></span><span class="modified" style="display:none;"><span class="name">Last updated </span> <abbr class="timeago datetime" title="2011-07-06T16:33:33Z">July 6, 2011 11:33 AM</abbr></span></span></div>
<div class="story-image" style="width:300px;">
<img width="300" src="http://static.arstechnica.net/opensource/firefox-09-small.jpg" alt="" />
</div>
<div id="" class="body" style="">
<!--body--><p>June brought the first result of Mozilla's new Rapid Release strategy for Firefox. Firefox 4, just three months old, was superceded by the all-new but not-too-different <a href="http://arstechnica.com/open-source/news/2011/06/firefox-5-released-arrives-only-three-months-after-firefox-4.ars">Firefox 5</a>. Firefox's market growth was all but ended by the release of Chrome, and Mozilla is hoping that by adopting a similar release schedule to Google, it will be able to reignite the growth of its user base.</p><!--page 1-->
<p>Internet Explorer is down 0.59 points at 53.68 percent. Firefox is essentially unchanged, down 0.04 points to 21.67 percent. Chrome is up 0.59 points to 13.11 percent. Safari is also up, gaining 0.2 points to reach 7.48 percent. Opera dropped 0.3 points to 1.73 percent.</p>
<div style="width: 640px;" class="news-item-figure CenteredImage"><div class="news-item-figure-image" style=""><img src="http://static.arstechnica.com/browsers-june-2011/global-browser-share.png" /></div><div class="news-item-figure-caption"><div class="news-item-figure-caption-byline"><a href="http://netmarketshare.com/">Net Applications</a></div></div></div>
<p>The trends established over the last few months are continuing: Firefox is treading water, while Internet Explorer is losing users, which seem to be being picked up by Chrome. In the past two months, Opera has dropped 0.41 points&#8212;that's a loss representing 20% of its market share. Our own Ryan Paul <a href="http://arstechnica.com/software/reviews/2011/06/hands-on-opera-1150s-new-featherweight-interface-packs-a-punch.ars">liked Opera 11.50</a>, which was released just a couple of days ago, so perhaps this will help turn around a perilous slide.</p>
<p>Looking at individual versions, Internet Explorer 6, 7, and 8 are all down, by 0.18, 0.46, and 1.21 points respectively. Internet Explorer 9 made strong gains, of 1.44 points, but not enough to undo the losses. Internet Explorer 9's gains seem to be occurring at the expense of older versions&#8212;Internet Explorer 8 on Windows 7, versions 7 and 8 on Windows Vista&#8212;rather than making converts of the other browsers.</p>
<div style="width: 640px;" class="news-item-figure CenteredImage"><div class="news-item-figure-image" style=""><img src="http://static.arstechnica.com/browsers-june-2011/internet-explorer-transition.png" /></div><div class="news-item-figure-caption"><div class="news-item-figure-caption-byline"><a href="http://netmarketshare.com/">Net Applications</a></div></div></div>
<p>Internet Explorer 9 is of course at something of a disadvantage, as it won't run on Windows XP. While we <a href="http://arstechnica.com/microsoft/news/2010/04/why-microsoft-did-the-right-thing-in-ditching-xp-for-ie9.ars">agree with the decision to cut Windows XP off</a>, one consequence is that not a single Internet Explorer 6 user can upgrade to Internet Explorer 9. Nor can anyone using Internet Explorer 7 or 8 on Windows XP. If the focus is narrowed from all users to just those using Windows 7, the Internet Explorer 9 situation looks a little more promising. Though Internet Explorer 8, which ships with Windows 7, commands the highest market share, at 38.47 percent of Windows 7 users, Internet Explorer 9 takes second place, at 15.61 percent&#8212;putting it ahead of Firefox 4 and Chrome 12, at 13.74 and 11.60 percent, respectively.</p>
<p>Internet Explorer 9 seems, therefore, to be performing well among users of Microsoft's latest and greatest operating system; it's just that only 27 percent of the global audience is running that platform. Windows XP still commands a slim majority, with a global share of 51 percent. As Windows XP declines and Windows 7 grows, we can expect to see Internet Explorer 9 lifted by this transition.</p>
<div style="width: 640px;" class="news-item-figure CenteredImage"><div class="news-item-figure-image" style=""><img src="http://static.arstechnica.com/browsers-june-2011/firefox-transition.png" /></div><div class="news-item-figure-caption"><div class="news-item-figure-caption-byline"><a href="http://netmarketshare.com/">Net Applications</a></div></div></div>
<p>Firefox versions 3.5 and 3.6 both saw drops last month, by 2.06 and 0.28 points, respectively, and versions 4 and 5 rose by 0.38 and 2.05 points, respectively. This suggests that the transition from "old" Firefox (3.x) to "modern" Firefox (4 and 5) is slowing down; in May, the 3.x versions dropped by an aggregate of more than 4.5 points, with the then-current Firefox 4 picking up all of those users. This month, only around half as many users made the switch. Though "modern" Firefox versions are now used by a majority of Firefox users, it looks like a hard core of "old" users is going to stick around. Over the next few months, we can expect Firefox 3.5 to decline more heavily, as Mozilla intends to push out a patch that will upgrade users to the newest 3.6 version.</p>
<div style="width: 640px;" class="news-item-figure CenteredImage"><div class="news-item-figure-image" style=""><img src="http://static.arstechnica.com/browsers-june-2011/chrome-transition.png" /></div><div class="news-item-figure-caption"><div class="news-item-figure-caption-byline"><a href="http://netmarketshare.com/">Net Applications</a></div></div></div>
<p>Chrome as ever shows rapid migration between versions. Over the course of June, the browser's stable version went from 11 to 12, and the rapid cutover we've grown to expect occurred. However, that transition isn't complete. 1.39 percent of users are on Chrome 10 or older, and it looks like Google's generally seamless automatic upgrades aren't touching these users. The source of these users isn't clear, though there a few plausible explanations. Obviously, some individuals and corporate users may simply have opted to disable the updates. Automatic updating is the default, but it can be turned off. Though this gives these users and enterprises greater control over the browser version they're using, this comes at some risk; Google doesn't have security updates for old versions of Chrome, so these people are using browsers with known exploitable flaws.</p>
<p>Chrome's automatic updating is also dependent on a system service. Though the browser can be installed by non-administrators, installation of the service requires administrator privileges. Unlike Firefox, which checks for and performs updates within the browser itself, Chrome depends on its service to do this task. If the service doesn't exist, updates don't happen.</p>
<p>That's probably not enough to account for every legacy Chrome user, however. To do that, we probably have to look towards the East Asian market. A long-standing feature of various markets in the region, most notably China and South Korea, is the entrenchment of Internet Explorer, variously attributed to legal mandates (especially in South Korea, where until last year a specific ActiveX control was required for online banking) and widespread software piracy making users reluctant to use Windows Update (even though Internet Explorer upgrades are available to pirated copies of the operating system).</p>
<p>To support this market, a range of browsers based on Internet Explorer's rendering engine, but with substantially greater features, sprung up. The <a href="http://data.cnzz.com/main.php?s=brow">most popular</a> of these are <a href="http://se.360.cn/">360 Secure Browser</a> with about 19 percent share of the Chinese market, and <a href="http://ie.sogou.com/">Sogou high speed browser</a>, with a little under 6 percent. Though these browsers originally just used the Trident engine that powers Internet Explorer, recent versions extend this by also embedding Chrome. In so doing, they give their users a choice between a relatively modern Chrome browser engine, and the older Internet Explorer engine needed for compatibility. Conceptually, this is very similar to software like <a href="http://code.google.com/chrome/chromeframe/">Chrome Frame</a>, that allows Internet Explorer users to use Chrome for some browser tabs.</p>
<div style="width: 640px;" class="news-item-figure CenteredImage"><div class="news-item-figure-image" style=""><a href="http://static.arstechnica.com/browsers-june-2011/sogou-ie.png"><img src="http://static.arstechnica.com/browsers-june-2011/thumb-sogou-ie.png" /></a></div><div class="news-item-figure-caption"><div class="news-item-figure-caption-text">Sogou browser running as Internet Explorer</div><div class="news-item-figure-caption-byline">Thanks to Ars reader WJ</div></div></div>
<p>These dual-engine browsers tend to modify Chrome in several ways, one of which is that they exclude Google's automatic update service. They also tend to embed stale versions of Chrome; the current Sogou uses Chrome 6. The result is that users of these browsers, who may well prefer using Chrome for day-to-day browsing, will be stuck with obsolete versions of the browser. And because of the way they're using Chrome, they're out of reach of Google's update system.</p>
<div style="width: 640px;" class="news-item-figure CenteredImage"><div class="news-item-figure-image" style=""><a href="http://static.arstechnica.com/browsers-june-2011/sogou-chrome.png"><img src="http://static.arstechnica.com/browsers-june-2011/thumb-sogou-chrome.png" /></a></div><div class="news-item-figure-caption"><div class="news-item-figure-caption-text">Sogou browser using its embedded Chrome</div><div class="news-item-figure-caption-byline">Thanks to Ars reader WJ</div></div></div>
<p>The net result of these various usage scenarios is that Chrome's non-upgrading userbase is likely to grow ever larger, with ten percent of Chrome users, and climbing, sticking with versions of the browser that are no longer supported.</p>
<div style="width: 640px;" class="news-item-figure CenteredImage"><div class="news-item-figure-image" style=""><img src="http://static.arstechnica.com/browsers-june-2011/ars-browser-share.png" /></div><div class="news-item-figure-caption"><div class="news-item-figure-caption-byline">Ars Technica</div></div></div>
<p>Ars' audience continues to show marked differences from the Internet's norms. Firefox, Safari, Internet Explorer, and Opera all saw drops, of 0.94, 0.37, 0.04, and 0.10 points respectively; Chrome saw gains of 0.88 points, with the remainder of the difference picked up by "other."</p>
</div>
<!-- Article Pager -->
</div>
<noscript>
<img style="position: absolute; bottom: 0px; right: 0px; width: 1px; height: 1px;" src="http://arstechnica.com/dragons/brains.gif?id=51247&amp;1396906973" alt="" />
</noscript>
<script type="text/javascript">
document.write('<img style="position: absolute; bottom: 0px; right: 0px; width: 1px; height: 1px;" src="http://arstechnica.com/dragons/brains.gif?id=51247&amp;' + (parseInt(Math.random()*99999999, 10)).toString() + '" alt="" />');
</script>
<!--googleoff: all-->
<div id="comments-bar" class="with-bubble">
<h2>User comments</h2>
<div class="comments-link">
<a name="comments-bar" rel="nofollow" href="/web/news/2011/07/june-browser-stats-rapid-release-edition.ars?comments=1#comments-bar">Click here to view the 81 comments on this story</a>
</div>
</div>
<div id="hiddencomment"></div>
<!--<div id="alert"><p><img src="http://arstechnica.com/civis/images/smilies/flail.gif" /> We're making some updates to the commenting system. We should have the kinks worked out soon.</p></div>-->
<!--googleon: all-->
<div id="links-bar">
<ul>
<li class="facebook">
<iclint src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Farstechnica.com%2Fweb%2Fnews%2F2011%2F07%2Fjune-browser-stats-rapid-release-edition.ars&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:85px; height:21px;" allowTransparency="true"></iclint>
</li>
<li><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://arst.ch/q4c" data-counturl="http://arstechnica.com/web/news/2011/07/june-browser-stats-rapid-release-edition.ars" data-count="horizontal" data-via="arstechnica" data-related="drpizza:Peter Bright">Tweet</a></li>
<li class="reddit">
<iclint src="http://www.reddit.com/static/button/button1.html?width=120&url=http%3A%2F%2Farstechnica.com%2Fweb%2Fnews%2F2011%2F07%2Fjune-browser-stats-rapid-release-edition.ars&amp;title=June%20Web%20browser%20stats%3A%20Rapid%20Release%20edition&amp;bgcolor=fff&amp;bordercolor=eee" width="120" height="20" scrolling="no" frameborder="0"></iclint>
</li>
<li class="share">
<a class="a2a_dd" href="http://www.addtoany.com/share_save?linkname=June%20Web%20browser%20stats%3A%20Rapid%20Release%20edition&amp;linkurl=http%3A%2F%2Farstechnica.com%2Fweb%2Fnews%2F2011%2F07%2Fjune-browser-stats-rapid-release-edition.ars"><img src="http://static.addtoany.com/buttons/favicon.png" width="16" height="16" border="0" alt="Share/Bookmark" style="display:inline;vertical-align:middle;"/> Share/Email</a>
<script type="text/javascript">
var a2a_linkname="June Web browser stats: Rapid Release edition",
a2a_linkurl="http://arstechnica.com/web/news/2011/07/june-browser-stats-rapid-release-edition.ars",
a2a_onclick=1,
a2a_show_title=1,
a2a_hide_embeds=0,
a2a_num_services=8,
a2a_color_main="989EA3",
a2a_color_border="989EA3",
a2a_color_link_text="FF5B00",
a2a_color_link_text_hover="ffffff",
a2a_track_links='ga',
a2a_prioritize= [
"digg",
"yahoo_buzz",
"stumbleupon",
"instapaper",
"slashdot",
"linkedin",
"delicious",
"google_reader",
"tumblr",
"posterous"
];
var a2a_config = a2a_config || {};
a2a_config.no_3p = 1;
</script>
<style type="text/css">#a2apage_BROWSER { display:none !important; }</style>
</li>
<li class="copypasta copy-pasta-button">Make a correction</li>
</ul>
</div>
<!--googleoff: all-->
<div id="read-more-stories">
<h2>Read more stories</h2>
<div class="story-navigation">
<a href="/gadgets/news/2011/07/amazon-appstore-game-developer-pulls-app-highlights-problems.ars" title="Read the previously published article">&lt; Older Story</a>
|
<a href="/tech-policy/news/2011/07/copyright-troll-righthaven-now-starts-paying-those-it-sued.ars" title="Read the next newest article">Newer Story &gt;</a>
</div>
<!--googleoff: all-->
<script language='JavaScript'>
var OB_langJS = "http://static.arstechnica.net//public/v6/scripts/outbrain.lang_en_ars.js",OBITm = '1306449288604',OB_raterMode = 'singlethumb',OB_recMode = 'strip',OutbrainPermaLink='http://arstechnica.com/web/news/2011/07/june-browser-stats-rapid-release-edition.ars';
if (typeof(OB_Script)!='undefined' ){OutbrainStart();}else{var OB_Script = true,str = unescape("%3Cscript src=\'http://widgets.outbrain.com/OutbrainRater.js\' type=\'text/javascript\'%3E%3C/script%3E");document.write(str);}
</script>
<!--googleon: all-->
</div>
<!--googleon: all-->
</div>
</div>
<!--googleoff: all-->
<div id="sidebar">
<div id="article-links" class="with-divider" style="display:none;">
<ul>
<li class="enlarge-text"><a href="#">Increase text size</a></li>
<li class="shrink-text"><a href="#">Reduce text size</a></li>
<li class="print"><a href="#">Print this story</a></li>
<li class="comment"><a href="/web/news/2011/07/june-browser-stats-rapid-release-edition.ars?comments=1#comments-bar#comments-bar">Leave a comment (81)</a></li>
<li class="copy-pasta-button edit-suggestion" style="display: none;"><a href="#">Make a correction</a></li>
<li class="shorturl"><a rel="nofollow" href="http://arst.ch/q4c">http://arst.ch/q4c</a></li>
</ul>
</div>
<style type="text/css" media="screen">
#gwmdRBfSihEbZa {
height: 250px;
width: 300px;
min-height: 250px;
margin-bottom: 10px;
padding-bottom: 10px;
}
#gwmdRBfSihEbZa.tall {
height: 600px;
}
body.premium-adset #gwmdRBfSihEbZa {
/* height: 600px; */
}
</style>
<abbr></abbr>
<blah></blah>
<abbr></abbr>
<div id="gwmdRBfSihEbZa" class="">
<noscript>
<div id="help-by-subscribing">
<a href="/gadgets/news/2011/07/dual-core-motorola-droid-3-launches-july-14-for-199-on-verizon.ars/2"><img src="/gadgets/news/2011/07/dual-core-motorola-droid-3-launches-july-14-for-199-on-verizon.ars/4" alt="Please subscribe" /></a></div>
</noscript>
<script type="text/javascript">
try {
var ppanel = cnp.ad.create(cnp.ad.refreshable, false);
ppanel.addParameter({'sz':'300x250'});
ppanel.addParameterString('kw=top;kw=june-browser-stats-rapid-release-edition;kw=07;kw=2011;kw=news;kw=web;');
ppanel.load();
} catch(e) {}
</script>
</div>
<div id="journals-box" class="with-divider">
<h2 class="title">Latest Top Stories</h2>
<ul class="category">
<li class="all selected">
<span class="tab-inner">
<a href="/" title="All">All</a>
</span>
</li>
<li class="apple">
<span class="tab-inner">
<a href="/apple/" title="Apple">Apple</a>
</span>
</li>
<li class="gaming">
<span class="tab-inner">
<a href="/gaming/" title="Gaming">Gaming</a>
</span>
</li>
<li class="microsoft">
<span class="tab-inner">
<a href="/microsoft/" title="Microsoft">Microsoft</a>
</span>
</li>
<li class="gadgets">
<span class="tab-inner">
<a href="/gadgets/" title="Gadgets">Gadgets</a>
</span>
</li>
<li class="open-source">
<span class="tab-inner">
<a href="/open-source/" title="Open Source">Open Source</a>
</span>
</li>
<li class="business">
<span class="tab-inner">
<a href="/business/" title="Business">Business</a>
</span>
</li>
<li class="science">
<span class="tab-inner">
<a href="/science/" title="Science">Science</a>
</span>
</li>
<li class="tech-policy">
<span class="tab-inner">
<a href="/tech-policy/" title="Tech Policy">Tech Policy</a>
</span>
</li>
<li class="staff">
<span class="tab-inner">
<a href="/staff/" title="Staff">Staff</a>
</span>
</li>
</ul>
<ul class="stories">
<li id="journal-box-0" class="gadgets">
<a href="/gadgets/news/2011/07/dual-core-motorola-droid-3-launches-july-14-for-199-on-verizon.ars">Dual-core Motorola Droid 3 launches July 14 for $199 on Verizon</a>
</li>
<li id="journal-box-1" class="tech-policy">
<a href="/tech-policy/news/2011/07/major-isps-agree-to-six-strikes-copyright-enforcement-plan.ars">Major ISPs agree to "six strikes" copyright enforcement plan</a>
</li>
<li id="journal-box-2" class="gaming">
<a href="/gaming/news/2011/07/sony-to-include-mandatory-psn-pass-codes-in-first-party-games.ars">Sony to include one-time use "PSN Pass" code in its games</a>
</li>
<li id="journal-box-3" class="gaming">
<a href="/gaming/news/2011/07/journey-turns-strangers-to-friends-in-odd-desolate-landscape.ars"><em>Journey</em> turns strangers into friends in odd, desolate landscape</a>
</li>
<li id="journal-box-4" class="science">
<a href="/science/news/2011/07/is-science-getting-harder-first-define-easy.ars">Is scientific progress slowing? Depends how you measure it</a>
</li>
<li id="journal-box-5" class="tech-policy">
<a href="/tech-policy/news/2011/07/did-the-titanic-disaster-let-uncle-sam-take-over-the-airwaves.ars">How the <em>Titanic</em> disaster pushed Uncle Sam to "rule the air"</a>
</li>
<li id="journal-box-6" class="web">
<a href="/web/news/2011/07/facebook-video-chatting-handy-definitely-not-awesome.ars">Analysis: Facebook video chatting handy, definitely not "awesome"</a>
</li>
<li id="journal-box-7" class="tech-policy">
<a href="/tech-policy/news/2011/07/dozens-of-law-professors-protect-ip-act-is-unconstitutional.ars">Dozens of law professors: PROTECT IP Act is unconstitutional</a>
</li>
<li id="journal-box-8" class="tech-policy">
<a href="/tech-policy/news/2011/07/should-net-neutrality-protect-third-party-mobile-tethering-apps.ars">Does net neutrality protect mobile tethering apps?</a>
</li>
<li id="journal-box-9" class="apple">
<a href="/apple/news/2011/07/wsj-next-iphone-to-be-thinner-and-lighter-than-iphone-4.ars">WSJ: next iPhone to be "thinner and lighter" than iPhone 4</a>
</li>
<li id="journal-box-10" class="apple">
<a href="/apple/news/2011/07/iphone-users-spend-147-hours-a-month-playing-games.ars">iPhone users spend 14.7 hours a month playing games</a>
</li>
<li id="journal-box-11" class="tech-policy">
<a href="/tech-policy/news/2011/07/copyright-troll-righthaven-now-starts-paying-those-it-sued.ars">Copyright troll Righthaven now starts paying those it sued</a>
</li>
<li id="journal-box-12" class="web">
<a href="/web/news/2011/07/june-browser-stats-rapid-release-edition.ars">June Web browser stats: Rapid Release edition</a>
</li>
<li id="journal-box-13" class="gadgets">
<a href="/gadgets/news/2011/07/amazon-appstore-game-developer-pulls-app-highlights-problems.ars">Amazon Appstore problems: why one developer pulled its game</a>
</li>
<li id="journal-box-14" class="science">
<a href="/science/news/2011/07/ocean-sediment-promising-source-of-rare-earth-metals.ars">Why ocean mud might matter to your future iPhone</a>
</li>
</ul>
</div>
<div class="with-divider" id="fb">
<iclint src="http://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Ffacebook.com%2Farstechnica&amp;width=300&amp;colorscheme=light&amp;show_faces=false&amp;stream=false&amp;header=false&amp;height=62&amp;border_color=%23FFFFFF" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:300px; height:62px;" allowTransparency="true"></iclint>
<iclint src="http://www.facebook.com/plugins/activity.php?site=arstechnica.com&amp;width=300&amp;height=370&amp;header=false&amp;colorscheme=light&amp;recommendations=false&amp;border_color=%23FFFFFF" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:300px; height:370px;" allowTransparency="true"></iclint>
<p><a href="#" class="anonymous">Disable Facebook on Ars</a></p>
</div>
<style type="text/css" media="screen">
#mieBfNdjZYK {
height: 250px;
width: 300px;
min-height: 250px;
margin-bottom: 10px;
padding-bottom: 10px;
}
#mieBfNdjZYK.tall {
height: 600px;
}
body.premium-adset #mieBfNdjZYK {
/* height: 600px; */
}
</style>
<kjaskjas></kjaskjas>
<blah></blah>
<sakjasd></sakjasd>
<div></div>
<kjaskjas></kjaskjas>
<div></div>
<span></span>
<clint></clint>
<div id="mieBfNdjZYK" class="">
<noscript>
<div id="help-by-subscribing">
<a href="/gadgets/news/2011/07/dual-core-motorola-droid-3-launches-july-14-for-199-on-verizon.ars/2"><img src="/gadgets/news/2011/07/dual-core-motorola-droid-3-launches-july-14-for-199-on-verizon.ars/4" alt="Please subscribe" /></a></div>
</noscript>
<script type="text/javascript">
try {
var ppanel = cnp.ad.create(cnp.ad.refreshable, false);
ppanel.addParameter({'sz':'300x250'});
ppanel.addParameterString('kw=bottom;kw=june-browser-stats-rapid-release-edition;kw=07;kw=2011;kw=news;kw=web;');
ppanel.load();
} catch(e) {}
</script>
</div>
<div id="jobs-ars" class="with-divider">
<h2 class="title">
<span class="title">Job.Ars</span>:
<span class="subtitle">looking for a new job?</span>
</h2>
<div class="body">
<ul>
<div id="jobs-ars-content">
<ul>
<li>
<div class="job-title"><a href="//jobs.arstechnica.com/list/1027/">Software Engineer</a> at minerva-associates.com</div>
<div class="job-location">San Diego, CA</div>
</li>
<li>
<div class="job-title"><a href="//jobs.arstechnica.com/list/1026/">Software Engineer</a> at minerva-associates.com</div>
<div class="job-location">San Diego, CA</div>
</li>
<li>
<div class="job-title"><a href="//jobs.arstechnica.com/list/1025/">Senior Java / Scala Developer - Sequencing Informatics </a> at The Broad Institute</div>
<div class="job-location">Cambridge, MA</div>
</li>
<li>
<div class="job-title"><a href="//jobs.arstechnica.com/list/1024/">Senior Java / Scala Developer - Sequencing Informatics </a> at The Broad Institute</div>
<div class="job-location">Cambridge, MA</div>
</li>
<li>
<div class="job-title"><a href="//jobs.arstechnica.com/list/1022/">Web Developer for Online Organizing Incubator</a> at Citizen Engagement Laboratory</div>
<div class="job-location">San Francisco Bay Area required</div>
</li>
<li>
<div class="job-title"><a href="//jobs.arstechnica.com/list/1021/">.NET Developer (Oklahoma City &amp; Salt Lake City) </a> at a la mode, inc.</div>
<div class="job-location">Oklahoma City and Salt Lake City</div>
</li>
<li>
<div class="job-title"><a href="//jobs.arstechnica.com/list/1019/">Senior Systems Administrator</a> at Synacor</div>
<div class="job-location">Buffalo, NY</div>
</li>
<li>
<div class="job-title"><a href="//jobs.arstechnica.com/list/1018/">Network Engineer</a> at Box.net</div>
<div class="job-location">Palo Alto, CA</div>
</li>
<li>
<div class="job-title"><a href="//jobs.arstechnica.com/list/1017/">Software Engineer - Operations</a> at imo</div>
<div class="job-location">Palo Alto, CA</div>
</li>
<li>
<div class="job-title"><a href="//jobs.arstechnica.com/list/1016/">Software Engineer</a> at imo</div>
<div class="job-location">Palo Alto, CA</div>
</li>
</ul>
<div id="more-jobs"><a href="//jobs.arstechnica.com">More Job Listings</a></div>
</div> </ul>
</div>
</div>
</div>
<!--googleon: all-->
</div>
<div id="footer">
<div id="slogan">Serving the technologist for <span id="decades">1</span> &#x00d7; 10<sup>-1</sup> centuries</div>
<iframe src="http://static.arstechnica.net//public/v6/footer.html?1309476727" frameborder="0" scrolling="no" width="1000" height="350"></iframe>
</div>
</div>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-31997-1']);
_gaq.push(['_trackPageview']);
_gaq.push(['_trackPageLoadTime']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<script type="text/javascript">
var page_class = 'individual',
site_root = "",
site_root_rel = '/',
discussion_url = "",
entry_author = {
"peter bright":true,
"peter bright":true,
"drpizza":true
},
entry_id = 51247,
fp_layout = 'normal',
syntaxhighlighter = "http://arstechnica.com/public/full/scripts/syntaxhighlighter.js",
new_comments = true,
disable_fb = 'false';
</script>
<script src="http://static.arstechnica.net//public/v6/scripts/site.min.js?1309476727" type="text/javascript" charset="utf-8"></script>
<noscript>
<img src="http://b.scorecardresearch.com/b?c1=2&c2=6035094&c3=&c4=&c5=&c6=&c15=&cv=1.3&cj=1" style="position:absolute; bottom: 0px; right:0px;"
width="1" height="1" alt="" />
</noscript>
<span style="display: none" id="ArsTechnicaNews" class="hslice">
<span style="display: none" class="entry-title">Ars Technica News</span>
<a style="display: none" href="http://www.ieaddons.com/en/ie8slice/Content.ashx?id=330" rel="entry-content"></a>
</span>
</body>
</html>

@ -1,53 +0,0 @@
<div id="article"><div id="" class="body">
<p>June brought the first result of Mozilla's new Rapid Release strategy for Firefox. Firefox 4, just three months old, was superceded by the all-new but not-too-different <a href="http://arstechnica.com/open-source/news/2011/06/firefox-5-released-arrives-only-three-months-after-firefox-4.ars">Firefox 5</a>. Firefox's market growth was all but ended by the release of Chrome, and Mozilla is hoping that by adopting a similar release schedule to Google, it will be able to reignite the growth of its user base.</p>
<p>Internet Explorer is down 0.59 points at 53.68 percent. Firefox is essentially unchanged, down 0.04 points to 21.67 percent. Chrome is up 0.59 points to 13.11 percent. Safari is also up, gaining 0.2 points to reach 7.48 percent. Opera dropped 0.3 points to 1.73 percent.</p>
<div class="news-item-figure CenteredImage"><div class="news-item-figure-image"><img src="http://static.arstechnica.com/browsers-june-2011/global-browser-share.png"/></div></div>
<p>The trends established over the last few months are continuing: Firefox is treading water, while Internet Explorer is losing users, which seem to be being picked up by Chrome. In the past two months, Opera has dropped 0.41 points&#8212;that's a loss representing 20% of its market share. Our own Ryan Paul <a href="http://arstechnica.com/software/reviews/2011/06/hands-on-opera-1150s-new-featherweight-interface-packs-a-punch.ars">liked Opera 11.50</a>, which was released just a couple of days ago, so perhaps this will help turn around a perilous slide.</p>
<p>Looking at individual versions, Internet Explorer 6, 7, and 8 are all down, by 0.18, 0.46, and 1.21 points respectively. Internet Explorer 9 made strong gains, of 1.44 points, but not enough to undo the losses. Internet Explorer 9's gains seem to be occurring at the expense of older versions&#8212;Internet Explorer 8 on Windows 7, versions 7 and 8 on Windows Vista&#8212;rather than making converts of the other browsers.</p>
<div class="news-item-figure CenteredImage"><div class="news-item-figure-image"><img src="http://static.arstechnica.com/browsers-june-2011/internet-explorer-transition.png"/></div></div>
<p>Internet Explorer 9 is of course at something of a disadvantage, as it won't run on Windows XP. While we <a href="http://arstechnica.com/microsoft/news/2010/04/why-microsoft-did-the-right-thing-in-ditching-xp-for-ie9.ars">agree with the decision to cut Windows XP off</a>, one consequence is that not a single Internet Explorer 6 user can upgrade to Internet Explorer 9. Nor can anyone using Internet Explorer 7 or 8 on Windows XP. If the focus is narrowed from all users to just those using Windows 7, the Internet Explorer 9 situation looks a little more promising. Though Internet Explorer 8, which ships with Windows 7, commands the highest market share, at 38.47 percent of Windows 7 users, Internet Explorer 9 takes second place, at 15.61 percent&#8212;putting it ahead of Firefox 4 and Chrome 12, at 13.74 and 11.60 percent, respectively.</p>
<p>Internet Explorer 9 seems, therefore, to be performing well among users of Microsoft's latest and greatest operating system; it's just that only 27 percent of the global audience is running that platform. Windows XP still commands a slim majority, with a global share of 51 percent. As Windows XP declines and Windows 7 grows, we can expect to see Internet Explorer 9 lifted by this transition.</p>
<div class="news-item-figure CenteredImage"><div class="news-item-figure-image"><img src="http://static.arstechnica.com/browsers-june-2011/firefox-transition.png"/></div></div>
<p>Firefox versions 3.5 and 3.6 both saw drops last month, by 2.06 and 0.28 points, respectively, and versions 4 and 5 rose by 0.38 and 2.05 points, respectively. This suggests that the transition from "old" Firefox (3.x) to "modern" Firefox (4 and 5) is slowing down; in May, the 3.x versions dropped by an aggregate of more than 4.5 points, with the then-current Firefox 4 picking up all of those users. This month, only around half as many users made the switch. Though "modern" Firefox versions are now used by a majority of Firefox users, it looks like a hard core of "old" users is going to stick around. Over the next few months, we can expect Firefox 3.5 to decline more heavily, as Mozilla intends to push out a patch that will upgrade users to the newest 3.6 version.</p>
<div class="news-item-figure CenteredImage"><div class="news-item-figure-image"><img src="http://static.arstechnica.com/browsers-june-2011/chrome-transition.png"/></div></div>
<p>Chrome as ever shows rapid migration between versions. Over the course of June, the browser's stable version went from 11 to 12, and the rapid cutover we've grown to expect occurred. However, that transition isn't complete. 1.39 percent of users are on Chrome 10 or older, and it looks like Google's generally seamless automatic upgrades aren't touching these users. The source of these users isn't clear, though there a few plausible explanations. Obviously, some individuals and corporate users may simply have opted to disable the updates. Automatic updating is the default, but it can be turned off. Though this gives these users and enterprises greater control over the browser version they're using, this comes at some risk; Google doesn't have security updates for old versions of Chrome, so these people are using browsers with known exploitable flaws.</p>
<p>Chrome's automatic updating is also dependent on a system service. Though the browser can be installed by non-administrators, installation of the service requires administrator privileges. Unlike Firefox, which checks for and performs updates within the browser itself, Chrome depends on its service to do this task. If the service doesn't exist, updates don't happen.</p>
<p>That's probably not enough to account for every legacy Chrome user, however. To do that, we probably have to look towards the East Asian market. A long-standing feature of various markets in the region, most notably China and South Korea, is the entrenchment of Internet Explorer, variously attributed to legal mandates (especially in South Korea, where until last year a specific ActiveX control was required for online banking) and widespread software piracy making users reluctant to use Windows Update (even though Internet Explorer upgrades are available to pirated copies of the operating system).</p>
<p>To support this market, a range of browsers based on Internet Explorer's rendering engine, but with substantially greater features, sprung up. The <a href="http://data.cnzz.com/main.php?s=brow">most popular</a> of these are <a href="http://se.360.cn/">360 Secure Browser</a> with about 19 percent share of the Chinese market, and <a href="http://ie.sogou.com/">Sogou high speed browser</a>, with a little under 6 percent. Though these browsers originally just used the Trident engine that powers Internet Explorer, recent versions extend this by also embedding Chrome. In so doing, they give their users a choice between a relatively modern Chrome browser engine, and the older Internet Explorer engine needed for compatibility. Conceptually, this is very similar to software like <a href="http://code.google.com/chrome/chromeframe/">Chrome Frame</a>, that allows Internet Explorer users to use Chrome for some browser tabs.</p>
<div class="news-item-figure CenteredImage"><div class="news-item-figure-image"><a href="http://static.arstechnica.com/browsers-june-2011/sogou-ie.png"><img src="http://static.arstechnica.com/browsers-june-2011/thumb-sogou-ie.png"/></a></div><div class="news-item-figure-caption"><p class="news-item-figure-caption-text">Sogou browser running as Internet Explorer</p><p class="news-item-figure-caption-byline">Thanks to Ars reader WJ</p></div></div>
<p>These dual-engine browsers tend to modify Chrome in several ways, one of which is that they exclude Google's automatic update service. They also tend to embed stale versions of Chrome; the current Sogou uses Chrome 6. The result is that users of these browsers, who may well prefer using Chrome for day-to-day browsing, will be stuck with obsolete versions of the browser. And because of the way they're using Chrome, they're out of reach of Google's update system.</p>
<div class="news-item-figure CenteredImage"><div class="news-item-figure-image"><a href="http://static.arstechnica.com/browsers-june-2011/sogou-chrome.png"><img src="http://static.arstechnica.com/browsers-june-2011/thumb-sogou-chrome.png"/></a></div><div class="news-item-figure-caption"><p class="news-item-figure-caption-text">Sogou browser using its embedded Chrome</p><p class="news-item-figure-caption-byline">Thanks to Ars reader WJ</p></div></div>
<p>The net result of these various usage scenarios is that Chrome's non-upgrading userbase is likely to grow ever larger, with ten percent of Chrome users, and climbing, sticking with versions of the browser that are no longer supported.</p>
<div class="news-item-figure CenteredImage"><div class="news-item-figure-image"><img src="http://static.arstechnica.com/browsers-june-2011/ars-browser-share.png"/></div></div>
<p>Ars' audience continues to show marked differences from the Internet's norms. Firefox, Safari, Internet Explorer, and Opera all saw drops, of 0.94, 0.37, 0.04, and 0.10 points respectively; Chrome saw gains of 0.88 points, with the remainder of the difference picked up by "other."</p>
</div>
</div>

@ -1,2 +0,0 @@
test_description: standard article from arstechnica
url: http://arstechnica.com/web/news/2011/07/june-browser-stats-rapid-release-edition.ars

File diff suppressed because one or more lines are too long

@ -1,11 +0,0 @@
<div id="article"><div class="comment-content" id="comment-content-4e141229cadcbbb33f050000">
<p class="comment-text">
Yep, you gotta love that almost 90% market share failure. Like I said before, if that's failure than sign me up for some of that. I'm pretty sure the good people over at Apple, Google, etc. would like to be signed up for some of that failure too.<br/><br/>
For the, "If this, if that, (insert scenario)" people, enjoy your new OS and whatever other new software you may choose to use. However, don't be surprised when those metro ui interface imitations start to land on those products too. Did you really think that static grid-icons on a screen was going to last forever? I think 20+ years is enough, it's time for new innovation in design and don't be surprised when the copycats jump on board. That's the way the industry works. One group comes up with a new design or concept and the others tend to follow suit and you don't have to be a market leader to get that following. Just ask the Opera/Chrome developers. That's just one of many, many examples that could be pointed out. The metro ui is a very suitable design for the touch screen world that we're migrating to. Sure, there will be changes and enhancements as time goes on and everyone will put their own spin on it, but I'd get used to similar offerings from MSFT's competitors if I were you.<br/><br/>
Also, for those who like to comment, but seem to have little info about what's expected in things like Windows 8, let me fill you in a bit. The info. out right now is that Windows 8 will let you choose to use the new ui or to use the more, "Windows past" icon ui. I think anyone with some modicum of common sense can see how that would be a wise move from MSFT. For instance: The metro ui may not appeal to the corporate world as much as the consumer world. Plus, it give long-time Window's users the option to stick with what they know, but still gain the newest features and security measures that new OS's tend to bring. So, if your going to use another product, but all means, have fun with it, but don't try to justify it to yourself with reasons that are unlikely to exist. Just say you want to move on and anyone else can respect that, but when you seem to have little knowledge of what your options will be, it just makes you look like the typical sheep some people can be.<br/><br/>
Personally, I love the new direction MSFT is going in and for the first time in years, they seem to be thinking more and more consumer friendly. That's not an easy task for a company who has to appeal to business the way MSFT does and I commend the effort. Believe me, or don't, but Apple, Google and any other group would suffer the same balancing act if they dominated the corporate world the way Microsoft does. Corporate and consumers are very different beasts and it's not always easy to appeal to both, yet Microsoft has kept a large following in both sectors and anyone who doesn't see the skill it takes to do that, has a lot to learn my friends. </p>
</div>
</div>

@ -1,3 +0,0 @@
test_description: businessinsider article
notes: missed the article completely; got a long comment instead
url: http://www.businessinsider.com/where-windows-8-came-from-microsoft-ui-ideas-that-never-took-off-2011-7

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,2 +0,0 @@
test_description: cnet article
url: http://howto.cnet.com/8301-11310_39-20078249-285/best-free-alternatives-to-top-selling-software/?tag=epicStories

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,2 +0,0 @@
test_description: deadspin article
url: http://deadspin.com/5820463/would-you-kill-a-stranger-to-save-football

File diff suppressed because one or more lines are too long

@ -1,31 +0,0 @@
<div id="article"><div class="mod-article-title">
<div class="datehead"><span class="page-actions">
<p id="fb-root"/><p class="date"><span>Updated: </span>July 12, 2011, 4:52 PM ET</p>
</span></div>
<p class="headline">
</p><h1 class="h2">Roger Clemens' defense sets strategy</h1>
</div>
<div><p>
WASHINGTON -- <a href="http://espn.go.com/mlb/player/_/id/1427/roger-clemens">Roger Clemens</a>' attorney revealed Tuesday that the ex-baseball star plans to begin his defense against charges of lying to Congress by questioning if the lawmakers' investigation into whether he used performance-enhancing drugs was proper.</p><p>Clemens attorney Michael Attanasio said in court that the hearing the House Oversight and Government Reform Committee held in February 2008 had nothing to do with Congress' responsibility for legislation. He said the hearing was only concerned with airing a "credibility contest" between Clemens and his longtime trainer, Brian McNamee, who said he injected the pitcher with steroids and human growth hormone.</p><p/><div class="mod-container mod-inline content-box mod-podcast floatright mod-no-header-footer">
<div class="mod-content"><h4>Mike and Mike in the Morning</h4><p class="podcast-player"/>
<p>ESPN legal analyst Roger Cossack explains what is going on with the Roger Clemens trial.</p>
<p class="footer clear"><a href="http://espn.go.com/espnradio/podcast/"> More Podcasts &#187;</a></p></div></div>
<p>Clemens denied those allegations and has been charged with perjury, false statements and obstruction of Congress. The obstruction count charges Clemens with making 15 false or misleading statements to the committee, including his repeated denials he didn't take performance-enhancing drugs during his 24-season career and even whether he attended a 1998 pool party at then-<a href="http://espn.go.com/mlb/team/_/name/tor/toronto-blue-jays">Toronto Blue Jays</a> teammate Jose Canseco's home in Miami.</p><p>McNamee says he saw Clemens and admitted steroids user Canseco talking at the party with another man and that after they returned to Canada, Clemens asked McNamee to inject him with steroids for the first time. </p><p>
Clemens and Canseco say Clemens was never at the party but was golfing at the time. Attanasio said that dispute suggests how improper the whole inquiry was and that jurors should be able to determine whether a "he said, he said debate" between Clemens and McNamee was a legitimate congressional concern.</p><p>"We're going to have a mini-trial on whether Roger Clemens went swimming," Attanasio said. "We're going to have a trial in U.S. District Court, Congress is going to have a hearing on these things? That's our point."</p><p>Assistant U.S. attorney Daniel Butler responded that the committee has responsibility for oversight that is broad and goes beyond legislation. He said steroids in baseball is a drug matter and pointed out that a 2005 hearing into the issue led to legislation to regulate steroids and triggered Major League Baseball to commission a report by former Sen. George Mitchell into the extent of the problem in the league.</p><p/><div class="mod-container mod-no-footer mod-inline content-box floatright mod-no-header-footer">
<div class="mod-content"><h4>Follow the trial</h4>
<img class="io-img" src="http://a.espncdn.com/photo/2010/0116/quinn_tj_m.jpg" border="0"/><p>ESPN's T.J. Quinn will provide live coverage from the courtroom during the Clemens trial. Follow along with our up-to-the-minute <a href="http://twitter.com/#!/TJQuinnESPN" target="_blank"><b>Twitter coverage</b></a>.<br/>
&#8226;&#160; <b><a href="http://espn.go.com/photo/preview/!pdfs/espn_voir_dire_questions.pdf">Voir dire questions</a></b>
</p></div>
</div><p>The Mitchell report was released in December 2007 and named Clemens and 85 other current and former ballplayers as using drugs. Clemens denied the allegations and Butler pointed out that leaders of the House committee said they needed to investigate Clemens' denials to determine what weight to give the Mitchell report and its recommendations.</p><p>Attanasio argued that if the committee's purpose was to come full circle on the Mitchell report, it had done so with a January 2008 hearing featuring testimony by Mitchell, baseball commissioner Bud Selig and former players union director Donald Fehr.</p><p>"That ship had left. That work was done. And now it becomes a question between Mr. Clemens and Mr. McNamee," Attanasio said.</p><p>But U.S. District Judge Reggie Walton said if "one of the icons of baseball" was taking exception to the Mitchell report, "it seems to me that Congress has the authority to hold hearings to determine which view is correct."</p><p>Attanasio said the issue will be addressed in testimony from the first two witnesses prosecutors plan to call after opening arguments Wednesday morning. He said the first will be retired House Parliamentarian Charles Johnson, followed by Phil Barnett, who was chief counsel for the committee at the time it investigated Clemens.</p><p>The dispute over the committee's proper role came as Walton considered what preliminary instructions to give the jury, which was seated Tuesday afternoon after 3&#189; days of screening potential members.</p><p>The jury of 10 women and two men includes a woman whose cousin, former outfielder Al Bumbry, was a coach for the <a href="http://espn.go.com/mlb/team/_/name/bos/boston-red-sox">Boston Red Sox</a> when Clemens played for the team. Another woman on the jury said she believes <a href="http://espn.go.com/nfl/team/_/name/phi/philadelphia-eagles">Philadelphia Eagles</a> quarterback <a href="http://sports.espn.go.com/nfl/players/profile?playerId=2549">Michael Vick</a> was "done wrong" in his criminal conviction in connection with dogfighting.</p><p>Four other people were seated as alternate jurors in case any of the 12 can't serve.</p><p>Prosecutors and Clemens' defense team removed 20 people from the pool of 36 jurors, offering no public explanation for their decisions.</p><p>Clemens' attorney pressed potential jurors not to hold it against Clemens if he chooses not to testify, his strongest hint yet that the ex-pitcher might not take the stand.</p><p>Walton also said he was upset to read a New York Daily News item that members of Clemens' family have been criticizing McNamee and other government witnesses on Twitter and elsewhere online. The judge has a gag order on parties involved in the case, but he said he doesn't have any authority over anyone who isn't before him and hopes that those that are were not involved. </p><p>Clemens' attorney Rusty Hardin said he would look into it but that it's been "extremely difficult" for Clemens' family to see harsh criticisms of the baseball star online and in the media and not be able to respond.</p><p><i>Information from The Associated Press was used in this report.</i>
</p>
</div>
</div>

@ -1,2 +0,0 @@
test_description: espn article
url: http://sports.espn.go.com/mlb/news/story?id=6760720

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,3 +0,0 @@
test_description: mit news article
notes: links are broken out into paragraph divs
url: http://web.mit.edu/newsoffice/2011/compare-recommendation-systems-0708.html

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,2 +0,0 @@
test_description: nytimes article
url: http://thecaucus.blogs.nytimes.com/2011/07/12/mcconnell-proposal-gives-obama-power-to-increase-debt-limit/?hp

@ -1,9 +0,0 @@
test_description: multi-page article from nytimes
enabled: false
notes: multi-page not yet implemented
url: http://www.nytimes.com/2011/07/10/magazine/the-dark-art-of-breaking-bad.html
url_map:
http://www.nytimes.com/2011/07/10/magazine/the-dark-art-of-breaking-bad.html?pagewanted=2: nytimes-000-orig-2.html
http://www.nytimes.com/2011/07/10/magazine/the-dark-art-of-breaking-bad.html?pagewanted=3: nytimes-000-orig-3.html
http://www.nytimes.com/2011/07/10/magazine/the-dark-art-of-breaking-bad.html?pagewanted=4: nytimes-000-orig-4.html
http://www.nytimes.com/2011/07/10/magazine/the-dark-art-of-breaking-bad.html?pagewanted=5: nytimes-000-orig-5.html

File diff suppressed because it is too large Load Diff

@ -1,6 +0,0 @@
<div id="article"><article><p>Put another way, Democrats reacted to the &#8220;grand bargain&#8221; proposed by President Obama and House Speaker John Boehner by squawking, complaining and highlighting elements they didn&#8217;t like. This is known throughout the world as the way to begin a process of negotiation.</p><p>Republicans, by contrast, answered with a definitive &#8220;no&#8221; and then covered their ears. Given the looming Aug. 2 deadline for default if the debt ceiling is not raised, the proper term for this approach is blackmail.</p><p>Yet the &#8220;both sides are to blame&#8221; narrative somehow gained currency after <a href="http://www.washingtonpost.com/business/economy/boehner-abandons-efforts-to-reach-comprehensive-debt-reduction-deal/2011/07/09/gIQARUJ55H_story.html">Boehner announced Saturday</a> that House Republicans would not support any increase in revenue, period. A false equivalence was drawn between the absolute Republican rejection of &#8220;revenue-positive&#8221; tax reform and the less-than-absolute Democratic opposition to &#8220;benefit cuts&#8221; in Medicare and Social Security.</p><p>The bogus story line is that the radical right-wing base of the GOP and the radical left-wing base of the Democratic Party are equally to blame for sinking the deal. </p><p>Leave aside, for the moment, the fact that in the Obama-Boehner proposal, there would be roughly three dollars&#8217; worth of budget cuts for every dollar of new revenue. Don&#8217;t pause to ask whether it makes sense to slash government spending when the economy is still sputtering out of the worst recession in decades. Instead, focus narrowly on the politics of the deal.</p><p>It is true that House Minority Leader Nancy Pelosi howled like a blindsided politician when she learned that entitlement programs were on the table. But her objections &#8212; and those of Democrats in general &#8212; are philosophical and tactical, not absolute.</p><p>Progressives understand that Medicare and Social Security are not sustainable on their current trajectories; in the long term, both must have their revenue and costs brought into balance. Pelosi&#8217;s position is that each program should be addressed with an eye toward sustainability &#8212; not as a part of a last-minute deal for a hike in the debt ceiling that covers us for two or three years.</p><p>It&#8217;s also true that Democrats believe they can win back a passel of House seats next year by highlighting the GOP plan to convert Medicare into a voucher program. They don&#8217;t want Republicans to be able to point and say, &#8220;See, the Democrats want to cut Medicare, too.&#8221;</p><p>There&#8217;s nothing in these Democratic objections, however, that couldn&#8217;t be creatively finessed. You can claim you haven&#8217;t actually &#8220;cut&#8221; a benefit, for example, if what you&#8217;ve done is restrained the rate at which its cost will grow. You can offset spending with new revenue, and you can do so in a way that gives low-income taxpayers a break. Democrats left the door open and these options could have been explored.</p><p>The story on the Republican side is entirely different. There are ways to finesse a &#8220;no new taxes&#8221; pledge, too. Instead of raising tax rates, you close loopholes in the name of reform; you add an enhancement here, a &#8220;user fee&#8221; there, and you can manage to get the revenue you need and still claim you haven&#8217;t voted to raise taxes.</p><p>But Republicans are taking the position that not a cent of new revenue can be raised, no matter the euphemism. Some Democrats, yes, are being scratchy and cantankerous. But Republicans are refusing to negotiate at all. That&#8217;s not the same thing.</p><p>I understand why President Obama, <a href="http://projects.washingtonpost.com/obama-speeches/speech/736/">in his news conference Monday</a>, chided &#8220;each side&#8221; for taking a &#8220;maximalist position.&#8221; For political and practical reasons, it&#8217;s advantageous for him to be seen as an honest broker.</p><p>Meanwhile, though, the clock ticks toward Aug. 2 and the possibility of a catastrophic default becomes more real. And no one should be confused about what the president confronts: On one side, grousing and grumbling. On the other, a brick wall. </p><p>
<i>
<a href="http://live.washingtonpost.com/eugene-robinson-07-12-11.html">Eugene Robinson will be online</a> to chat with readers at 1 p.m. Eastern time Tuesday. <a href="http://live.washingtonpost.com/eugene-robinson-07-12-11.html">Submit your questions</a> before or during the discussion.</i>
</p></article></div>

@ -1,2 +0,0 @@
test_description: washingtonpost.com op-ed
url: http://www.washingtonpost.com/opinions/dont-blame-both-sides-for-debt-impasse/2011/07/11/gIQA0XDg9H_story.html?hpid=z1

@ -1,2 +0,0 @@
*
!.gitignore
Loading…
Cancel
Save