[pypy-commit] pypy.org extradoc: forgot to add an html

fijal noreply at buildbot.pypy.org
Tue Sep 20 16:18:22 CEST 2011

Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: extradoc
Changeset: r260:a140e48653cd
Date: 2011-09-20 16:17 +0200

Log:	forgot to add an html

diff --git a/py3donate.html b/py3donate.html
new file mode 100644
--- /dev/null
+++ b/py3donate.html
@@ -0,0 +1,337 @@
+<!DOCTYPE html>
+	<title>PyPy :: (UNRELEASED DRAFT) Call for donations - PyPy to support Python3!</title>
+	<meta http-equiv="content-language" content="en" />
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<meta name="author" content="PyPy Team" />
+	<meta name="description" content="PyPy" />
+	<meta name="copyright" content="MIT" />
+	<meta name="document-rating" content="general" />
+	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
+	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
+  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
+	<script type="text/javascript" src="http://use.typekit.com/hdt8sni.js"></script>
+	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
+  <script type="text/javascript" src="js/detect.js"></script>
+<script type="text/javascript">
+	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
+	if (document.location.protocol !== 'file:') {
+		(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';
+			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
+		})();
+	}
+<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
+<div id="header">
+	<div id="menu-follow">
+		<div><a href="http://search.twitter.com/search?q=%23pypy" title="Follow the conversation on Twitter"><img src="http://static.ampify.it/icon.twitter.gif" alt="Follow the conversation on Twitter" width="14px" height="14px" /></a></div>
+    <div><a href="https://bitbucket.org/pypy/pypy"><img src="http://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
+		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="http://static.ampify.it/icon.rss.png" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
+	</div>
+	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
+	<hr class="clear-left" />
+	<div id="menu-sub"><a href="index.html">Home</a><span class="menu-sub-sep"> | </span><a href="features.html">Features</a><span class="menu-sub-sep"> | </span><a href="download.html">Download</a><span class="menu-sub-sep"> | </span><a href="compat.html">Compatibility</a><span class="menu-sub-sep"> | </span><a href="http://speed.pypy.org">Performance</a><span class="menu-sub-sep"> | </span><a href="http://doc.pypy.org">Dev Documentation</a><span class="menu-sub-sep"> | </span><a href="http://morepypy.blogspot.com">Blog</a><span class="menu-sub-sep"> | </span><a href="people.html">People</a><span class="menu-sub-sep"> | </span><a href="contact.html">Contact</a></div>
+	<hr class="clear" />
+<div id="content">
+<div id="main">
+<h1 class="title">(UNRELEASED DRAFT) Call for donations - PyPy to support Python3!</h1>
+<p>The release of Python 3 has been a major undertaking for the Python
+community, both technically and socially.  So far the PyPy interpreter
+implements only version 2 of the Python language and is increasingly
+used in production systems.  It thus contributes to the general risk
+of a long lasting Python community split where a lot of people
+continue using Python 2 while others work with Python 3, making it
+harder for everyone.</p>
+<p>The PyPy project is in a unique position in that it could support
+<strong>both Python 2 and Python 3</strong> versions from the same code base, fully
+reusing its unique translation and JIT-Compiler technologies.
+However, it requires a lot of work, and it will take a long time
+before we can complete a Python 3 port if we only wait for volunteer
+work.  Thus, we are asking the community to help with funding the
+necessary work, to make it happen faster.  <a class="reference internal" href="#here">Here</a> is a more detailed view on how our proposed work benefits the Python community and the general public.</p>
+<p>Below you'll find the <a class="reference internal" href="#planned-stages-of-work">planned stages of work</a> and the associated
+fundraising targets we need to make things happen.  Once we reach the
+neccessary target for each stage, we will start contracting
+developers.  Contracts and money are managed by the non-profit
+<a class="reference external" href="http://sfconservancy.org/">Software Freedom Conservancy</a> of which the PyPy project is a member.
+The current elected representatives are Carl Friedrich Bolz, Holger
+Krekel and Jacob Hallen and they will - in close collaboration - with
+Conservancy and the core developers, select the best developers for
+the Python 3 porting job among well known PyPy contributors.</p>
+<p>If you want to see PyPy support Python 3 and Python 2, donate here:</p>
+XXX insert links to Paypal and Google Chekcout links categorized such
+that things will get accounted properly on the Conservancy side</blockquote>
+<p>Should we not receive enough donations to complete all stages by 1st March 2012
+at the latest, we will try our best to make PyPy support Python 3 anyway.  We
+however reserve the right to shift any unused funds to other PyPy activities
+when that date is reached.  Of course, since the Conservancy is a
+501&copy;(3) chartiable organization incorporated in NY, USA, all funds will,
+regardless of their use, be spent in a way that benefits the general
+public, the advancement of Open Source and Free Software,
+and in particular the PyPy community and the PyPy codebase.</p>
+<p><strong>Note</strong> For donations higher than $XXX we can arrange for an invoice
+and a different payment method to avoid the high Paypal fees.  Please
+contact pypy at sfconservancy.org if you want to know details on how
+to donate via other means.</p>
+<div class="section" id="id1">
+<span id="planned-stages-of-work"></span><h1>Planned stages of work</h1>
+<p>The goal of this project is to write an interpreter that interprets
+version 3 of Python language. To be precise we would aim at having
+Python 3.2 interpreter together in the same codebase as python 2.7
+<p>At the end of the project, it will be possible to decide at
+translation time whether to build an interpreter which supports Python
+2.7 or Python 3.2 and both versions will be nightly tested and
+available from nightly builds.</p>
+<p>The focus of this project is on compatibility, not performance.  In
+particular, it might be possible that the resulting Python 3
+interpreter will be slower than the Python 2 one.  If needed,
+optimizing and making it more JIT friendly will be the scope of a
+separate project.</p>
+<div class="section" id="about-estimates-and-costs">
+<h2>About estimates and costs</h2>
+<p>For each step, we estimated the time that it would take to complete for an
+experienced developer who is already familiar with the PyPy codebase.  From
+this number, the money is calculated considering a hourly rate of $60, and a
+5% overhead which goes to the <a class="reference external" href="http://sfconservancy.org/">Software Freedom Conservancy</a>, the non-profit
+association of which the PyPy project is a member and which manages all the
+issues related to donations, taxes and payments.</p>
+<p>The estimated time to complete the whole project is about 10.5 person-months.</p>
+<p>For comparison, the python-3000 mailing list was created in March 2006; Python
+3.0 was released in December 2008 and Python 3.1, the first release genuinely
+suitable for production use (due to the abysmal I/O performance of 3.0) was
+released in June 2009.  During these 3.5 years, a lot of people contributed to
+the development of Python 3, and while it is hard to turn these numbers into
+precise person-years, it sounds reasonable to think that in total it took
+several person-years.</p>
+<p>We have the advantage of targeting something that already exists without
+having to define the destination as they go along, and also the internal
+architecture of PyPy makes it easier to do the porting.</p>
+<div class="section" id="step-1-core-language">
+<h2>Step 1: core language</h2>
+<p>In this step, we implement all the changes to the core language,
+i.e. everything which is not in the extension modules.  This includes, but it
+is not necessarily limited to the following items, which are split into two
+big areas:</p>
+<li><p class="first"><strong>Sub-step 1.1</strong>: string vs unicode and I/O:</p>
+<ul class="simple">
+<li>adapt the existing testing infrastructure to support running Python 3 code</li>
+<li>string vs bytes: the interpreter uses unicode strings everywhere.</li>
+<li>the <tt class="docutils literal">print</tt> function</li>
+<li><tt class="docutils literal">open</tt> is now an alias for <tt class="docutils literal">io.open</tt>, removal of the old file type.</li>
+<li>string formatting (for the part which is not already implemented in Python
+<li>the _io module (for the part which is not already implemented in Python
+<li>syntactic changes to make <tt class="docutils literal">io.py</tt> importable (in particular:
+<tt class="docutils literal"><span class="pre">metaclass=...</span></tt> in class declarations)</li>
+<li><strong>Estimate cost</strong>: $37,000</li>
+<li><dl class="first docutils">
+<dt><strong>Sub-step 1.2</strong>: other syntactic changes, builtin types and functions,</dt>
+<dd><p class="first">exceptions:</p>
+<ul class="last simple">
+<li>views and iterators instead of lists (e.g., <tt class="docutils literal">dict.items()</tt>, <tt class="docutils literal">map</tt>,
+<tt class="docutils literal">range</tt> &amp; co.)</li>
+<li>new rules for ordering comparisons</li>
+<li>removal of old-style classes</li>
+<li>int/long unification</li>
+<li>function annotations</li>
+<li>smaller syntax changes, such as keyword-only arguments, <tt class="docutils literal">nonlocal</tt>,
+extended iterable unpacking, set literals, dict and set comprehension, etc.</li>
+<li>changes to exceptions: <tt class="docutils literal">__traceback__</tt> attribute, chained exceptions,
+<tt class="docutils literal">del e</tt> at the end of the except block, etc.</li>
+<li>changes to builtins: <tt class="docutils literal">super</tt>, <tt class="docutils literal">input</tt>, <tt class="docutils literal">next()</tt>, etc.</li>
+<li>improved <tt class="docutils literal">with</tt> statement</li>
+<li><strong>Estimate cost</strong>: $26,000</li>
+<p>Note that the distinction between sub-steps 1.1 and 1.2 is blurry, and it might be
+possible that during the development we will decide to move items between the
+two sub-steps, as needed.</p>
+<p>For more information, look at the various &ldquo;What's new&rdquo; documents:</p>
+<ul class="simple">
+<li><a class="reference external" href="http://docs.python.org/py3k/whatsnew/3.0.html">http://docs.python.org/py3k/whatsnew/3.0.html</a></li>
+<li><a class="reference external" href="http://docs.python.org/py3k/whatsnew/3.1.html">http://docs.python.org/py3k/whatsnew/3.1.html</a></li>
+<li><a class="reference external" href="http://docs.python.org/py3k/whatsnew/3.2.html">http://docs.python.org/py3k/whatsnew/3.2.html</a></li>
+<p><strong>Total estimate cost</strong>: $63,000</p></div>
+<div class="section" id="step-2-extension-modules">
+<h2>Step 2: extension modules</h2>
+<p>In this step, we implement all the changes to the extension modules which are
+written in C in CPython.  This includes, but it is not necessarily limited to:</p>
+<ul class="simple">
+<li><tt class="docutils literal">collections</tt>, <tt class="docutils literal">gzip</tt>, <tt class="docutils literal">bz2</tt>, <tt class="docutils literal">decimal</tt>, <tt class="docutils literal">itertools</tt>, <tt class="docutils literal">re</tt>,
+<tt class="docutils literal">functools</tt>, <tt class="docutils literal">pickle</tt>, <tt class="docutils literal">_elementtree</tt>, <tt class="docutils literal">math</tt>, etc.</li>
+<p><strong>Estimate cost</strong>: this is hard to do at this point, we will be able to give a
+more precise estimate as soon as Step 1 is completed.  As a reference, it
+should be possible to complete it with $37,000</p></div>
+<div class="section" id="step-3-cpyext">
+<h2>Step 3: cpyext</h2>
+<p>The <tt class="docutils literal">cpyext</tt> module allows to load CPython C extensions in PyPy.  Since the
+C API changed a lot between Python 2.7 and Python 3.2, <tt class="docutils literal">cpyext</tt> will not
+work out of the box in the Python 3 PyPy interpreter.  In this step, we will
+adapt it to work with Python 3 as well.</p>
+<p>Note that, even for Python 2, <tt class="docutils literal">cpyext</tt> is still in a beta state.  In
+particular, not all extension modules compile and load correctly.  As a
+consequence, the same will be true for Python 3 as well.  As a general rule,
+we expect that if a Python 2 module works with <tt class="docutils literal">cpyext</tt>, the corresponding
+Python 3 version will also work when this step is completed, although the
+details might vary depending on the exact C extension module.</p>
+<p><strong>Estimate cost</strong>: $5,000</p></div>
+<div class="section" id="benefits-of-this-work-to-the-python-community-and-the-general-public">
+<span id="here"></span><h1>Benefits of This Work to the Python Community and the General Public</h1>
+<p>Python has become one of the most popular dynamic programming languages in
+the world.  Web developers, educators, and scientific programmers alike
+all value Python because Python code is often more readable and because
+Python often increases programmer productivity.</p>
+<p>Traditionally, languages like Python ran more slowly than static, compiled
+languages; Python developers chose to sacrifice execution speed for ease
+of programming.  The PyPy project created a substantially improved Python
+language implementation, including a fast Just-in-time (JIT) compiler.
+The increased execution speed that PyPy provides has attracted many users,
+who now find their Python code runs up to four times faster under PyPy
+than under the reference implementation written in C. Some programs that
+are particularly JIT-friendly see even greater speedups.</p>
+<p><span class="target" id="speed">speed</span>: <a class="reference external" href="http://speed.pypy.org">http://speed.pypy.org</a></p>
+<p>Meanwhile, the Python community is undergoing significant change, with the
+introduction of a new &lsquo;version 3&rsquo; of the Python language (Python 3).
+Python 3 breaks some backwards compatibility with 2.x series, so
+programmers who seek to use Python 3 must port old code.  For example,
+programmers who needed old libraries might want to use Python 2 only and
+programmers wanting to use new language features would like to use Python
+3, but would not be able to use libraries that written for Python 2.x
+without substantial rewrites.  This issue could lead to a dangerous
+community split: programmers who needed old libraries might only use
+Python 2 and programmers seeking new language features would use Python 3,
+but would not be able to use libraries written for Python 2.x.</p>
+<p>PyPy currently supports only Python 2.7.  While PyPy supports only version
+2 of the Python language, PyPy users have an incentive to avoid Python 3.
+Python programmers must chose between the language features in Python 3,
+and the substantial performance benefits offered by PyPy.</p>
+<p>To address this issue, the PyPy team proposes to implement Python 3 on
+PyPy.  With such improvements to PyPy, PyPy can support the entire
+Python-using community and hopefully help to prevent any community split.
+PyPy support of Python 3 would also bring the excellent code execution
+performance of PyPy to those who wish to migrate to Python 3.</p>
+<p>Moreover, by ensuring the latest version of the Python language
+specification (Py3k) works properly and fully on PyPy, the maximal benefit
+of collaboration, learning, and software improvement can happen in the
+entire Python language community.</p>
+<p>A broad community of developers support and develop the PyPy project,
+many of whom work as volunteers. The Py3k grant should help with turning
+some attention towards implementing Python 3. This will not hinder other
+directions in which PyPy is going like improving performance. The goal
+of the PyPy community is to support both Python 2 and Python 3 for the
+forseeable future.</p>
+<p>PyPy's developers make all PyPy software available to the public without
+charge, under PyPy's Open Source copyright license, the permissive MIT
+License.  PyPy's license assures that PyPy is equally available to
+everyone freely on terms that allow both non-commercial and commercial
+activity.  This license allows for academics, for-profit software
+developers, volunteers and enthusiasts alike to collaborate together to
+make a better Python implementation for everyone.</p>
+<p>Finally, tracing JITs and other programming language execution technology
+used in PyPy are of current and particular interest in computer science
+research.  PyPy helps cross-pollinate knowledge between academic computer
+science and industrial use of Python, since PyPy can function well both as
+a research tool and real-world Python programming language implementation.
+Continued support and evolution of PyPy in any direction, such as support
+for Py3k, increases the features available from PyPy and such improvements
+are expected to spark even more general interest in PyPy itself and the
+Python programming language generally.</p>
+<dl class="docutils">
+<dt>References on Educational Uses of Python:</dt>
+<dd><ul class="first last simple">
+<li><a class="reference external" href="http://wiki.python.org/moin/SchoolsUsingPython">http://wiki.python.org/moin/SchoolsUsingPython</a></li>
+<li><a class="reference external" href="http://www.python.org/doc/essays/cp4e.html">http://www.python.org/doc/essays/cp4e.html</a></li>
+<dt>References for PyPy and its benefits:</dt>
+<dd><ul class="first last simple">
+<li><a class="reference external" href="http://pypy.org/">http://pypy.org/</a></li>
+<li><a class="reference external" href="http://pypy.org/features.html">http://pypy.org/features.html</a></li>
+<li><a class="reference external" href="http://pypy.org/compat.html">http://pypy.org/compat.html</a></li>
+<div id="sidebar">
+  <li>
+  <div class="sidepic">
+  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick" />
+<input type="hidden" name="hosted_button_id" value="J268ZTLRE2BW8" />
+<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
+    </div>
+  </li>
+  <li>
+    <div class="sidepic">
+<script type="text/javascript">
+function validateAmount(amount){
+       if(amount.value.match( /^[0-9]+(\.([0-9]+))?$/)){
+               return true;
+       }else{
+               alert('You must enter a valid donation.');
+               amount.focus();
+               return false;
+       }
+<form action="https://checkout.google.com/cws/v2/Donations/622836985124940/checkoutForm" id="BB_BuyButtonForm" method="post" name="BB_BuyButtonForm" onSubmit="return validateAmount(this.item_price_1)" target="_top">
+   <input name="item_name_1" type="hidden" value="PyPy Directed Donation via Software Freedom Conservancy, Inc." />
+   <input name="item_description_1" type="hidden" value="This is a donation to the Software Freedom Conservancy, Inc. The donation will be directed for the PyPy project." />
+   <input name="item_quantity_1" type="hidden" value="1" />
+   <input name="item_currency_1" type="hidden" value="USD" />
+   <input name="item_is_modifiable_1" type="hidden" value="true" />
+   <input name="item_min_price_1" type="hidden" value="5.0" />
+   <input name="item_max_price_1" type="hidden" value="25000.0" />
+   <input name="_charset_" type="hidden" value="utf-8" />
+   <table cellpadding="5" cellspacing="0" width="1%">
+       <tr>
+           <td align="right" nowrap="nowrap" width="1%">$ <input id="item_price_1" name="item_price_1" onfocus="this.style.color='black'; this.value='';" size="11" style="color:grey;" type="text" value="Enter Amount" />
+           </td>
+           <td align="left" width="1%">
+               <input alt="Donate" src="https://checkout.google.com/buttons/donateNow.gif?merchant_id=622836985124940&amp;w=115&amp;h=50&amp;style=white&amp;variant=text&amp;loc=en_US" type="image" />
+           </td>
+       </tr>
+   </table>
+    </div>
+  </li>
+  <li>
+    <div class="sidepic">
+      <a id="main_download" href="download.html">Download PyPy</a>
+    </div>
+  </li>
\ No newline at end of file

More information about the pypy-commit mailing list