boost_soc_06_overview.html 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0.1 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  5. <title>An overview of Boost participation in
  6. Google Summer of Code&trade; 2006</title>
  7. <link rel="stylesheet" href="../boost.css" type="text/css">
  8. <style type="text/css">
  9. <!--
  10. table{
  11. PADDING-RIGHT: 2pt;
  12. BORDER-TOP: gray 1pt solid;
  13. DISPLAY: block;
  14. PADDING-LEFT: 2pt;
  15. PADDING-BOTTOM: 2pt;
  16. BORDER-LEFT: gray 1pt solid;
  17. MARGIN-RIGHT: 32pt;
  18. PADDING-TOP: 2pt;
  19. background-color: #EEEEEE;
  20. }
  21. td{
  22. BORDER-STYLE: solid;
  23. BORDER-WIDTH: 1pt;
  24. BORDER-LEFT: ;
  25. BORDER-RIGHT: gray 1pt solid;
  26. BORDER-TOP: ;
  27. BORDER-BOTTOM: gray 1pt solid;
  28. }
  29. th{color: #ffffff; background-color: #000000;}
  30. .odd_tr{background-color: #ffffff;}
  31. -->
  32. </style>
  33. </head>
  34. <body>
  35. <img src="../boost.png" alt="boost.png (6308 bytes)" align="middle" width="277" height="86">
  36. <h1>An overview of Boost participation in
  37. Google Summer of Code&trade; 2006</h1>
  38. <hr>
  39. <p>
  40. For the second consecutive year, Google has conducted its
  41. <a href="http://code.google.com/soc/">Summer of Code&trade;</a> initiative,
  42. a program by which student developers are sponsored for their contributions
  43. within open source organizations willing to mentor the participants. The 2006
  44. campaign has run between April and September, with active development work
  45. taking place between May 23 and August 21.
  46. </p>
  47. <p>
  48. Around mid April, when the program had just started, some Boost members began
  49. considering the possibility to enter Summer of Code as a mentoring
  50. organization. Despite the lack of time and the fact that most of us were
  51. completely new to this initiative, Boost managed to successfully apply for
  52. the program. As a result ten projects were selected and mentored, most of
  53. which are expected to become full contributions to Boost in the near future.
  54. </p>
  55. <p>
  56. We give here a summary report of this experience, along with a short analysis
  57. of the main problems we found, so that we can work at solving them and do
  58. better next year.
  59. </p>
  60. <h2>Contents</h2>
  61. <ul>
  62. <li><a href="#how_the_program_works">How the program works</a>
  63. <ul>
  64. <li><a href="#2006_figures">2006 figures</a></li>
  65. </ul>
  66. </li>
  67. <li><a href="#boost_participation">Boost participation</a>
  68. <ul>
  69. <li><a href="#application_and_process_selection">Application and
  70. process selection</a></li>
  71. <li><a href="#accepted_projects">Accepted projects</a></li>
  72. <li><a href="#development">Development</a></li>
  73. <li><a href="#results">Results</a></li>
  74. </ul>
  75. </li>
  76. <li><a href="#analysis">Analysis</a>
  77. <ul>
  78. <li><a href="#boost_appeal">Boost appeal</a></li>
  79. <li><a href="#opportunities_lost">Opportunities lost?</a></li>
  80. <li><a href="#projects_startup">Projects startup</a></li>
  81. <li><a href="#ongoing_development">Ongoing development</a></li>
  82. <li><a href="#public_communication_issues">Public communication
  83. issues</a></li>
  84. <li><a href="#scope_of_projects">Scope of projects</a></li>
  85. </ul>
  86. </li>
  87. <li><a href="#suggestions_for_improvement">Suggestions for improvement</a>
  88. <ul>
  89. <li><a href="#preparation">Preparation</a></li>
  90. <li><a href="#public_communication">Public communication</a></li>
  91. <li><a href="#project_management">Project management</a></li>
  92. </ul>
  93. </li>
  94. <li><a href="#conclusions">Conclusions</a></li>
  95. <li><a href="#acknowledgements">Acknowledgements</a></li>
  96. </ul>
  97. <h2><a name="how_the_program_works">How the program works</a></h2>
  98. <p>
  99. There are three types of participants in Google Summer of Code:
  100. <ul>
  101. <li>Google itself acts as the funding partner and conducts the overall
  102. program.</li>
  103. <li>The open source organizations accepted into the program must designate
  104. people inside the organization who will act as project mentors.</li>
  105. <li>Students submit their project ideas and, if selected, work in
  106. collaboration with one of the mentoring organizations; upon successful
  107. completion of the project, students receive the full stipend for the
  108. program.</li>
  109. </ul>
  110. The program goes through the following stages:
  111. <ul>
  112. <li>Organization selection: those open source organizations willing to
  113. enter Summer of Code submit an expression of interest to Google, along
  114. with information Google uses for qualifying purposes. Selected organizations
  115. are publicly announced and each organization is expected to provide a pool
  116. of project ideas.</li>
  117. <li>Student selection: students willing to participate submit one or more
  118. project proposals, typically expanding on some of the ideas previously
  119. provided by the mentoring organizations. A student can apply several times
  120. and for different organizations, but ultimately can only be chosen for just
  121. one project. These proposals are routed by Google to the appropriate
  122. organizations, which must analyze them, rank them, and assign mentors to the
  123. most promising applications. Based on the information provided by mentoring
  124. organizations, Google issues the final list of accepted projects.</li>
  125. <li>Development: Students, guided by their assigned mentors, are expected to
  126. complete the projects in a period of three months. Google asks mentors for a
  127. mid-program review upon which continuation of the project depends.</li>
  128. <li>Final review: Once the development period is over, mentors are requested
  129. to inform Google on the results of the project, and determine whether students
  130. qualify to receive the full stipend.</li>
  131. </ul>
  132. </p>
  133. <h3><a name="2006_figures">2006 figures</a></h3>
  134. <p>
  135. The 2006 campaign of Google Summer of Code took place between April 14 and
  136. September 25. A total of 102 mentoring organizations participated. Of the 6,338
  137. applications submitted by 3,044 students around the globe, 630 were finally
  138. selected and funded. Google has spent more than US$3 million in student stipends
  139. and compensations to the mentoring organizations.
  140. </p>
  141. <h2><a name="#boost_participation">Boost participation</a></h2>
  142. <h3><a name="#application_and_process_selection">Application and
  143. process selection</a></h3>
  144. <p>
  145. On April 14, the same day Google Summer of Code started, Julio M. Merino Vidal
  146. (later to become one of the selected students) sent a message encouraging Boost
  147. members to participate in this program as a mentoring organization. This call
  148. sparked the interest of the community; although time was already short for doing
  149. all the preparation labors, Boost moderators put rapidly themselves to work and
  150. conducted the preliminary registration steps. In the meantime, a Wiki page was
  151. grown with project ideas provided by Boost members, totalling more than twenty
  152. proposals.
  153. </p>
  154. <p>
  155. By the beginning of May Boost was officially accepted into the program and Boost
  156. moderators set out to form a group of mentors, selected on an invitation basis.
  157. As student selection is a delicate process, involving the assessment of individuals
  158. on their technical skills, all subsequent discussions were conducted by the
  159. selected mentors on a private mail list established for their collaboration.
  160. </p>
  161. <p>
  162. We were not prepared for the avalanche of student applications that followed. On
  163. day two after the application period was open, we had received three proposals;
  164. next day it was 14, and within a week the count exceeded 50. By the end of the
  165. application period the total number of proposals received was 174, which forced
  166. us to go through a very intensive ranking process and recruit additional mentors.
  167. Two rules were followed so as rationalize the process of selection among dozens
  168. of different proposals:
  169. <ul>
  170. <li>Where there were competing applications for the same project idea, only
  171. one were to be ultimately selected; so, no two projects with the same or very
  172. similar goals were accepted.</li>
  173. <li>Some of the applications built on a given Boost library (for instance, the
  174. Boost Graph Library is a frequent target for the addition of algorithms.) We
  175. limited the applications to a maximum of two per Boost library.</li>
  176. </ul>
  177. These rules have the combined effect of greatly reducing the number of eligible
  178. applications while at the same time distributing the accepted projects evenly
  179. across the space of ideas. Moreover, students with unique proposals, i.e. project
  180. ideas not coming from the pool originally presented by Boost, are at a
  181. competitive advantage.
  182. </p>
  183. <p>
  184. The different proposals were classified according to its related technological
  185. area so that each cluster could be handled by an appointed mentor with the
  186. required expertise on the subject. Mentors submitted then "focus reports"
  187. summarizing the applications under their responsibility; these reports served as
  188. a first filter to help reduce the number of final applications to be evaluated
  189. jointly. Along the process, students with the most promising proposals were asked
  190. to refine their ideas and provide further information.
  191. </p>
  192. <p>
  193. Although not enforced by the official rules, we agreed upon a one-to-one ratio
  194. of mentors to students, which ultimately marked a hard limit on the maximum number
  195. of eligible projects.
  196. </p>
  197. <h3><a name="accepted_projects">Accepted projects</a></h3>
  198. <p>
  199. Google accepted and funded the ten top-ranked projects endorsed by Boost. Of
  200. these, eight projects are libraries or library components targeted for future
  201. inclusion into Boost, while the remaining two consist of utility programs
  202. heavily relying on Boost.
  203. </p>
  204. <blockquote>
  205. <b>C++ Coroutine Library</b>
  206. <br>
  207. Giovanni Piero Deretta, mentored by Eric Niebler.
  208. <br>
  209. Library for the management through a modern C++ interface of OS-provided
  210. coroutine facilities.
  211. </blockquote>
  212. <blockquote>
  213. <b>Concurrency Library</b>
  214. <br>
  215. Matthew Calabrese, mentored by David Abrahams.
  216. <br>
  217. STL-inspired generic framework for high-level specification and execution of
  218. parallelizable algorithms.
  219. </blockquote>
  220. <blockquote>
  221. <b>TR1 Math Special Functions</b>
  222. <br>
  223. Xiaogang Zhang, mentored by John Maddock.
  224. <br>
  225. Implementation of the 23 special mathematical functions specified in C++
  226. standard library extension proposal TR1.
  227. </blockquote>
  228. <blockquote>
  229. <b>The Boost.Process library</b>
  230. <br>
  231. Julio M. Merino Vidal, mentored by Jeff Garland.
  232. <br>
  233. Portable library for process launching and basic management.
  234. </blockquote>
  235. <blockquote>
  236. <b>Out-of-Core Graphs and Graph Algorithms</b>
  237. <br>
  238. St&eacute;phane Zampelli, mentored by Jeremy Siek.
  239. <br>
  240. Extension of the Boost Graph Library to deal with out-of-core structures,
  241. i.e. data sets too large to be kept in main memory at once.
  242. </blockquote>
  243. <blockquote>
  244. <b>MISC (M)ulti (I)ndex (S)pecialized (C)ontainers</b>
  245. <br>
  246. Mat&iacute;as Capeletto, mentored by Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
  247. <br>
  248. Families of specialized containers internally based on Boost.MultiIndex.
  249. </blockquote>
  250. <blockquote>
  251. <b>Generic Tree Container</b>
  252. <br>
  253. Bernhard Reiter, mentored by Ren&eacute; Rivera.
  254. <br>
  255. Design and implementation of a family of STL-compatible tree containers.
  256. </blockquote>
  257. <blockquote>
  258. <b>Viewer utility for FSMs</b>
  259. <br>
  260. Ioana Tibuleac, mentored by Andreas Huber D&ouml;nni.
  261. <br>
  262. Utility program for the visualization of finite state machines (FSMs) specified
  263. with Boost.Statechart.
  264. </blockquote>
  265. <blockquote>
  266. <b>Modular C++ preprocessor, using Boost.Spirit</b>
  267. <br>
  268. Hermanpreet 'Lally' Singh, mentored by Joel de Guzman.
  269. <br>
  270. Implementation with Boost.Spirit and Boost.Wave of a front-end translator
  271. from Modular C++ (as specified in a proposal to add modules to C++ by Daveed
  272. Vandevoorde) to standard C++.
  273. </blockquote>
  274. <blockquote>
  275. <b>Implementing a state of the art Mincut/Maxflow algorithm.</b>
  276. <br>
  277. Stephan Diederich, mentored by Douglas Gregor.
  278. <br>
  279. Implementation of a fast mincut/maxflow routine for the Boost Graph Library
  280. based on a new algorithm devised by Vladimir Kolmogorov.
  281. </blockquote>
  282. <h3><a name="development">Development</a></h3>
  283. <p>
  284. Two main facilities were set up to assist students and mentors during the
  285. development phase: a mailing list and a Trac/SVN project management system
  286. with separate directories for each project. One of the students, Mat&iacute;as
  287. Capeletto, out of personal initiative registered a Google Group aimed at giving
  288. students with Boost a place for informal interaction and discussion of common
  289. problems.
  290. </p>
  291. <p>
  292. After the initial warm-up period, each student-mentor pair performed development
  293. work mostly privately. The usage of the Boost mailing lists was scarce, and
  294. only by the end of the program did some students publicly announced their results.
  295. </p>
  296. <h3><a name="results">Results</a></h3>
  297. <p>
  298. By the date the development period was officially closed, the status of the
  299. different projects was as follows:
  300. <ul>
  301. <li>Seven projects were completed or nearly completed and the students are
  302. expected to ask for a formal review within 2006 or early 2007. Four of these
  303. projects necessitated a goal reorientation during development, basically
  304. because the original plan was too ambitious for three months. Most of the
  305. projects are still in active development during the months following the
  306. Summer of Code program.</li>
  307. <li>Two projects did not reach the planned goals, but nevertheless produced
  308. useful material that could be expanded outside of the Summer of Code
  309. program.</li>
  310. <li>One project was abandoned shortly after the midterm review. The reasons
  311. for the abandonment are unknown.</li>
  312. </ul>
  313. The results of all the projects can be consulted online at the dedicated
  314. <a href="https://www.boost-consulting.com:8443/trac/soc/browser/boost/soc/2006">Trac
  315. site</a>.
  316. </p>
  317. <h2><a name="analysis">Analysis</a></h2>
  318. <p>
  319. We examine the various stages of Boost participation in Summer of Code, with an
  320. emphasis on discovering opportunities for improvement.
  321. </p>
  322. <h3><a name="boost_appeal">Boost appeal</a></h3>
  323. <p>
  324. In a mid project
  325. <a href="http://code.google.com/soc/GSoC2006Statistics.pdf">presentation at OSCON
  326. 2006</a>, Chris DiBona from Google provided some data about the organizations
  327. which received the most applications:
  328. </p>
  329. <p align="center">
  330. <table cellspacing="0">
  331. <tr>
  332. <th align="left">Organization</th>
  333. <th>No of applications</th>
  334. </tr>
  335. <tr>
  336. <td>KDE</td>
  337. <td align="center">244</td>
  338. </tr>
  339. <tr class="odd_tr">
  340. <td>Ubuntu &amp; Bazaar</td>
  341. <td align="center">236</td>
  342. </tr>
  343. <tr>
  344. <td>Python Software Foundation</td>
  345. <td align="center">212</td>
  346. </tr>
  347. <tr class="odd_tr">
  348. <td>GNOME</td>
  349. <td align="center">199</td>
  350. </tr>
  351. <tr>
  352. <td>Apache Software Foundation</td>
  353. <td align="center">190</td>
  354. </tr>
  355. <tr class="odd_tr">
  356. <td><b>Boost</b></td>
  357. <td align="center"><b>174</b></td>
  358. </tr>
  359. <tr>
  360. <td>Gaim</td>
  361. <td align="center">152</td>
  362. </tr>
  363. <tr class="odd_tr">
  364. <td>The GNU Project</td>
  365. <td align="center">148</td>
  366. </tr>
  367. <tr>
  368. <td>Drupal</td>
  369. <td align="center">146</td>
  370. </tr>
  371. </table>
  372. </p>
  373. <blockquote style="FONT-SIZE: 75%;">
  374. The numbers shown here have been estimated from a chart included in the
  375. presentation slides. This chart contains an additional column labeled "Google"
  376. which actually accounts for the applications dismissed because of their low
  377. quality.
  378. </blockquote>
  379. <p>
  380. The fact that Boost is ranked the sixth most attractive organization out of a
  381. total of 102 was entirely unexpected, especially considering the wide popularity
  382. of the rest of top-rated organizations. There is a more or less implicit
  383. consensus among Boost members that ours is a relatively niche project, known for
  384. its quality standards by seasoned C++ practitioners, but with a limited penetration
  385. among entry level programmers: maybe the figures above should make us reconsider
  386. this assumption. A cursory examination of the applications submitted to Boost reveals
  387. that most applicants were regular users of Boost: many cite the Boost status among
  388. the C++ community as an appealing factor in order to apply.
  389. </p>
  390. <h3><a name="opportunities_lost">Opportunities lost?</a></h3>
  391. <p>
  392. If we look at the number of funded projects with respect to the applications received,
  393. figures are not so favorable to Boost.</p>
  394. <p align="center">
  395. <table cellspacing="0">
  396. <tr>
  397. <th align="left">Organization</th>
  398. <th>No of projects</th>
  399. <th>Project/app ratio</th>
  400. </tr>
  401. <tr>
  402. <td>KDE</td>
  403. <td align="center">24</td>
  404. <td align="center">9.8 %</td>
  405. </tr>
  406. <tr class="odd_tr">
  407. <td>Ubuntu &amp; Bazaar</td>
  408. <td align="center">22</td>
  409. <td align="center">9.3 %</td>
  410. </tr>
  411. <tr>
  412. <td>Python Software Foundation</td>
  413. <td align="center">23</td>
  414. <td align="center">10.8 %</td>
  415. </tr>
  416. <tr class="odd_tr">
  417. <td>GNOME</td>
  418. <td align="center">19</td>
  419. <td align="center">9.5 %</td>
  420. </tr>
  421. <tr>
  422. <td>Apache Software Foundation</td>
  423. <td align="center">27</td>
  424. <td align="center">14.2 %</td>
  425. </tr>
  426. <tr class="odd_tr">
  427. <td><b>Boost</b></td>
  428. <td align="center"><b>10</b></td>
  429. <td align="center"><b>5.7 %</b></td>
  430. </tr>
  431. <tr>
  432. <td>Gaim</td>
  433. <td align="center">8</td>
  434. <td align="center">5.3 %</td>
  435. </tr>
  436. <tr class="odd_tr">
  437. <td>The GNU Project</td>
  438. <td align="center">10</td>
  439. <td align="center">6.8 %</td>
  440. </tr>
  441. <tr>
  442. <td>Drupal</td>
  443. <td align="center">14</td>
  444. <td align="center">9.6 %</td>
  445. </tr>
  446. </table>
  447. </p>
  448. <p>
  449. It turns out that the project/application ratio for almost any other organization
  450. among the top nine is considerably higher than that of Boost. As it happens, Google
  451. initially requested that organizations submitted the maximum number of projects they
  452. felt they could cope with, and we got funding for exactly what we aimed for, so the
  453. limiting factor lies entirely on Boost's side.
  454. </p>
  455. <h3><a name="projects_startup">Projects startup</a></h3>
  456. <p>
  457. Contributing to Boost relies on a fair number of guidelines and protocols for
  458. coding, documentation, testing and maintenance. Many of the required tools are
  459. exclusively used within Boost, and some of them are not trivial, like for instance
  460. Boost.Build. Although the Boost web site contains information about all these tools
  461. and procedures, this intelligence is scattered through unrelated pages and sometimes
  462. is very hard to come by.
  463. </p>
  464. <p>
  465. So, there is a good deal of expertise required to begin working at Boost. Some
  466. students have reported on startup difficulties getting to know these details and
  467. familiarizing themselves with the tools, most notably <code>bjam</code> and Quickbook. Each
  468. student overcome the startup difficulties on their own or resorting to their
  469. mentors (see the section on <a href="#public_communication_issues">public
  470. communication issues</a>).
  471. </p>
  472. <h3><a name="ongoing_development">Ongoing development</a></h3>
  473. <p>
  474. Once students got past the startup stage, most projects advanced without serious
  475. complications. In the majority of cases, it was realized at some point during
  476. the development that there was no time to complete it. Some participants had to
  477. redefine the goals in an effort to keep the project within schedule, while others
  478. simply decided that they would continue working after the official deadline of
  479. Summer of Code.
  480. </p>
  481. <p>
  482. The information flow between each student and their mentor was usually reported
  483. by both parties to be satisfactory. The projects suffering from lack of
  484. communication have been precisely those yielding the poorest results. In general,
  485. mentors have not felt overwhelmed by requests from their students, and even in a
  486. couple of cases the projects were run practically unattendedly. This fact is
  487. witness to the high competence of the students recruited into the program.
  488. </p>
  489. <p>
  490. The degree of usage of the Trac/SVN system has varied. Some students did frequent
  491. updates, while others have just used the repository to dump the final results for
  492. the official submission to Google.
  493. </p>
  494. <h3><a name="public_communication_issues">Public communication
  495. issues</a></h3>
  496. <p>
  497. Students and mentors had at their disposal three different forums for the public
  498. interchange of information and support:
  499. <ul>
  500. <li>Boost public lists, especially the developers and users lists.</li>
  501. <li>A dedicated mailing list reaching all students and mentors working at
  502. Summer of Code in Boost.</li>
  503. <li>A more casual Google Group, set up by one of the students, aimed at
  504. providing the participants with a place for socializing and resolution of
  505. common problems.</li>
  506. </ul>
  507. Despite this abundance of resources, there was an almost complete lack of group
  508. communication among all the parties involved and between these and the larger
  509. Boost community. Seemingly, students were satisfied to pursue their activities by
  510. relying on support from their mentors alone. This circumstance has prevented
  511. Boost members from enriching the initiative by offering their experience and
  512. insight, and has possibly led students to the false impression that contributing
  513. to Boost proceeds in a predictable linear path from requisites to completion of
  514. the work. When asked about their not engaging in public communication, the students
  515. gave vague justifications that can be classified into the following:
  516. <ul>
  517. <li>Doubts were deemed too technical or specific to be worth raising in
  518. public.</li>
  519. <li>A crave for perfectionism detracted students from asking or submitting work
  520. in progress until they felt their material looked good enough.</li>
  521. <li>Shyness: some students probably lacked previous experience communicating in
  522. public, and most are not English native speakers, which could also be a
  523. limiting factor.</li>
  524. </ul>
  525. Although students did not identify the following as a reason not to go public, it
  526. is likely that many of them did not feel the need given the readily access to their
  527. mentors they enjoyed. It is easy to grow used to such a dedicated source of support
  528. and neglect resorting to other resources. Mentors should have encouraged their
  529. students to pursue the public discussion of projects, which constitutes one of the
  530. pillars of Boost renowned quality.
  531. </p>
  532. <h3><a name="scope_of_projects">Scope of projects</a></h3>
  533. <p>
  534. In hindsight, it has become apparent that most projects were too ambitious to be
  535. completed within the three months of duration of the program, and even those that
  536. were considered a success will need weeks or months of polishing up before the
  537. material is ready for a formal review. In contrast with other organizations
  538. participating in the Summer of Code program, Boost has as of this writing included
  539. no results into its code base. No formal review for any project has been requested
  540. yet, either.
  541. </p>
  542. <p>
  543. These scope issues are very dependent on the particular type of project. We can
  544. classify the Boost projects for Summer of Code as follows:
  545. <ul>
  546. <li>Full-fledged libraries,</li>
  547. <li>additions to existing Boost libraries,</li>
  548. <li>utilities and tool projects using Boost.</li>
  549. </ul>
  550. Of these, additions (like for instance the mincut/maxflow algorithm for BGL by
  551. Stephan Diederich) are the most suitable for completion in a short period of time:
  552. most of the preparation work is already done, and the student has clear guides as
  553. to what coding and documentation standards to follow. Also, these projects need
  554. not undergo a formal review, since it is the responsibility of the hosting library
  555. author to review the code and include it within her discretion. Utility projects
  556. seem also suitable for small timeframes, though most project proposals and requests
  557. are naturally oriented to contributions of actual code to the Boost project.
  558. </p>
  559. <p>
  560. As for those projects involving the design and realization of full-fledged
  561. libraries, there is little hope that the goals and scope can be kept modest enough
  562. for a three-month schedule. Boost candidate libraries developed by professional
  563. authors usually take much longer than three months to be accepted; some libraries
  564. have been evolving through several <i>years</i> before being included into Boost.
  565. So, the best we can hope for if we are to support the realization of library projects
  566. for Boost inside Summer of Code is that the results by the end of the program can
  567. be evaluated to constitute a viable <i>potential</i> contribution to Boost. When this is
  568. the case, it is crucial that the student commits to further working on the project
  569. up to completion and formal review. Perhaps more important than getting libraries
  570. coded is to engage new authors into a long-term relationship with the Boost project.
  571. </p>
  572. <h2><a name="suggestions_for_improvement">Suggestions for improvement</a></h2>
  573. <p>
  574. The following proposals aim to alleviate some of the problems we have identified
  575. during the development of Summer of Code within Boost. These action points are
  576. related only to the issues found in connection with Boost: we are not addressing
  577. other areas of improvement associated to the Summer of Code program itself.
  578. </p>
  579. <h3><a name="preparation">Preparation</a></h3>
  580. <p>
  581. Much work can be done before the actual program begins. The following preparation
  582. activities can already be launched:
  583. </p>
  584. <p>
  585. <b>Create a pool of ideas for projects.</b> This action will provide valuable extra
  586. time for evaluation and refining of ideas before the Summer of Code begins.
  587. The experience has shown that those projects with more preparation work, especially
  588. in the area of design, were ultimately more successful. The pool can also be used
  589. to retain interesting ideas that arise at the mailing lists and very often are
  590. not given proper attention and become abandoned.
  591. </p>
  592. <p>
  593. <b>Create a student pool.</b> Prior involvement with Boost is clearly an advantage
  594. both in the selection phase and later during project development. Those students
  595. with a serious interest in participating in Summer of Code with Boost can enter
  596. the pool and begin exploring ideas and interacting with the community well in
  597. advance of the summer, so as to put themselves in a favorable position for the
  598. selection. Advertisement for the student pool can be initiated in the beginning of
  599. 2007 through the usual channels (web site and mailing lists): additionally, Boost
  600. members involved with the University can spread this information locally and help
  601. raise the interest of students in their environment.
  602. </p>
  603. <p>
  604. <b>Create a mentor pool.</b> Given the rush with which Boost entered the 2006
  605. Summer of Code campaign, the invitation of mentors has to be done on an on-demand
  606. basis as it became all too evident that the task was growing bigger and bigger.
  607. It is important that the organization is better prepared next year so that a
  608. number of people with the ability and will to participate as Boost mentors are
  609. identified in advance.
  610. </p>
  611. <p>
  612. <b>Prepare a startup package.</b> In order to facilitate the initial period of
  613. getting familiarized with the various Boost guidelines, protocols and tools, it
  614. would be extremely useful to prepare a compilation of startup material for
  615. students. This package can consist of a single document gathering the currently
  616. dispersed information, or go beyond this and provide some bundle of documentation
  617. and pre-built tools, an approach that one of the students is currently working on.
  618. </p>
  619. <h3><a name="public_communication">Public communication</a></h3>
  620. <p>
  621. It is crucial that students get involved with the community as soon as possible
  622. and grow to appreciate the advantages of public development with respect to
  623. solitary coding.
  624. </p>
  625. <p>
  626. <b>Mandate (bi)weekly reports.</b> These reports should be directed to the public
  627. mailing lists so as to give all Boost members an opportunity to follow the work
  628. in progress and contribute. Reporting has the extra benefit for students of
  629. forcing them to reflect on their own work periodically and struggle with the
  630. often difficult task of presenting their ideas to others.
  631. </p>
  632. <p>
  633. <b>Conduct student-mentor exclusively through public channels.</b> This might be
  634. too drastic a policy, as some matters need privacy, and depending on the amount
  635. of information exchanged flooding problems may arise. Less severe variations
  636. involve allowing for some private interchange at the mentors' discretion and
  637. moving this kind of communication to a dedicated public mailing list different
  638. from the general ones.
  639. </p>
  640. <h3><a name="project_management">Project management</a></h3>
  641. <p>
  642. The two most important issues to improve upon with respect to the management are:
  643. <ul>
  644. <li>Project scope must be kept under control,</li>
  645. <li>The progress has to be publicly visible, so that problems of scope,
  646. design and/or schedule can be more easily detected.</li>
  647. </ul>
  648. Some of the proposals in this section are not to be regarded as strict rules,
  649. but rather as general guidelines to be kept in mind by students and encouraged
  650. by mentors.
  651. </p>
  652. <p>
  653. <b>Create a best practices document.</b> This document can serve as a guideline
  654. for project management, an area in which Boost traditionally imposes no
  655. requirements. Students might lack the expertise in this area that is usually
  656. taken for granted in the traditional model where contributions to Boost are
  657. made by professional programmers.
  658. </p>
  659. <p>
  660. <b>Mandate a design phase.</b> Having a concrete design set up and clearly
  661. described early in the project will help estimate the necessary effort for
  662. completion of the work. This is also an opportunity for public discussion.
  663. </p>
  664. <p>
  665. <b>Maintain code, docs and tests in parallel.</b> All too often, novice
  666. programmers do the coding in one fell swoop and only then move to testing and
  667. documenting their work. This is unacceptable by all current methodology
  668. standards, and can result in serious underestimations of the time to
  669. completion.
  670. </p>
  671. <p>
  672. <b>Encourage the KISS principle.</b> It is much better to finish a simpler library
  673. and then iteratively evolve it, once it has been exposed to public scrutiny and
  674. usage.
  675. </p>
  676. <p>
  677. <b>More Trac updates.</b> The repository should be viewed as an everyday work
  678. tool, not only as the place into which to dump the final results. Updating often
  679. leads to more visibility of the work by the mentor and the public in general.
  680. </p>
  681. <p>
  682. <b>Informal reviews.</b> The typical Summer of Code Boost project will not be
  683. completed by the official deadline, as have been discussed earlier. To somehow
  684. officialize the work done within the Summer of Code proper, and also to allow
  685. the students to reach some sort of psychological milestone, informal reviews can
  686. be instituted where Boost members evaluate the work done at then end of Summer
  687. of Code.
  688. </p>
  689. <p>
  690. <b>Engage students.</b> This experience has shown that it is possible to guide
  691. willing and bright students to the competence levels required for contributing
  692. to Boost. The best possible outcome of Summer of Code campaigns are the
  693. incorporation of new people into the circle of Boost active contributors. Strive
  694. to make the students commit to Boost.
  695. </p>
  696. <h2><a name="conclusions">Conclusions</a></h2>
  697. <p>
  698. Despite the lack of previous experience in Boost, our participation in Google
  699. Summer of Code has been extremely fruitful: much useful material has been produced,
  700. and, perhaps more importantly, some of the students are likely to commit on a
  701. long-term basis and grow to be regular Boost contributors. Traditionally, becoming
  702. a productive Boost author has a very high entry barrier due to the extreme quality
  703. standards, lack of public support and the very specific culture of the project.
  704. The appeal of Summer of Code itself and the possibility of being gently mentored
  705. into the world of Boost have most likely been key factors in lowering this entry
  706. barrier.
  707. </p>
  708. <p>
  709. The process has not been without some difficulties, either, as it was expected of
  710. a newcomer organization as Boost. We have tried to identify in this paper the
  711. areas of improvement and suggest specific actions so that the upcoming Google
  712. Summer of Code 2007 can be an even more rewarding experience.
  713. </p>
  714. <h2><a name="acknowledgements">Acknowledgements</a></h2>
  715. <p>
  716. This paper couldn't have been written without the numerous reports and contributions
  717. kindly provided by Boost students and mentors: Many thanks to all the participants
  718. for sharing their experiences with me. Thank you also to the people at Google who
  719. have promoted and conducted the Summer of Code initiative.
  720. </p>
  721. <hr>
  722. <p>Revised October 17th 2006</p>
  723. <p>&copy; Copyright 2006 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
  724. Distributed under the Boost Software
  725. License, Version 1.0. (See accompanying file <a href="../LICENSE_1_0.txt">
  726. LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
  727. http://www.boost.org/LICENSE_1_0.txt</a>)
  728. </p>
  729. </body>
  730. </html>
粤ICP备19079148号