Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1737)

Side by Side Diff: Documentation/web/community.itexi

Issue 321830043: web: move Google Summer of Code information in included/ (Closed)
Patch Set: add comment explaining why GSoC is in included/ Created 8 years ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Documentation/included/gsoc.itexi ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 @c -*- coding: utf-8; mode: texinfo; -*- 1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @ignore 2 @ignore
3 Translation of GIT committish: FILL-IN-HEAD-COMMITTISH 3 Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
4 4
5 When revising a translation, copy the HEAD committish of the 5 When revising a translation, copy the HEAD committish of the
6 version that you are working on. For details, see the Contributors' 6 version that you are working on. For details, see the Contributors'
7 Guide, node Updating translation committishes.. 7 Guide, node Updating translation committishes..
8 @end ignore 8 @end ignore
9 9
10 @include included/acknowledge.itexi 10 @include included/acknowledge.itexi
11 @include included/authors.itexi 11 @include included/authors.itexi
12 @include included/gsoc.itexi
12 @include included/helpus.itexi 13 @include included/helpus.itexi
13 14
14 @node Community 15 @node Community
15 @unnumbered Community 16 @unnumbered Community
16 17
17 @divClass{link-headings} 18 @divClass{link-headings}
18 19
19 @divClass{column-center-top} 20 @divClass{column-center-top}
20 @subheading Interacting with the community 21 @subheading Interacting with the community
21 22
(...skipping 853 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 876
876 @divEnd 877 @divEnd
877 @divEnd 878 @divEnd
878 879
879 880
880 881
881 882
882 @node Google Summer of Code 883 @node Google Summer of Code
883 @unnumberedsec Google Summer of Code 884 @unnumberedsec Google Summer of Code
884 885
885 @divClass{column-center-top} 886 @gsocCurrent
886 @subheading What is Google Summer of Code?
887 887
888 @uref{https://summerofcode.withgoogle.com/, GSoC} is a global program
889 that offers students stipends to write code for free software and open
890 source projects during the summer. For three months students work to
891 complete a given task as part of the project's community and under the
892 guidance of experienced mentors. The program is an excellent
893 opportunity for students to gain experience with real-world software
894 development and make a contribution that benefits everyone. It brings
895 new contributors to LilyPond and enables students who are already
896 involved to become more involved. LilyPond participates in GSoC as part
897 of the @uref{http://www.gnu.org/, GNU project}.
898
899 We have had GSoC participants in 2012, 2015 and 2016 and encourage
900 students to apply for the 2017 program.
901
902 If you are interested to apply for the program with LilyPond as a
903 project, please read the information below and don't hesitate to write
904 us on our developer mailing list (see @ref{Contact}). The student
905 application window is March 20 to April 3, 2017, but we strongly
906 encourage you to get in touch with our community ahead of that.
907
908 @divEnd
909
910 @divClass{column-center-middle-color2 bigger-subsubheadings}
911 @subheading Project Ideas List
912
913 Below is a list of GSoC project ideas (last update: January 2017), but
914 if you have other ideas for a project you may complete within the three
915 months of the program you're welcome to make a suggestion on our
916 developer mailing list (see @ref{Contact}). There are a number of areas
917 where LilyPond could be improved, and our development team is always
918 willing to help those who would like to tackle a project similar to
919 those listed below. As mentor availability varies from project to
920 project and from year to year it is wise to get in touch with us as
921 early as possible.
922
923 A full list of all the current open issues can be found
924 @uref{http://sourceforge.net/p/testlilyissues/issues/, here}.
925
926
927 @subsubheading Improve internal chord structure
928
929 The internal representation of LilyPond chords is not powerful enough
930 to capture the nomenclature of jazz chords. Currently the chord has
931 a root, a bass and an inversion. It would be nice to be able to handle
932 stacked or polychords, minor/major, etc. In order to do this, an
933 internal representation with the ability to capture the essence of
934 complex chords must be developed. As a bonus, once the internal
935 representation is developed, the output formatting of chord names can
936 be improved.
937
938 @emph{Difficulty:} Easy/medium
939
940 @emph{Requirements:} Scheme (Guile), but the level necessary can be
941 easily learned
942
943 @emph{Recommended:} Chord theory and naming
944
945 @emph{Mentor:} Carl Sorensen
946
947
948 @subsubheading Adopt the SMuFL music font encoding standard
949
950 For several years now a new standard for music fonts has been around:
951 @uref{http://www.smufl.org/, SMuFL}, which is also discussed as becoming part of
952 a future W3C standard for music encoding. As a FLOSS tool LilyPond should
953 adhere to such an open standard instead of using an isolated solution like it
954 does today. Adopting SMuFL will help integrating LilyPond with the world of
955 music notation software and eventually give LilyPond users access to a wider
956 selection of notation fonts.
957
958 Making LilyPond compliant to SMuFL includes remapping of the glyphs that are
959 built from METAFONT sources, adjusting the glyphs' metrics to SMuFL's
960 specifications, and finally updating the way LilyPond looks up and positions the
961 glyphs. As an optional part of this project LilyPond's font loading mechanism
962 could be modified to use notation fonts installed as system fonts instead of
963 inside the LilyPond installation.
964
965 @emph{Difficulty}: Easy/medium
966
967 @emph{Requirements}: C++ and willingness to get familiar with LilyPond
968 internals.
969
970 @emph{Recommended}: Interest and experience in working with font files.
971 A little bit of METAFONT.
972
973 @emph{Mentors}: Werner Lemberg, Abraham Lee
974
975
976 @subsubheading Adding variants of font glyphs
977
978 @divClass{keep-bullets}
979 @itemize
980
981 @item
982 Adding @q{on} and @q{between} staff-line variants.
983
984 @item
985 Shorter and narrower variants of some glyphs for example, accidentals.
986 Another, more specific example could be an ancient notation breve
987 notehead coming in two variants one with a small or big @q{hole} within
988 it.
989
990 @end itemize
991 @divEnd
992
993 @emph{Difficulty:} easy
994
995 @emph{Requirements:} MetaFont, C++, good eye for details
996
997 @emph{Recommended knowledge:} basic LilyPond knowledge
998
999 @emph{Mentor:} Werner Lemberg
1000
1001
1002 @subsubheading Contemporary Notation
1003
1004 LilyPond is very good at creating non-standard notation. Having to
1005 @emph{code} every graphical element instead of simply @emph{drawing}
1006 it may seem cumbersome but is in fact a strong asset. New notational
1007 functionality can be provided with consistent appearance, automatic
1008 layout and a natural syntactic interface.
1009
1010 Within the @uref{https://github.com/openlilylib/oll-core, openLilyLib}
1011 library system the student will create a fundamental infrastructure
1012 and building blocks to make creating contemporary notation easier.
1013 Additionally (at least) @emph{one} concrete package is developed to
1014 cover specific contemporary notation, such as for example the style
1015 of a given composer, extended playing techniques for a specific
1016 instrument or a certain category of effects.
1017
1018 @emph{Difficulty:} medium
1019
1020 @emph{Requirements:} Scheme (interaction with LilyPond internals),
1021 contemporary notation techniques
1022
1023 @emph{Recommended:} sense of building hierarchical frameworks
1024
1025 @emph{Mentors:} @emph{NN,} Urs Liska
1026
1027
1028 @subsubheading Rewrite LibreOffice LilyPond Extension with Python
1029
1030 The @uref{http://ooolilypond.sourceforge.net/, OOoLilyPond} extension
1031 made it possible to conveniently include LilyPond score snippets in
1032 OpenOffice.org/LibreOffice Writer, Draw and Impress documents while
1033 keeping source and image together. After many years without development
1034 an initial effort has started to make the extension compatible again
1035 with current versions of LibreOffice and LilyPond.
1036
1037 However, as the LibreOffice ecosystem has changed substantially it is
1038 now possible to rewrite the extension with Python and PyQt. This will
1039 not only be more powerful in general but will allow the integration of
1040 functionality from @uref{http://frescobaldi.org, Frescobaldi}, such as
1041 for example syntax highlighting, entry helpers, score wizards or musical
1042 transformations.
1043
1044 @emph{Difficulty:} easy/medium
1045
1046 @emph{Requirements:} Python, PyQt, LilyPond basics, LibreOffice
1047 extension basics
1048
1049 @emph{Recommended knowledge:} Familiarity with Frescobaldi code based
1050 or willingness to learn during bonding period
1051
1052 @emph{Mentor(s):} Joram Berger, Urs Liska, (Thorsten Behrens/LibreOffice)
1053
1054
1055 @subsubheading Automated testing and documentation for openLilyLib
1056
1057 @uref{https://github.com/openlilylib, openLilyLib} is an extension
1058 framework for LilyPond code providing a “snippets” repository and a
1059 suite of integrated packages such as for example page layout tools or
1060 scholarly annotations. It is very powerful and promising, but to really
1061 get off the ground two features are missing: automated testing and
1062 documentation generation.
1063
1064 Automated testing is necessary to ensure modifications to functionality
1065 don't break other functions within the library. There is already some
1066 Automated Testing of the “snippets” repository with Github's Travis
1067 server, but this has to be reconsidered and extended to cover the
1068 standalone packages too.
1069
1070 In order to be usable for a wider range of LilyPond users on a “consumer
1071 level” openLilyLib needs proper documentation. This documentation has
1072 to be generated from the sources, so a system is needed that requires
1073 package authors to document the input files and provide additional usage
1074 examples, from which documentation is generated. Ideally but not
1075 necessarily this is implemented as a Git hook, i.e. automatically upon
1076 each update to the repository. We don't prescribe the tools and
1077 approaches to be used, but the most widely used language in the LilyPond
1078 domain is Python, so there would be some bias towards that.
1079 Alternatively a Scheme solution could be fine so generating the
1080 documentation would actually be triggered by “compiling” a certain
1081 LilyPond input file. In general it is advisable to make use of proven
1082 concepts and tools from other languages.
1083
1084 The eventual output of the documentation should be a static HTML site
1085 that can be viewed locally and/or uploaded to a website. But it would
1086 be beneficial if the tool would first generate an intermediate
1087 representation (e.g. a JSON file with additional media files) from which
1088 a Single Page Application could retrieve content for display on
1089 openLilyLib's @uref{https://openlilylib.org, website}. Development of
1090 such a SPA @emph{can} be part of the GSoC project, but is optional.
1091
1092 @emph{Difficulty:} medium
1093
1094 @emph{Requirements:} Python or Scheme, static website generator(s) or
1095 (Node.js based) dynamic web application technology. Continuous
1096 Integration (can be learned during the bonding period)
1097
1098 @emph{Mentors:} Urs Liska, Matteo Ceccarello
1099
1100
1101 @subsubheading MusicXML
1102
1103 Improving MusicXML import and export functions:
1104
1105 File interchange between LilyPond and other applications using MusicXML
1106 is still a difficult matter. To import MusicXML it has to be converted
1107 manually by the @code{musicxml2ly} script. Export @emph{to} MusicXML is
1108 only available as a rudimentary feature inside Frescobaldi. In order to
1109 provide natural interchange between LilyPond and MusicXML based
1110 applications there's the need of actual import functionality and a
1111 dedicated export backend.
1112
1113 Importing XML shall provide file, line and column to add origin
1114 attributes to generated objects. That way point and click can be
1115 made available in Frescobaldi or other supported IDEs.
1116
1117 Exporting XML shall be realized with an exporter class like the MIDI
1118 export. This may be based on the work already done in
1119 @uref{https://github.com/DavidGarfinkle/Lilypond_MusicXMLexport, GSoC 2015}
1120 by David Garfinkle. It should be checked if it is possible to use
1121 another XML library than the one provided by guile-2 in order to have
1122 this feature available in current LilyPond (which is based on guile-1.8).
1123
1124 @emph{Difficulty:} medium
1125
1126 @emph{Requirements:} MusicXML, Python, Scheme, basic LilyPond knowledge
1127
1128 @emph{Recommended:} Familiarity with other scorewriters (for cross-testing)
1129
1130 @emph{Mentor:} Jan-Peter Voigt
1131
1132 @divEnd
1133
1134
1135 @divClass{column-center-middle-color2}
1136 @subheading Information for Applicants/Participants
1137
1138 In order to have a satisfying experience with GSoC applicants are
1139 strongly advised to thoroughly read the following recommendations. Some
1140 of these are relevant for the application process, others for the time
1141 within the project.
1142
1143 @itemize
1144
1145 @item
1146 Read all applicable information on the program's website, particularly
1147 the
1148 @uref{https://developers.google.com/open-source/gsoc/resources/manual,
1149 students' manual}. Make sure you fulfil all of Google's prerequisites
1150 and are willing to join the program as a full-time commitment over the
1151 coding period of three months.
1152
1153 @item
1154 Please get in touch with us as soon as possible if you are interested in
1155 applying with a project. Mentor availability may change without notice,
1156 project proposals may need fine-tuning, and many other reasons might
1157 require us to reject or ignore an application that hasn't been discussed
1158 before.
1159
1160 @item
1161 We do not know in advance how many “slots” we will have available for
1162 projects, so please be aware that you may find yourself in competition
1163 with other applicants or not. Interested or even enthusiastic response
1164 from our mentors is no guarantee of eventually being accepted, and
1165 @emph{not} being accepted does not necessarily indicate a negative
1166 evaluation of your application. If we have to decide between different
1167 applicants there may be various aspects to consider.
1168
1169 @item
1170 Integration in the LilyPond community is a fundamental part of GSoC, and
1171 we expect our students to make substantial efforts to become community
1172 members. Within the @emph{bonding period} we expect you to write a blog
1173 post about your project (either on @uref{http://lilypondblog.org, Scores
1174 of Beauty} or on any other blog) and to be active on our mailing lists,
1175 introducing yourself but also communicating about unrelated tasks. This
1176 goes beyond the mere setting up of a working environment and
1177 familiarizing yourself with the relevant code, but we think it is
1178 crucial for the GSoC project to be mutually satisfying.
1179
1180 @item
1181 If you are accepted to the program you will have one mentor explicitly
1182 assigned to your project. With this mentor you will have to agree upon
1183 a communication strategy, be it emails, chatrooms, issue trackers or
1184 voice/video chats. Regular communication is absolutely crucial for the
1185 success of a GSoC project so you are stricly required to keep talking to
1186 your mentor. But keep in mind that your mentor has explicitly taken
1187 over the responsibility for your project, and while unlike you he isn't
1188 paid for this activity you are still entitled to get regular attention
1189 from him.
1190
1191 @item
1192 In order to get support from your mentor you have to give him a chance
1193 to follow your progress and efforts. Therefore it is important to
1194 regularly commit your changes to the versioning repository you are
1195 working on. Don't hesitate making unfinished code available because you
1196 are afraid of criticism, and don't suppress questions because you think
1197 they might be considered stupid. But ideally your code should at any
1198 time be accompanied by compatible testing code. Your mentor may not be
1199 able to properly assess your code by only @emph{reading} it without the
1200 opportunity to apply it in a real example.
1201
1202 @end itemize
1203
1204 There is a list of inactive projects in the @ref{Attic}. We list
1205 projects there that are still considered valuable but for which there
1206 are currently no mentors available.
1207
1208 @divEnd
1209 888
1210 @node Authors 889 @node Authors
1211 @unnumberedsec Authors 890 @unnumberedsec Authors
1212 891
1213 @divClass{column-left-top} 892 @divClass{column-left-top}
1214 @subheading Current Development Team 893 @subheading Current Development Team
1215 894
1216 @divClass{keep-bullets} 895 @divClass{keep-bullets}
1217 @developersCurrent 896 @developersCurrent
1218 @divEnd 897 @divEnd
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
1407 @miscLink{CHANGES-1.3,v1.3}, 1086 @miscLink{CHANGES-1.3,v1.3},
1408 @miscLink{CHANGES-1.2,v1.2}, 1087 @miscLink{CHANGES-1.2,v1.2},
1409 @miscLink{CHANGES-1.1,v1.1}, 1088 @miscLink{CHANGES-1.1,v1.1},
1410 @miscLink{CHANGES-1.0,v1.0}, 1089 @miscLink{CHANGES-1.0,v1.0},
1411 @miscLink{CHANGES-0.1,v0.1}, 1090 @miscLink{CHANGES-0.1,v0.1},
1412 @miscLink{CHANGES-0.0,v0.0} 1091 @miscLink{CHANGES-0.0,v0.0}
1413 1092
1414 @divEnd 1093 @divEnd
1415 1094
1416 @divClass{column-center-middle-color2 bigger-subsubheadings} 1095 @divClass{column-center-middle-color2 bigger-subsubheadings}
1417 @subheading Inactive Google Summer of Code project suggestions 1096 @gsocInactive
1418
1419 The following list describes GSoC projects that had been proposed
1420 in recent years and which are still considered valuable but for
1421 which we currently don't have mentors available.
1422
1423
1424 @subsubheading Improve slurs and ties
1425
1426 The engraving quality of slurs and ties is often unsatisfactory. Ties
1427 @q{broken} by clef or staff changes are not handled well. The project
1428 could include collecting and sorting examples of bad output, deciding on
1429 the intended output and writing code to improve them.
1430
1431 @emph{Difficulty:} hard
1432
1433 @emph{Requirements:} C++, experience with writing heuristics
1434
1435 @emph{Recommended knowledge:} LilyPond knowledge, aesthetic sense
1436
1437
1438 @subsubheading Grace notes
1439
1440 Fix problems with synchronization of grace notes. Grace notes can
1441 interfere with LilyPond's timing and cause odd effects, especially when
1442 multiple staffs are used where some have grace notes and others don't.
1443 This is one of the longest-standing and one of the more embarrassing
1444 @uref{https://sourceforge.net/p/testlilyissues/issues/34/,bugs} in
1445 LilyPond.
1446
1447 @emph{Difficulty:} medium
1448
1449 @emph{Requirements:} C++, MIDI
1450
1451 @emph{Recommended:} familiarity with LilyPond internals
1452
1453
1454 @subsubheading Improve default beam positioning
1455
1456 For regular, cross-staff, broken and kneed beams. Beaming should depend
1457 on context and neighbor notes (see section 2.2 of
1458 @uref{http://imslp.org/wiki/Repository_of_Music-Notation_Mistakes_%28Coulon%2C_J ean-Pierre%29,
1459 this book}). If possible also reduce beaming-computation time.
1460
1461 @emph{Difficulty:} medium
1462
1463 @emph{Requirements:} C++, experience with writing heuristics
1464
1465 @emph{Recommended knowledge:} aesthetic sense
1466
1467
1468 @subsubheading Help improve compilation behavior
1469
1470 Automatic code analysis tools, like valgrind memory leak detection or
1471 callgrind code profilers, provide valuable information about possible
1472 flaws in our C++ code. Cleaning up warnings would allow us to automate
1473 the rejection of any patch which introduced extra warnings.
1474
1475 @emph{Difficulty:} medium
1476
1477 @emph{Requirements:} C++
1478
1479 @divEnd 1097 @divEnd
1480 1098
1481 @divClass{column-center-middle-color2} 1099 @divClass{column-center-middle-color2}
1482 @subheading Old News 1100 @subheading Old News
1483 1101
1484 Older news items dating back to July 2003. Newer news can be found on 1102 Older news items dating back to July 2003. Newer news can be found on
1485 the @ref{News} page. 1103 the @ref{News} page.
1486 @divEnd 1104 @divEnd
1487 1105
1488 @include web/news-old.itexi 1106 @include web/news-old.itexi
OLDNEW
« no previous file with comments | « Documentation/included/gsoc.itexi ('k') | no next file » | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b