Changes between Version 4 and Version 5 of SoC2015


Ignore:
Timestamp:
Jan 2, 2015, 3:28:16 PM (8 years ago)
Author:
Niall Douglas
Comment:

Made the instructions clearer hopefully

Legend:

Unmodified
Added
Removed
Modified
  • SoC2015

    v4 v5  
    55Welcome to the Boost C++ Libraries' home page for Google Summer of Code (GSoC) 2015. This page provides information about suggested student projects, proposal submission templates, advice on writing good proposals, and links to information on getting started writing with Boost.
    66
    7 === Changes in process for both mentors and students over preceding years ===
     7=== Changes in process for both mentors and students over preceding years (PLEASE READ) ===
    88
    99This year, 2015, is going to be slightly different from preceding years of how Boost has operated GSoC. The first new change was that last year we trialled extending the really superb GSoC 2014 projects by an additional three month period funded by Boost, and in 2014 the project we selected for extension was [https://ldionne.github.io/hana/ proposed Boost.Hana] by student Louis Dionne mentored by Joel Falcou. If these extensions prove successful, we may continue to extend the really outstanding GSoC projects in 2015. Note that the Boost Steering Committee can only consider extensions where the mentor is more than happy to continue mentoring the project in an extension, and where the GSoC administrators and the other GSoC mentors and Boost Steering Committee members all unanimously agree on the merit of the extension. To reach such a standard is exceptionally hard, and students interested may wish to review [https://github.com/ldionne/hana Hana's source code] to see what is demanded for a Boost funded GSoC extension.
    1010
    11 The second new change is in how projects will be ranked by the community. Up until now, the community ranked student proposals by awarding a score, and we recommended to Google to select all those proposals which matched a single mentor to a single student based on the top of the score ranking. Unfortunately, this process has led to some disappointments for both student and mentor especially where the student was far better at writing proposals than writing code, and we also worry that the old system discriminates against non-native English speakers. As of this year, we therefore request a new part to student proposal ideas, that being of an exam or test the students interested in that proposal can take to demonstrate their programming capability. In 2015, student proposals with accompanying ability test scores for that candidate '''will be preferentially ranked above proposals without test scores'''.
     11==== How we are implementing '''student programming aptitude testing''' in 2015 ====
     12The second new change is in how projects will be ranked by the community. Up until now, the community ranked student proposals by awarding a score to their written proposal, and we recommended to Google to select all those proposals which matched a single mentor to a single student based on the top of that score ranking. Unfortunately, this process has led to some disappointments for both student and mentor especially where the student was far better at writing proposal texts than writing code, and we also worry that the old system discriminates against non-native English speakers. As of this year, we therefore request a new part to student proposal ideas ''whether proposed by student or mentor'', that being of an exam or test the students interested in that proposal can take to demonstrate their programming capability. In 2015, student proposals with accompanying ability test scores for that candidate '''will be preferentially ranked above proposals without test scores'''. If the precanned proposal from this ideas page or from preceding years written by a mentor lacks a programming test, or the student fails to supply answers to a test, their proposal will not be preferentially ranked no matter its otherwise quality or merit.
    1213
    1314This runs the risk of excluding student proposals not suggested by this ideas page - in fact, Louis Dionne's Hana was not suggested here, it came entirely from Louis. We therefore add a second way of getting preferentially ranked: candidates who have written existing C++ libraries of at least 1,000 lines of code (excluding comments and whitespace) and who propose their own project, AND have prearranged a mentor through [http://www.boost.org/community/groups.html#main the Boost developer's mailing list], will also be preferentially ranked.
    1415
    15 The scoring by the community will work as before, but preferentially ranked candidates and proposals will be entirely consumed before unpreferentially ranked candidates and proposals, even if the candidate's exam results were poor (though note that in this case no mentor may wish to mentor such a student, and we shall have to exclude such a candidate as a result).
     16'''Let us be very clear here: if you propose your own project idea and haven't prearranged a mentor on the developer's mailing list, your proposal will NOT be preferentially ranked.''' To prearrange a mentor you almost certainly need to supply lengthy and substantial (> 1,000 lines) examples of C++ libraries you have already written.
     17
     18The scoring by the community will work as before based on the community voting on proposals, but preferentially ranked candidates and proposals '''will be entirely consumed''' before unpreferentially ranked candidates and proposals, even if the candidate's exam results were poor (though note that in this case no mentor may wish to mentor such a student, and we shall have to exclude such a candidate as a result).
    1619
    1720''To help mentors write a student proposal idea matching the newly requested format, please see the "Concurrent hash tables" proposal as a template.''
     
    3639= Suggested precanned GSoC project proposals =
    3740
     41== INSTRUCTIONS FOR ADDING PRECANNED PROPOSALS ==
     42
     43Please follow the following proposal structure. See the concurrent hash tables proposal below for an example.
     44
     45=== No. Title ===
     46Potential mentors: names
     47
     48==== Background ====
     49Explanation of proposal background, history etc with hyperlinks.
     50
     51==== GSoC project proposal ====
     52Bullet points of items to complete for the GSoC.
     53
     54==== Potential project extension funded by Boost ====
     55Not as much detail as the GSoC proposal itself, but enough detail that such an extension could be specced out.
     56
     57If there is no good extension, simply say N/A here.
     58
     59==== Programming competency test ====
     60Some code for them to write to prove they can program sufficiently. Ideally it should be a small part of the proposal itself modifying real Boost library code, but there is nothing wrong with an actual exam paper, except that maybe they might cheat if you give them too much time and flexibility in when to do it, so if setting an exam question make sure you say here it will be written and set to interested students on some date after GSoC applications close and they'll get X days to finish it.
     61
     62How they submit their results is up to you. They can append them to their project proposal, or provide a gist, or email them to you for marking, or whatever.
     63
     64If there is no programming competency test, please add your proposal to the second section below the special section for proposals without competency testing.
     65
     66
    3867== Self-contained standalone GSoC Projects with programming competency test ==
    3968The following projects and programming competency test have been suggested by potential mentors. Selecting one of these, in consultation with the [http://www.boost.org/community/groups.html#main Boost developers mailing list], provides the highest chance that a mentor can be found for your GSoC project proposal and that your proposal will be preferentially ranked (see above). A template for the proposal can be found [wiki:SoCSubmissionTemplate here].
     
    4372
    4473==== Background ====
    45 Strangely enough, Boost does not provide an implementation of thread safe concurrent associative sets and maps despite that the unordered implementation from Intel's Thread Building Blocks and Microsoft's Parallel Patterns Library was proposed for standardisation in [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3425.html N3425 Concurrent Unordered Associative Containers for C++]. This is probably because that implementation (the split ordered list algorithm by Shalev and Shavit, 2006) had the serious shortcoming of not being thread safe for some operations, most importantly item deletion, and the workarounds proposed by N3425 did not appeal. Moreover, [https://www.usenix.org/legacy/event/atc11/tech/final_files/Triplett.pdf there are other concurrent hash table algorithms which do not have such shortcomings].
     74Strangely enough, Boost does not provide an implementation of thread safe concurrent associative sets and maps despite that the unordered implementation from Intel's Thread Building Blocks and Microsoft's Parallel Patterns Library was proposed some years ago for standardisation in [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3425.html N3425 Concurrent Unordered Associative Containers for C++]. This is probably because that implementation (the split ordered list algorithm by Shalev and Shavit, 2006) had the serious shortcoming of not being thread safe for some operations, most importantly item deletion, and the workarounds proposed by N3425 did not appeal. Moreover, [https://www.usenix.org/legacy/event/atc11/tech/final_files/Triplett.pdf there are other concurrent hash table algorithms which do not have such shortcomings].
    4675
    47 It is long overdue for Boost to gain a thread safe concurrent associative containers implementation, and to that end you will find a [https://github.com/ned14/boost.spinlock/blob/master/include/boost/spinlock/concurrent_unordered_map.hpp concurrent_unordered_map prototype here] with [https://ci.nedprod.com/view/Boost%20Thread-Expected-Permit/job/Boost.Spinlock%20Test%20Linux%20GCC%204.8/doxygen/classboost_1_1spinlock_1_1concurrent__unordered__map.html its doxygen documentation here]. This particular design provides a complete STL compliant interface with every operation being thread safe and most operations permitting concurrency, but sacrifices the constant time performance of empty() and size() to achieve this. Moreover, its find() is only completely wait free if compiled with a transactional memory compiler.
     76It is long overdue for Boost to gain a thread safe concurrent associative containers implementation, and to that end you will find a [https://github.com/ned14/boost.spinlock/blob/master/include/boost/spinlock/concurrent_unordered_map.hpp concurrent_unordered_map prototype here] with [https://ci.nedprod.com/view/Boost%20Thread-Expected-Permit/job/Boost.Spinlock%20Test%20Linux%20GCC%204.8/doxygen/classboost_1_1spinlock_1_1concurrent__unordered__map.html its doxygen documentation here]. This particular design provides a complete STL compliant interface with every operation being thread safe and most operations permitting concurrency, but sacrifices the constant time performance of empty() and size() to achieve this, plus rehash() is extremely slow. Moreover, its find() is only completely wait free if compiled with a transactional memory C++ compiler.
    4877
    4978==== GSoC project proposal ====