Changes between Version 27 and Version 28 of SoC2014


Ignore:
Timestamp:
Feb 9, 2014, 2:06:49 PM (9 years ago)
Author:
Niall Douglas
Comment:

Bumped up Ideas by a level. Improved ideas explanatory text.

Legend:

Unmodified
Added
Removed
Modified
  • SoC2014

    v27 v28  
    1818We strongly suggest that students interested in developing a proposal for Boost discuss their ideas on the mailing list in order to help refine the requirements and goals. Students who actively discuss projects on the mailing list are also ranked before those that do not.
    1919
    20 == Projects ==
     20== Self-contained standalone GSoC Projects ==
    2121The following projects have been suggested by potential mentors. If the descriptions of these projects seem a little vague... Well, that's intentional. We are looking for students to develop requirements for their proposals by doing initial background research on the topic, and interacting with the community on the mailing list to help identify expectations.
    2222
     
    8989Paul Bristow and John Maddock regarding algorithmic expertise and Boost infrastructure.
    9090
    91 === Boost.AFIO (proposed) Improvements ===
     91=== Boost.AFIO (proposed) Improvements to async file i/o and closure execution engine ===
    9292Proposed Boost.AFIO is a linear scalable, batch, chainable, asynchronous closure execution engine with an almost wait free implementation (it is wait free if the CPU supports memory transactions) extending Boost.ASIO and Boost.Thread specialised as a portable asynchronous file i/o implementation library. Proposed Boost.AFIO was successfully ported to Boost during GSoC 2013 by Paul Kirth, and entered the Boost peer review queue in October 2013. If it passes peer review, AFIO is thought likely to be the first C++ 11 only library to enter Boost. You can see AFIO's Boost documentation at https://ci.nedprod.com/job/Boost.AFIO%20Build%20Documentation/Boost.AFIO_Documentation and its current continuous integration buildbot status and source code at https://github.com/BoostGSoC/boost.afio (scroll to bottom for present CI buildbot status). You are encouraged to read the AFIO documentation '''extensively''' before writing a GSoC proposal, and ask questions on boost-dev where needed.
    9393
     
    1041045. By the time GSoC begins AFIO ought to have a finished async batch hash engine which provides SHA256, CityHash and SpookyHash. Additional hash implementations would be very useful. Before you think you can copy and paste in existing hash implementations, be aware that AFIO requires you to completely rewrite them into batch SIMD (SSE2, AVX and preferably ARM NEON) and implement considerable C++ metaprogramming to tell the compiler how to optimally assemble the implementation. Difficulty level of this item is ''hard'', but very suitable for low level type programmers who like writing in assembly but also like C++ metaprogramming. The batch hash engine can be seen at https://github.com/BoostGSoC/boost.afio/blob/content_hashing_merge/boost/afio/hash_engine.hpp, and an example of the SIMD programming you'd have to do at https://github.com/BoostGSoC/boost.afio/blob/content_hashing_merge/boost/afio/detail/impl/hashes/4-sha256/sha256-neon.c.
    105105
    106 This project would be mentored by Niall Douglas (http://www.nedprod.com/). Due to limits on free time, I would only be able to mentor one student this summer, and I generally provide a programming test based on AFIO to students whose have submitted proposals to ensure that their coding ability is minimally sufficient to be able to attempt a GSoC. Benefits for the student of a successful GSoC in this area are many: high performance async programming experience is very desirable in the marketplace right now, and getting your name attached to authorship of a Boost library is a shining bright light on a resume which will stand to your career for years to come. You will gain bleeding edge experience programming exclusively in C++11 across the main toolsets of Visual Studio, GCC and clang AND writing portable code for the main operating system platforms of Microsoft Windows, Linux, and BSD/OS X - again, all very desirable skills to have in the marketplace. For those of you looking at a career in computer science research, and depending on the success of your outcomes, you may even be able to pass peer review to present your work at the C++ Now conference held annually in May. Good luck with your GSoC applications!
     106This project could be mentored by Niall Douglas (http://www.nedprod.com/), and possibly Dr. Hartmut Kaiser (https://www.cct.lsu.edu/~hkaiser/). Due to limits on free time especially as I am also Boost GSoC admin this year, I (Niall) would only be able to mentor one student this summer, and I generally provide a programming test based on AFIO to students whose have submitted proposals to ensure that their coding ability is minimally sufficient to be able to attempt a GSoC. Benefits for the student of a successful GSoC in this area are many: high performance async programming experience is very desirable in the marketplace right now, and getting your name attached to authorship of a Boost library is a shining bright light on a resume which will stand to your career for years to come. You will gain bleeding edge experience programming exclusively in C++11 across the main toolsets of Visual Studio, GCC and clang AND writing portable code for the main operating system platforms of Microsoft Windows, Linux, and BSD/OS X - again, all very desirable skills to have in the marketplace. For those of you looking at a career in computer science research, and depending on the success of your outcomes, you may even be able to pass peer review to present your work at the C++ Now conference held annually in May. Good luck with your GSoC applications!
    107107
    108108=== Boost.odeint ===
     
    166166Some performance measures comparing using the higher level monads interface and the hand written solution should be provided.
    167167
    168 Functional programming background is a must as well as understanding Monads in Haskelll.
     168Functional programming background is a must as well as understanding Monads in Haskell.
    169169 
    170170[1] http://yapb-soc.blogspot.fr/2012/10/monads-in-c.html
     
    172172In addition to provide the common interface to some of the Boost monads, the project could add the State monad.
    173173
     174This project could be mentored by ?.
    174175
    175176
     
    186187[3] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3872.pdf
    187188
    188 This project could be mentored by Vicente J. Botet Escriba
     189This project could be mentored by Vicente J. Botet Escriba and possibly Dr. Hartmut Kaiser.
    189190
    190191=== Boost.Thread / Scheduler-Executor ===
     
    196197[2] https://github.com/boostorg/thread/tree/develop/include/boost/thread/executors
    197198
    198 This project could be mentored by Vicente J. Botet Escriba
     199This project could be mentored by Vicente J. Botet Escriba and possibly Dr. Hartmut Kaiser.
    199200
    200201
     
    206207
    207208
    208 This project could be mentored by Vicente J. Botet Escriba
     209This project could be mentored by Vicente J. Botet Escriba and possibly Dr. Hartmut Kaiser.
    209210
    210211
     
    219220
    220221[2] https://svn.boost.org/svn/boost/sandbox/fixed_point/
     222
     223This project could be mentored by ?.
     224
    221225
    222226=== Boost.Chrono / Date ===
     
    245249[1] https://github.com/panaseleus/stack_unwinding#d-style-scope-guardsactions
    246250
     251This project could be mentored by ?.
     252
     253
    247254=== Boost.Pipelines ===
    248255
     
    254261
    255262This project could be mentored by Vicente J. Botet Escriba
     263
    256264
    257265=== Boost.XML ===
     
    310318This project could be mentored by Vicente J. Botet Escriba
    311319
    312 == Ideas ==
    313 
    314 Here you find a lot of ideas which have been mentioned on the Boost mailing list. Boost developers can use these ideas to create new projects (and add them to the list of projects above). And students can use them as start points to propose projects themselves. While these ideas are by far not as concrete as projects in the list above, they give students an idea what else they can work on within Boost. They also give students a chance to propose exactly the kind of project they'd like to work on instead of picking one from the predefined projects from above.
    315 
    316 === Boost libraries (extending/overhauling/finishing) ===
     320= Ideas =
     321
     322If after reading all of the standalone project ideas above you are finding that none excites you, we have collected below a series of smaller work items none of which alone would be big enough to make up a full GSoC, but which could be combined to form a very valuable GSoC indeed. The following would be excellent start points for students to propose projects themselves. While these ideas are by far not as concrete as projects in the list above, they give students an idea what else they can work on within Boost. They also give students a chance to propose exactly the kind of project they'd like to work on instead of picking one from the predefined projects from above.
     323
     324Students interested in proposing a mix of the below work items should propose their mix on the Boost mailing list. We will then figure out a suitable mentor for you.
     325
     326== Boost libraries (extending/overhauling/finishing) ==
    317327* Reliable UDP (may UDT) for Boost.Asio
    318328* USB for Boost.Asio
     
    326336* Replace all uses of CAS spinlocks in all Boost libraries with memory transactions via BOOST_BEGIN_MEMORY_TRANSACTION. See https://svn.boost.org/trac/boost/ticket/9615.
    327337
    328 === Algorithms ===
     338== Algorithms ==
    329339* Radix sort
    330340* Approximate string matching
     
    335345* Kinetic scrolling
    336346
    337 === Data strutures ===
     347== Data strutures ==
    338348* Trie data structure, extending the work done during GSoC 2013.
    339349* B-tree data structure
     
    341351* Slim string (as opposed to the fat std::string interface, maybe immutable, maybe policy based)
    342352
    343 === Media ===
     353== Media ==
    344354* Hardware graphics (OpenGL/OpenGL ES/DirectX abstraction)
    345355* Audio library (OpenAL/FMOD/etc)
    346356* Video processing library (gil for video)
    347357
    348 === Games ===
     358== Games ==
    349359* Physics library (ODE/Havok/PhysX/etc abstraction)
    350360* Input library (like DirectInput/XInput)
    351361* Ranking algorithms (elo/TrueSkill)
    352362
    353 === Databases ===
     363== Databases ==
    354364* Relational database library (http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Relational_Database_Access)
    355365* Document database library (couchdb/mongodb/etc)
    356366* Spatial indexes
    357367
    358 === Math ===
     368== Math ==
    359369
    360370* Geometry library (convince the developers to submit Eigen 3 to Boost)
    361371* Investigate exporting multiple-precision types to Python via Boost.Python and interoperability with "symbolic python". See: [http://sympy.org/en/index.html]
    362372
    363 === Memory ===
     373== Memory ==
    364374* Memcache library
    365375* Memswap algorithm
    366376
    367 === File formats ===
     377== File formats ==
    368378* JSON parsing libary
    369379* XML library
    370380
    371 === Communication ===
     381== Communication ==
    372382* Channel library (http://channel.sourceforge.net/)
    373383* RPC
    374384
    375 === GUI ===
     385== GUI ==
    376386* GUI library
    377387
    378 === C++ "extensions" ===
     388== C++ "extensions" ==
    379389* Type switch library (http://tinyurl.com/n3449)
    380390
    381 === Hardware ===
     391== Hardware ==
    382392* CPUID