Changes between Version 187 and Version 188 of SummerOfCode


Ignore:
Timestamp:
Mar 20, 2013, 2:05:38 AM (11 years ago)
Author:
larryv (Lawrence Velázquez)
Comment:

format all the things

Legend:

Unmodified
Added
Removed
Modified
  • SummerOfCode

    v187 v188  
    1 = Google Summer of Code =
     1= Google Summer of Code 2013 =
    22
    33[[PageOutline]]
    44
    5 This is the main tracking page for MacPorts' Google [http://code.google.com/soc/ "Summer of Code"].
     5This is the main tracking page for MacPorts’ [http://code.google.com/soc/ Google Summer of Code].
    66
    77[[Image(http://3.bp.blogspot.com/-couzpJZp3j0/URAgWOuBZ6I/AAAAAAAAAI8/CnlGEuPIL9M/s1600/GSoC+2013+logo.jpg, 300, link=http://www.google-melange.com/, title=Creative Commons Attribution-Noncommercial-No Derivative Works 3.0)]]
     
    1111== Applications for SoC ==
    1212
    13 {{{
     13The window for submitting mentoring organization applications is '''18 March 19:00 UTC — 29 March 19:00 UTC'''.
     14
     15{{{
     16#!comment
    1417#!div style="clear:left; display:block; width:100%; margin:0; padding:0;"
    15  29 March is the mentoring organization application deadline. It starts March 18th.
    16 }}}
    17 
    18 {{{
    19 #!comment
    20 #!div style="clear:left; display:block; width:100%; margin:0; padding:0;"
    21  Unfortunately we have not been accepted for GSoC 2013. However, any contributions and enhancement proposals are welcome! Please see [http://guide.macports.org/#development the guide] and subscribe to
    22  the MailingLists!
     18Unfortunately we have not been accepted for GSoC 2013. However, any contributions and enhancement proposals are welcome! Please see [http://guide.macports.org/#development the guide] and subscribe to the MailingLists!
    2319}}}
    2420
     
    5046
    5147What we expect from students for their applications:
    52  * Write your own abstract and proposal, copying text from this idea page is not enough.
    53  * Show us that you fully understand your task and know what you want to do over the summer.
    54  * At best, include a short weekly roadmap covering how you would work on the task.
     48* Write your own abstract and proposal, copying text from this idea page is not enough.
     49* Show us that you fully understand your task and know what you want to do over the summer.
     50* At best, include a short weekly roadmap covering how you would work on the task.
    5551
    5652What you should do before handing in an application:
    57  * Get familiar with the MacPorts project resources. Especially [GetMacPortsSource check out the code] and [http://guide.macports.org read the guide].
    58  * Read the [http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html Tcl Tutorial]
    59  * Subscribe to the mailing lists [http://lists.macosforge.org/mailman/listinfo/macports-dev macports-dev] and [http://lists.macosforge.org/mailman/listinfo/macports-users macports-users] if you do not already read them. Don't be too shy to post.
    60  * '''Get in contact! ''' Most important is to discuss your contribution ideas with potential mentors by e-mail, on the MacPorts development list or the IRC channel before applying.
     53* Get familiar with the MacPorts project resources. Especially [GetMacPortsSource check out the code] and [http://guide.macports.org read the guide].
     54* Read the [http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html Tcl Tutorial]
     55* Subscribe to the mailing lists [http://lists.macosforge.org/mailman/listinfo/macports-dev macports-dev] and [http://lists.macosforge.org/mailman/listinfo/macports-users macports-users] if you do not already read them. Don't be too shy to post.
     56* '''Get in contact!''' Most important is to discuss your contribution ideas with potential mentors by e-mail, on the MacPorts development list or the IRC channel before applying.
    6157
    6258== Mentors ==
     
    6561
    6662||= Name =||= Email =||= Area =||
    67 ||Jeremy Lavergne || snc || Administrator ||
    68 ||Clemens Lang || cal || Backup Admin ||
    69 ||Rainer Müller || raimue || Mentoring for base, port groups, ports, ... ||
    70 ||Lawrence Velázquez || larryv || Backup to the backup admin; mentoring for port[group]s, documentation, website ||
     63||= Jeremy Lavergne =|| snc || Administrator ||
     64||= Clemens Lang =|| cal || Backup Admin ||
     65||= Rainer Müller =|| raimue || Mentoring for base, port groups, ports, ... ||
     66||= Lawrence Velázquez =|| larryv || Backup to the backup admin; mentoring for port[group]s, documentation, website ||
    7167
    7268== Tasks ==
     
    8076==== Binaries ==== #binaries
    8177
    82 MacPorts provides binaries but needs several enhancements. This task would include updating the chroot mechanism (ceased being functional with Snow Leopard) and adding support for variants.
    83 
    84 See also [wiki:MPAB MacPorts AutoBuild].
    85 
    86 Classification: relatively challenging to challenging task[[BR]]
    87 Programming language: Tcl[[BR]]
    88 Potential mentors: TBD
     78MacPorts provides binaries but needs several enhancements. This task would include updating the chroot mechanism (ceased being functional with Snow Leopard) and adding support for variants. (See also [[MPAB|MacPorts AutoBuild]].)
     79
     80* Difficulty: Relatively challenging to challenging
     81* Languages: Tcl
     82* Potential mentors: TBD
    8983
    9084==== Check for software update / ports needing upgrade ==== #livecheck
     
    9286The livecheck mechanism could be extended to automatically send reports when ports are outdated, similar to how the lint mechanism sends reports on portfile commits.
    9387
    94 Classification: easy[[BR]]
    95 Programming languages: Tcl[[BR]]
    96 Potential mentor: TBD
     88* Difficulty: Easy
     89* Languages: Tcl
     90* Potential mentors: TBD
    9791
    9892==== Dependencies ==== #dependencies
    9993
    100 This task consists of implementing a new dependencies engine for MacPorts. The current dependency engine properly deals with installing packages, but it does not deal satisfactorily with [ticket:126 dependencies on variants] (and versions), uninstalling and upgrading. This very challenging task requires a complete formalization of the use cases (installation, upgrade, uninstallation) and of the user needs before any implementation, as well as a deep understanding of the dependency relations (required for fetching, building, configuring; static and dynamic linking; dependence at runtime).
    101 
    102 Classification: very challenging task[[BR]]
    103 Programming languages: Tcl and C[[BR]]
    104 Potential mentors: TBD
     94This task consists of implementing a new dependencies engine for MacPorts. The current dependency engine properly deals with installing packages, but it does not deal satisfactorily with [[ticket:126|dependencies on variants]] (and versions), uninstalling and upgrading. This very challenging task requires a complete formalization of the use cases (installation, upgrade, uninstallation) and of the user needs before any implementation, as well as a deep understanding of the dependency relations (required for fetching, building, configuring; static and dynamic linking; dependence at runtime).
     95
     96* Difficulty: Very challenging
     97* Languages: Tcl, C
     98* Potential mentors: TBD
    10599
    106100==== MacPorts Port for self-management ==== #self-management
    107101
    108 The MacPorts port should be the source for updating a user's MacPorts
    109 installation.
    110 
    111 Currently the MacPorts port is used to build the .dmg installer for MacPorts that is used for the initial installation of MacPorts, and port uses the "selfupdate" mechanism for maintaining the MacPorts installation. The selfupdate mechanism is (at least not documented as such) not accessible through the MacPorts API and does not use the MacPorts mechanisms for maintaining ports
    112 
    113 Classification: challenging task[[BR]]
    114 Programming languages: Tcl and C[[BR]]
    115 Potential mentor: TBD
     102The MacPorts port should be the source for updating a user’s MacPorts installation.
     103
     104Currently the MacPorts port is used to build the .dmg installer for MacPorts that is used for the initial installation of MacPorts, and port uses the “selfupdate” mechanism for maintaining the MacPorts installation. The selfupdate mechanism is (at least not documented as such) not accessible through the MacPorts API and does not use the MacPorts mechanisms for maintaining ports
     105
     106* Difficulty: Challenging
     107* Languages: Tcl, C
     108* Potential mentors: TBD
    116109
    117110==== Perl modules integration from CPAN ==== #cpan2port
    118111
    119 There has been [browser:contrib/cpan2port an attempt] to write a script for automatic generation of Portfiles from CPAN. This would simplify the maintenance of Perl modules in MacPorts. Revive this project and finish the script or rewrite it.
     112There has been [[browser:contrib/cpan2port|an attempt]] to write a script for automatic generation of Portfiles from CPAN. This would simplify the maintenance of Perl modules in MacPorts. Revive this project and finish the script or rewrite it.
    120113
    121114Resources:
    122  * http://www.gentoo.org/proj/en/perl/g-cpan.xml
    123  * http://search.cpan.org/~bingos/CPANPLUS-0.9001/bin/cpan2dist
    124  * http://packages.debian.org/stable/dh-make-perl
    125 
    126 Classification: easy to medium task[[BR]]
    127 Programming languages: Perl and probably Tcl[[BR]]
    128 Potential mentor: TBD
     115* http://www.gentoo.org/proj/en/perl/g-cpan.xml
     116* http://search.cpan.org/~bingos/CPANPLUS-0.9001/bin/cpan2dist
     117* http://packages.debian.org/stable/dh-make-perl
     118
     119* Difficulty: Easy to medium
     120* Languages: Perl, probably Tcl
     121* Potential mentors: TBD
    129122
    130123==== Read Packages from Python's PIP (pip2port) ==== #pip2port
    131124
    132 MacPorts should be able to more readily install python packages from pip. We don't want to integrate the build/installation process of PIP, simply parse information or eggs it provides for various packages. This information will then be used to generate a Portfile, akin to [browser:contrib/cpan2port/cpan2port cpan2port].
    133 
    134 There may be instances where MacPorts package names don't match up with pip's. In this case, pip should be the authority and all improperly named MacPorts packages should be replaced by a renamed copy. Verbose automation of this step, akin to the portcheckup script, is ideal.
    135 
    136 The [browser:contrib/portfile-gen/portfile-gen portfile generator] may or be helpful.
    137 
    138 Classification: medium task[[BR]]
    139 Programming languages: Tcl, Python, C[[BR]]
    140 Potential mentor: snc
     125MacPorts should be able to more readily install python packages from pip. We don't want to integrate the build/installation process of PIP, simply parse information or eggs it provides for various packages. This information will then be used to generate a Portfile, akin to [[browser:contrib/cpan2port/cpan2port|cpan2port]].
     126
     127There may be instances where MacPorts package names don't match up with pips. In this case, pip should be the authority and all improperly named MacPorts packages should be replaced by a renamed copy. Verbose automation of this step, akin to the portcheckup script, is ideal.
     128
     129The [[browser:contrib/portfile-gen/portfile-gen|portfile generator]] might be helpful.
     130
     131* Difficulty: Medium
     132* Languages: Tcl, Python, C
     133* Potential mentors: snc
    141134
    142135==== Read packages from other various package managers ==== #foo2port
     
    144137As above with the pip2port proposal, except with other package managers, such as [http://opam.ocamlpro.com/ opam] for ocaml packages, [http://www.haskell.org/cabal/ cabal] for haskell, [http://luarocks.org/ luarocks] for lua, [https://npmjs.org/ npm] for node.js, and so on.
    145138
    146 Classification: medium task[[BR]]
    147 Programming languages: Tcl, C, ocaml, haskell, lua, javascript, any other languages that come with their own package manager[[BR]]
    148 Potential mentor: TBD
     139* Classification: Medium
     140* Languages: Tcl, C, OCaml, Haskell, Lua, Node.js, etc.
     141* Potential mentors: TBD
    149142
    150143==== Automatic testing ==== #testing
    151144
    152 MacPorts project currently includes a [source:trunk/base/tests test framework] to test features of the infrastructure. However, the tests do not cover all the code and they are not executed on an automatic basis. This task consists of extending the test framework and could be broadened to develop a code coverage technology for MacPorts to make the infrastructure more robust to future changes.
    153 
    154 Classification: relatively easy to very challenging[[BR]]
    155 Programming languages: Tcl, C[[BR]]
    156 Potential mentor: raimue
     145MacPorts currently includes a [[source:trunk/base/tests|test framework]] to test features of the infrastructure. However, the tests do not cover all the code and they are not executed on an automatic basis. This task consists of extending the test framework and could be broadened to develop a code coverage technology for MacPorts to make the infrastructure more robust to future changes.
     146
     147* Difficulty: Relatively easy to very challenging
     148* Languages: Tcl, C
     149* Potential mentor: raimue
    157150
    158151==== Configuration and environment selftest ====
    159152
    160 Add a command to check current setup for common pitfalls (e.g. stuff
    161 in /usr/local), inspired by 'brew doctor' from Homebrew.
    162 
    163 Classification: easy[[BR]]
    164 Programming languages: Tcl, shell[[BR]]
    165 Potential mentor: TBD
     153Add a command to check current setup for common pitfalls (e.g. stuff in `/usr/local`), inspired by Homebrew’s `brew doctor` functionality.
     154
     155* Difficulty: Easy
     156* Languages: Tcl, shell
     157* Potential mentors: TBD
    166158
    167159
     
    171163
    172164Features that could be useful include (but are not limited to):
    173  * Not using daemondo if the daemon works fine under launchd without it
    174  * Ability to install multiple plists
    175  * Support for LaunchAgents as well as LaunchDaemons
    176  * Installing plists in ~/Library for non-root installs if the user wants
    177  * only modify specific XML tags to avoid clobbering additions by user
    178 
    179 Classification: easy[[BR]]
    180 Programming languages: Tcl, C[[BR]]
    181 Potential mentor: TBD
     165* Not using daemondo if the daemon works fine under launchd without it
     166* Ability to install multiple plists
     167* Support for LaunchAgents as well as LaunchDaemons
     168* Installing plists in ~/Library for non-root installs if the user wants
     169* only modify specific XML tags to avoid clobbering additions by user
     170
     171* Difficulty: Easy
     172* Languages: Tcl, C
     173* Potential mentors: TBD
    182174
    183175==== Dependency calculation using SAT solving ==== #depcalc
     
    186178There is also a [browser:trunk/dports/devel/libCUDF/Portfile libCUDF] port that might be helpful to look at.
    187179
    188 Classification: challenging task[[BR]]
    189 Programming languages: Tcl, C[[BR]]
    190 Potential mentor: cal
     180* Difficulty: Challenging
     181* Languages: Tcl, C
     182* Potential mentors: cal
    191183
    192184==== Reclaim disk space ==== #reclaim
    193185
    194 Improve 'port clean' to be able to delete distfiles for a specified
    195 version, and all distfiles not needed by currently installed versions of
    196 ports.
    197 
    198 In general, add an action for reclaiming disk space, which would delete old
    199 distfiles and archives and uninstall inactive ports (and anything else
    200 that would help)
    201 
    202 Classification: easy[[BR]]
    203 Programming languages: Tcl, C[[BR]]
    204 Potential mentor: TBD
     186Improve `port clean` to be able to delete distfiles for a specified version, and all distfiles not needed by currently installed versions of ports. In general, add an action for reclaiming disk space, which would delete old distfiles and archives and uninstall inactive ports (and anything else that would help)
     187
     188* Difficulty: Easy
     189* Languages: Tcl, C
     190* Potential mentors: TBD
    205191
    206192==== Parallel execution ==== #parallel
    207193
    208 When an action will run targets on multiple ports, run them in
    209 parallel when possible and sensible (requires tracking dependencies
    210 between both targets and ports and figuring out the maximum reasonable
    211 parallelism, e.g. several ports can fetch at once on a fast connection
    212 but you only want one 'make -j8' at a time)
    213 
    214 Classification: very challenging[[BR]]
    215 Programming languages: Tcl, C[[BR]]
    216 Potential mentor: TBD
     194When an action will run targets on multiple ports, run them in parallel when possible and sensible (requires tracking dependencies between both targets and ports and figuring out the maximum reasonable parallelism, e.g. several ports can fetch at once on a fast connection but you only want one 'make -j8' at a time)
     195
     196* Difficulty: Very challenging
     197* Languages: Tcl, C
     198* Potential mentors: TBD
    217199
    218200==== Trace mode ==== #tracemode
    219201
    220 Improve trace mode to the point where developers (and the build
    221 server) could run with it always turned on.
    222 
    223 Classification: medium[[BR]]
    224 Programming languages: Tcl, C[[BR]]
    225 Potential mentor: TBD
     202Improve trace mode to the point where developers (and the build server) could run with it always turned on.
     203
     204* Difficulty: Medium
     205* Programming languages: Tcl, C
     206* Potential mentors: TBD
    226207
    227208==== Migrate muniversal into base (lipo merging) ==== #muniversal
    228209
    229 Integrate muniversal into base. Not just a direct copy-and-paste, but
    230 in a way that makes sense and preserves the way portfiles are expected
    231 to behave (which the current portgroup doesn't).
    232 
    233 Classification: medium[[BR]]
    234 Programming languages: Tcl, C[[BR]]
    235 Potential mentor: TBD
     210Integrate the [[source:trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl|muniversal portgroup]] into base. Not just a direct copy-and-paste, but in a way that makes sense and preserves the way portfiles are expected to behave (which the current portgroup doesn't).
     211
     212* Difficulty: Medium
     213* Languages: Tcl, C
     214* Potential mentors: TBD
    236215
    237216==== Fetching from version control ==== #fetchtypes
    238217
    239 Make cvs/svn/git/hg/bzr fetch types checkout into the distfiles dir
    240 and then export into the work dir, to avoid having to re-fetch after
    241 cleaning the work dir. See #16373 for more information.
    242 
    243 Classification: easy[[BR]]
    244 Programming languages: Tcl, C[[BR]]
    245 Potential mentor: TBD
     218Make cvs/svn/git/hg/bzr fetch types checkout into the distfiles dir and then export into the work dir, to [[ticket:16373|avoid having to re-fetch]] after cleaning the work dir.
     219
     220* Difficulty: Easy
     221* Languages: Tcl, C
     222* Potential mentors: TBD
    246223
    247224==== Interactive port command ==== #interactive
    248225
    249 Write an interactive command-line tool that can be used instead of the
    250 non-interactive port(1).
     226Write an interactive command-line tool that can be used instead of the non-interactive port(1).
    251227
    252228The current port(1) should be viewed as batch mode reading from stdin.
    253229
    254 An interactive tool would ask for user input to resolve many situations
    255 that cause port(1) to simply error out. For example, if you try to
    256 install a port and one of its dependencies conflicts with something
    257 already installed, it could ask if you want to deactivate the installed
    258 one and its dependents.
    259 
    260 Classification: medium[[BR]]
    261 Programming languages: Tcl, C[[BR]]
    262 Potential mentor: TBD
     230An interactive tool would ask for user input to resolve many situations that cause port(1) to simply error out. For example, if you try to install a port and one of its dependencies conflicts with something already installed, it could ask if you want to deactivate the installed one and its dependents.
     231
     232* Difficulty: Medium
     233* Languages: Tcl, C
     234* Potential mentors: TBD
    263235
    264236==== Portfiles ==== #Portfiles
     
    266238Sweep through all Portfiles and look for useful opportunities to add more built-in Tcl functions that make Portfiles more (usefully) terse, powerful, flexible or easier to write.  I'm sure there is an entirely family of helper functions yet to be written here.
    267239
    268 Classification: medium task[[BR]]
    269 Programming language: Tcl[[BR]]
    270 Potential mentor: TBD
    271 
    272 === Additional tasks ===
     240* Classification: Medium
     241* Language: Tcl
     242* Potential mentors: TBD
     243
     244=== Secondary tasks ===
    273245
    274246==== Task A1: Ports ====
    275  * Porting of additional packages to MacPorts
    276  * Cleanup and/or remove obsolete ports
    277 
    278 Classification: medium task[[BR]]
    279 Potential mentors: TBD
     247
     248Port additional packages to MacPorts and cleanup or remove obsolete ports.
     249
     250* Difficulty: Medium
     251* Potential mentors: TBD
    280252
    281253==== Task A2: Documentation and Website ====
    282  * Improve MacPorts documentation (see #12048 for more info, and #36957 for a more specific example of a feature that needs documenting)
    283  * Improve MacPorts website
    284  * Custom Trac plugins (see [comment:ticket:38095:2 #38095:2] for a roundup of Trac-related issues)
    285 
    286 '''Note''': Pure documentation proposals are not allowed by Google.
    287 
    288 Classification: minor task[[BR]]
    289 Programming languages: php, python[[BR]]
    290 Potential mentors: TBD
     254
     255Improve MacPorts [query:status!=closed&component=guide|server/hosting|website|wiki documentation, website and Trac system]. Note that pure documentation proposals are not allowed by Google.
     256
     257* Difficulty: Easy to difficult
     258* Languages: PHP, Python
     259* Potential mentors: TBD
    291260
    292261==== Task A3: Shell Environment ==== #shell-environment
     
    296265This task alone is most probably not enough for the whole Summer Of Code.
    297266
    298 Classification: easy task [[BR]]
    299 Potential mentors: raimue
     267* Difficulty: Easy
     268* Potential mentors: raimue
    300269
    301270