[Scummvm-devel] Qualifying tasks for ScummVM GSoC 2k9?

Matt Hargett matt at use.net
Thu Mar 19 23:07:26 CET 2009





On Mar 18, 2009, at 10:38 PM, timofonic timofonic  
<timofonic at gmail.com> wrote:
>
> This could be an interesting idea, not sure if soon enough and if the
> ScummVM Team would agree on using it. What about doing small tasks
> (http://wiki.multimedia.cx/index.php?title=Small_FFmpeg_Tasks) as a
> main requirement for qualifying as GSoC student for the ScummVM
> project? It's an idea from the FFmpeg project that seems interesting
> to me to avoid "lazy" students and make them understand the codebase
> sooner, it could help improving small parts of ScummVM at the same
> time.

I think this is a great idea: small, focused tasks that give students  
a quick overview of the code. I think tasks like:
1. adding class const modifiers to methods
2. making parameters const
3. converting pointer fields and parameters to references
4. replacing #includes with forward declarations
5. wrap direct field access in getters
6. fixing law of Demeter violations by replacing parameters that are  
only used for one or two fields with the fields actually used
7. fixing law of Demeter violations in call chains: a.b().c() to  
a.c(), where a,b, and c are all different types
8. add unit tests to classes that are already known to be unit-testable
9. breaking up the most complex functions (as reported by pmccabe)
10. refactoring away from code duplication (as reported by Simian)
11. moving non-trivial implementation details out of header files
12. extracting simple structs, typedefs,  and macro definitions into  
separate headers to avoid unnecessary link-time dependencies
....

Most of these transformations are quick and safe. That is, the changes  
are largely idiomatic and if the code compiles and links, it likely  
works. It also provides fast feedback about the student: keeping to a  
schedule, keeping changes small, following guidelines, etc.

If this is agreeable, I can make a RefactoringTODO wiki page that  
cites specific examples (as well as what to avoid). I can also  
volunteer to coordinate with students and do the initial review of  
their patches.


>




More information about the Scummvm-devel mailing list