|
Size: 16487
Comment:
|
← Revision 36 as of 2008-03-12 02:47:00 ⇥
Size: 16689
Comment: converted to 1.6 markup
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 2: | Line 2: |
| [[TableOfContents]] | <<TableOfContents>> |
| Line 5: | Line 5: |
| My name is Karl Pietrzak, and I am currently a senior at the [http://www.rit.edu Rochester Institute of Technology] in Rochester, NY, where I will graduate with a BS in [http://www.cs.rit.edu Computer Science] in November 2006. I was born in [http://en.wikipedia.org/wiki/Krakow Kraków, Poland] and I came to the United States at the tender age of five. As such, I can speak, read, and write [http://en.wikibooks.org/wiki/Basic_Polish_language_course Polish], as well an a tinge of Spanish. | My name is Karl Pietrzak, and I am currently a senior at the [[http://www.rit.edu|Rochester Institute of Technology]] in Rochester, NY, where I will graduate with a BS in [[http://www.cs.rit.edu|Computer Science]] in November 2006. I was born in [[http://en.wikipedia.org/wiki/Krakow|Kraków, Poland]] and I came to the United States at the tender age of five. As such, I can speak, read, and write [[http://en.wikibooks.org/wiki/Basic_Polish_language_course|Polish]], as well an a tinge of Spanish. |
| Line 7: | Line 7: |
| I am writing this document in order to receive at a [http://www.scons.org SCons] [http://code.google.com/summerofcode.html Google Summer of Code 2006] project. My interest in [http://www.scons.org SCons] started with my massive frustrations with the autotools (i.e., autoconf, automake, etc.); I feel the world could use something better, and [http://www.scons.org SCons]--with the power of Python behind--is that alternative. | I am writing this document in order to receive at a [[http://www.scons.org|SCons]] [[http://code.google.com/summerofcode.html|Google Summer of Code 2006]] project. My interest in [[http://www.scons.org|SCons]] started with my massive frustrations with the autotools (i.e., autoconf, automake, etc.); I feel the world could use something better, and [[http://www.scons.org|SCons]]--with the power of Python behind--is that alternative. |
| Line 9: | Line 9: |
| Throughout the past few years of my[http://www.scons.org SCons] usage for both commercial and personal use, I have contributed a few small patches where I saw a bug or a need for a minor improvement. Now, however, I would love the opportunity to become a [http://www.scons.org SCons] developer so that my involvement becomes more substantial and permanent. I am very excited to get the opportunity to work on this proposal for this summer! | Throughout the past few years of my[[http://www.scons.org|SCons]] usage for both commercial and personal use, I have contributed a few small patches where I saw a bug or a need for a minor improvement. Now, however, I would love the opportunity to become a [[http://www.scons.org|SCons]] developer so that my involvement becomes more substantial and permanent. I am very excited to get the opportunity to work on this proposal for this summer! |
| Line 16: | Line 16: |
| ||PGP Key ID ||||<style="text-align: center;">[http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xB936DC86 B936DC86] || | ||PGP Key ID ||||<style="text-align: center;">[[http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xB936DC86|B936DC86]] || |
| Line 21: | Line 21: |
| Despite all the power and functionality, it is difficult to when, how, and why the [http://www.scons.org SCons] engine is doing something. A logging framework would mitigate this problem by allowing [http://www.scons.org SCons] users to monitor what the engine is doing, and by allowing [http://www.scons.org SCons] developers to trace functions with minimal overhead. | Despite all the power and functionality, it is difficult to when, how, and why the [[http://www.scons.org|SCons]] engine is doing something. A logging framework would mitigate this problem by allowing [[http://www.scons.org|SCons]] users to monitor what the engine is doing, and by allowing [[http://www.scons.org|SCons]] developers to trace functions with minimal overhead. |
| Line 23: | Line 23: |
| The end goal is to have an XML build log, along with a plethora of minor features such as colorized output. These features will be able to be "chained", so a developer will be able to output colorized gcc output and an XML build log at the same time. This will also enable powerful integration with build management tools such as[http://buildbot.sourceforge.net/ BuildBot]. | The end goal is to have an XML build log, along with a plethora of minor features such as colorized output. These features will be able to be "chained", so a developer will be able to output colorized gcc output and an XML build log at the same time. This will also enable powerful integration with build management tools such as[[http://buildbot.sourceforge.net/|BuildBot]]. |
| Line 25: | Line 25: |
| Because of my class schedule, I would only work during the first half of the summer (until July 10th). I fully understand I will not receive the full $4500 from [http://www.google.com Google]. | Because of my class schedule, I would only work during the first half of the summer (until July 10th). I fully understand I will not receive the full $4500 from [[http://www.google.com|Google]]. |
| Line 32: | Line 32: |
| I possess the following skills which I feel make me a qualified candidate for this [http://www.scons.org SCons] project: | I possess the following skills which I feel make me a qualified candidate for this [[http://www.scons.org|SCons]] project: |
| Line 34: | Line 34: |
| * implemented a [http://www.scons.org SCons] build system for the Software Research and Development Group at [http://www.thomson.com Thomson Legal and Regulatory] * contributed a few patches to the [http://www.scons.org SCons] project * large interest in [http://www.python.org Python] and build systems * large experience in using [http://ant.apache.org Ant] |
* implemented a [[http://www.scons.org|SCons]] build system for the Software Research and Development Group at [[http://www.thomson.com|Thomson Legal and Regulatory]] * contributed a few patches to the [[http://www.scons.org|SCons]] project * large interest in [[http://www.python.org|Python]] and build systems * large experience in using [[http://ant.apache.org|Ant]] |
| Line 39: | Line 39: |
| * experience in a variety of bug trackers, including [http://www.bugzilla.org BugZilla] and [http://www.serena.com/products/teamtrack/ TeamShare] * years spent developing [http://java.sun.com/ Java] software using [http://www.eclipse.org/ Eclipse] on both Linux and Microsoft Windows * [http://www.uml.org/ UML] modeling using [http://uml.sourceforge.net/ Umbrello UML modeler], [http://www.borland.com/together/ Borland Together], and [http://www-306.ibm.com/software/rational/sw-bycategory/ Rational Rose]. * used a variety of SCMs, including [http://subversion.tigris.org/ Subversion] and [http://www.nongnu.org/cvs/ CVS] * used a variety of unit testing frameworks, especially [http://junit.sourceforge.net/ JUNIT] , [http://cppunit.sourceforge.net CppUnit] , and the [http://ftp.python.org/doc/lib/module-logging.html logging module in Python] |
* experience in a variety of bug trackers, including [[http://www.bugzilla.org|BugZilla]] and [[http://www.serena.com/products/teamtrack/|TeamShare]] * years spent developing [[http://java.sun.com/|Java]] software using [[http://www.eclipse.org/|Eclipse]] on both Linux and Microsoft Windows * [[http://www.uml.org/|UML]] modeling using [[http://uml.sourceforge.net/|Umbrello UML modeler]], [[http://www.borland.com/together/|Borland Together]], and [[http://www-306.ibm.com/software/rational/sw-bycategory/|Rational Rose]]. * used a variety of SCMs, including [[http://subversion.tigris.org/|Subversion]] and [[http://www.nongnu.org/cvs/|CVS]] * used a variety of unit testing frameworks, especially [[http://junit.sourceforge.net/|JUNIT]] , [[http://cppunit.sourceforge.net|CppUnit]] , and the [[http://ftp.python.org/doc/lib/module-logging.html|logging module in Python]] |
| Line 48: | Line 48: |
| * contributed a few small patches to the [http://pydev.sf.net PyDev] project for better auto-completion of Python code * submitted a few bug reports to the [http://pydev.sf.net PyDev] project * [http://pydev.sf.net PyDev] refactoring crash, [http://sourceforge.net/tracker/index.php?func=detail&aid=1426745&group_id=85796&atid=577329 Bug 1426745] * submitted a few small patches also to the [http://www.scons.org SCons] project, a Python-based build management tool used by [http://www.blender3d.org/ Blender 3D] and many other projects * tested a few releases and submitted bug reports for the [http://www.autopackage.org Autopackage project] * reported bugs to a plethora of open-source projects, including [http://www.kde.org KDE], [http://uml.sourceforge.net/ Umbrello UML modeler], [http://en.opensuse.org openSUSE] * [http://uml.sf.net Umbrello UML Modeler] * changing case in file names, [http://bugs.kde.org/show_bug.cgi?id=124273 Bug 124273] * diagrams print HUGE, [http://bugs.kde.org/show_bug.cgi?id=124333 Bug 124333] * File menu should have print, [http://bugs.kde.org/show_bug.cgi?id=124330 Bug 124330] * deleting association name in state diagram may cause crash, [http://bugs.kde.org/show_bug.cgi?id=124587 Bug 124587] * cannot put subsystems within subsystems in Component diagram, [http://bugs.kde.org/show_bug.cgi?id=124278 Bug 124278] * [http://en.opensuse.org openSUSE] * Python path does not contain /usr/local, [https://bugzilla.novell.com/show_bug.cgi?id=149809 Bug 149809] * Python's site-packages should contain a directory in /usr/local, [https://bugzilla.novell.com/show_bug.cgi?id=149843 Bug 149843] * helix backend for Amarok uses lots of memory, [https://bugzilla.novell.com/show_bug.cgi?id=163481 Bug 163481] * latest Scribus fails because of 32bit / 64bit Python issues, [https://bugzilla.novell.com/show_bug.cgi?id=163849 Bug 163849] * [http://www.scons.org SCons] |
* contributed a few small patches to the [[http://pydev.sf.net|PyDev]] project for better auto-completion of Python code * submitted a few bug reports to the [[http://pydev.sf.net|PyDev]] project * [[http://pydev.sf.net|PyDev]] refactoring crash, [[http://sourceforge.net/tracker/index.php?func=detail&aid=1426745&group_id=85796&atid=577329|Bug 1426745]] * submitted a few small patches also to the [[http://www.scons.org|SCons]] project, a Python-based build management tool used by [[http://www.blender3d.org/|Blender 3D]] and many other projects * tested a few releases and submitted bug reports for the [[http://www.autopackage.org|Autopackage project]] * reported bugs to a plethora of open-source projects, including [[http://www.kde.org|KDE]], [[http://uml.sourceforge.net/|Umbrello UML modeler]], [[http://en.opensuse.org|openSUSE]] * [[http://uml.sf.net|Umbrello UML Modeler]] * changing case in file names, [[http://bugs.kde.org/show_bug.cgi?id=124273|Bug 124273]] * diagrams print HUGE, [[http://bugs.kde.org/show_bug.cgi?id=124333|Bug 124333]] * File menu should have print, [[http://bugs.kde.org/show_bug.cgi?id=124330|Bug 124330]] * deleting association name in state diagram may cause crash, [[http://bugs.kde.org/show_bug.cgi?id=124587|Bug 124587]] * cannot put subsystems within subsystems in Component diagram, [[http://bugs.kde.org/show_bug.cgi?id=124278|Bug 124278]] * [[http://en.opensuse.org|openSUSE]] * Python path does not contain /usr/local, [[https://bugzilla.novell.com/show_bug.cgi?id=149809|Bug 149809]] * Python's site-packages should contain a directory in /usr/local, [[https://bugzilla.novell.com/show_bug.cgi?id=149843|Bug 149843]] * helix backend for Amarok uses lots of memory, [[https://bugzilla.novell.com/show_bug.cgi?id=163481|Bug 163481]] * latest Scribus fails because of 32bit / 64bit Python issues, [[https://bugzilla.novell.com/show_bug.cgi?id=163849|Bug 163849]] * [[http://www.scons.org|SCons]] |
| Line 67: | Line 67: |
| * started my own Wiki page dealing with using having an [http://www.scons.org/cgi-sys/cgiwrap/scons/moin.cgi/UsingOrigin RPATH of $ORIGIN using SCons] | * started my own Wiki page dealing with using having an [[http://www.scons.org/cgi-sys/cgiwrap/scons/moin.cgi/UsingOrigin|RPATH of $ORIGIN using SCons]] |
| Line 69: | Line 69: |
| * created Wiki page that deals with [http://www.scons.org/cgi-sys/cgiwrap/scons/moin.cgi/SconsDevelopers delegating SCons responsibilities to help with development] * better Sun CC compiler support, [http://sourceforge.net/tracker/index.php?func=detail&aid=1192558&group_id=30337&atid=398973 Patch 1192558] * missing function now documented in man page [http://sourceforge.net/tracker/index.php?func=detail&aid=1208536&group_id=30337&atid=398973 Patch 1208536] * recursive code fix, [http://sourceforge.net/tracker/index.php?func=detail&aid=1195203&group_id=30337&atid=398971 Patch 1195203] * improper shared object suffix when using Sun CC compiler, [http://sourceforge.net/tracker/index.php?func=detail&aid=1191940&group_id=30337&atid=398971 Patch 1191940] * contributed to many [http://www.wikipedia.org Wikipedia] articles |
* created Wiki page that deals with [[http://www.scons.org/cgi-sys/cgiwrap/scons/moin.cgi/SconsDevelopers|delegating SCons responsibilities to help with development]] * better Sun CC compiler support, [[http://sourceforge.net/tracker/index.php?func=detail&aid=1192558&group_id=30337&atid=398973|Patch 1192558]] * missing function now documented in man page [[http://sourceforge.net/tracker/index.php?func=detail&aid=1208536&group_id=30337&atid=398973|Patch 1208536]] * recursive code fix, [[http://sourceforge.net/tracker/index.php?func=detail&aid=1195203&group_id=30337&atid=398971|Patch 1195203]] * improper shared object suffix when using Sun CC compiler, [[http://sourceforge.net/tracker/index.php?func=detail&aid=1191940&group_id=30337&atid=398971|Patch 1191940]] * contributed to many [[http://www.wikipedia.org|Wikipedia]] articles |
| Line 78: | Line 78: |
| * [http://subversion.tigris.org/ Subversion] * [http://www.nongnu.org/cvs/ CVS] * [http://www.eclipse.org/ Eclipse] |
* [[http://subversion.tigris.org/|Subversion]] * [[http://www.nongnu.org/cvs/|CVS]] * [[http://www.eclipse.org/|Eclipse]] |
| Line 83: | Line 83: |
| I have worked on a variety of projects for [http://www.ibm.com IBM], [http://www.amd.com Advanced Micro Devices], and [http://www.thomson.com Thomson Legal and Regulatory] throughout my (so far) short career. | I have worked on a variety of projects for [[http://www.ibm.com|IBM]], [[http://www.amd.com|Advanced Micro Devices]], and [[http://www.thomson.com|Thomson Legal and Regulatory]] throughout my (so far) short career. |
| Line 87: | Line 87: |
| * Oracle database manipulation using [http://java.sun.com/products/jdbc/ JDBC] | * Oracle database manipulation using [[http://java.sun.com/products/jdbc/|JDBC]] |
| Line 90: | Line 90: |
| * advanced GUI programming in Java's [http://java.sun.com/docs/books/tutorial/uiswing/ Swing] | * advanced GUI programming in Java's [[http://java.sun.com/docs/books/tutorial/uiswing/|Swing]] |
| Line 92: | Line 92: |
| * middle-ware programming using [http://www.xmpp.org/ XMPP] | * middle-ware programming using [[http://www.xmpp.org/|XMPP]] |
| Line 97: | Line 97: |
| I have used [http://www.scons.org SCons] in a commercial setting to create a hierarchical build for an internal library that would run using the Microsoft Visual Studio compiler, gcc, and the Sun CC compiler. | I have used [[http://www.scons.org|SCons]] in a commercial setting to create a hierarchical build for an internal library that would run using the Microsoft Visual Studio compiler, gcc, and the Sun CC compiler. |
| Line 104: | Line 104: |
| * Unit testing is a big part of my methodology, no matter what language it is. I have used [http://junit.sourceforge.net/ JUNIT] for unit testing in Java, [http://cppunit.sourceforge.net CppUnit] in C++, and the [http://ftp.python.org/doc/lib/module-logging.html logging module in Python]. I tend to sleep better at night knowing my code is unit tested. :) * I feel documentation is extremely important, and not just code documentation. I believe that a picture is worth a thousand words, and as a result, I tend to use [http://www.uml.org UML] modeling tools. Specifically, I plan on using the [http://uml.sourceforge.net Umbrello UML Modeler], which has (limited) [http://www.python.org Python] support. |
* Unit testing is a big part of my methodology, no matter what language it is. I have used [[http://junit.sourceforge.net/|JUNIT]] for unit testing in Java, [[http://cppunit.sourceforge.net|CppUnit]] in C++, and the [[http://ftp.python.org/doc/lib/module-logging.html|logging module in Python]]. I tend to sleep better at night knowing my code is unit tested. :) * I feel documentation is extremely important, and not just code documentation. I believe that a picture is worth a thousand words, and as a result, I tend to use [[http://www.uml.org|UML]] modeling tools. Specifically, I plan on using the [[http://uml.sourceforge.net|Umbrello UML Modeler]], which has (limited) [[http://www.python.org|Python]] support. |
| Line 108: | Line 108: |
| Although I have contributed to a variety of open-source projects, I have not become a major developer for any of them due to time constraints and other circumstances. The [http://code.google.com/summerofcode.html Google Summer of Code] allows me to become the full-time open-source project developer I've always wanted to! | Although I have contributed to a variety of open-source projects, I have not become a major developer for any of them due to time constraints and other circumstances. The [[http://code.google.com/summerofcode.html|Google Summer of Code]] allows me to become the full-time open-source project developer I've always wanted to! |
| Line 110: | Line 110: |
| I have been followed the [http://www.scons.org SCons] mailing lists (both [http://scons.tigris.org/servlets/SummarizeList?listName=users scons-user] and [http://scons.tigris.org/servlets/SummarizeList?listName=dev scons-devel]) for a few years now. I would really enjoy being a full-time [http://www.scons.org SCons] developer, and I feel I can make great impact on not only [http://www.scons.org SCons] development but also its user base. | I have been followed the [[http://www.scons.org|SCons]] mailing lists (both [[http://scons.tigris.org/servlets/SummarizeList?listName=users|scons-user]] and [[http://scons.tigris.org/servlets/SummarizeList?listName=dev|scons-devel]]) for a few years now. I would really enjoy being a full-time [[http://www.scons.org|SCons]] developer, and I feel I can make great impact on not only [[http://www.scons.org|SCons]] development but also its user base. |
| Line 129: | Line 129: |
| * [http://cruisecontrol.sourceforge.net/ CruiseControl] * [http://buildbot.sourceforge.net/ BuildBot] * [http://maven.apache.org/ Maven] |
* [[http://cruisecontrol.sourceforge.net/|CruiseControl]] * [[http://buildbot.sourceforge.net/|BuildBot]] * [[http://maven.apache.org/|Maven]] |
| Line 133: | Line 133: |
| Without a full-fledged logging framework, it is close to impossible to gather the aforementioned data because parsing standard out is not scalable, and it's just bad practice. After the completion of this project, a tool like [http://buildbot.sourceforge.net/ BuildBot] will be able to parse the log XML file, and, for example: | Without a full-fledged logging framework, it is close to impossible to gather the aforementioned data because parsing standard out is not scalable, and it's just bad practice. After the completion of this project, a tool like [[http://buildbot.sourceforge.net/|BuildBot]] will be able to parse the log XML file, and, for example: |
| Line 144: | Line 144: |
| Independent software vendors (i.e., ISVs) will be able to create their own handlers, listeners, and filters to create their own complete build solution. [http://www.python.org Python]'s large software collection will allow some vendors, to, for example, send each build.log to a database, or just send a message to an [http://www.irc.org/ IRC] channel. Combined with a tool like [http://buildbot.sf.net BuildBot], the possibilities are limitless. | Independent software vendors (i.e., ISVs) will be able to create their own handlers, listeners, and filters to create their own complete build solution. [[http://www.python.org|Python]]'s large software collection will allow some vendors, to, for example, send each build.log to a database, or just send a message to an [[http://www.irc.org/|IRC]] channel. Combined with a tool like [[http://buildbot.sf.net|BuildBot]], the possibilities are limitless. |
| Line 147: | Line 147: |
| Developers need a logging framework for SCons, similar to [http://ant.apache.org/manual/listeners.html loggers and listeners in Ant]. This is one area that SCons has been lacking in compared to the competition. Currently the only way to get results from SCons is to capture standard out and parse it. This is not very useful, however, as there is no: | Developers need a logging framework for SCons, similar to [[http://ant.apache.org/manual/listeners.html|loggers and listeners in Ant]]. This is one area that SCons has been lacking in compared to the competition. Currently the only way to get results from SCons is to capture standard out and parse it. This is not very useful, however, as there is no: |
| Line 153: | Line 153: |
| Ideally, there would be multiple ways to output and format results. This lends itself to a concept similar to the [http://docs.python.org/lib/module-logging.html Python logging module]. Specifically, there will be a notion of formatters and handlers, interchangeable and joinable like LEGO parts: | Ideally, there would be multiple ways to output and format results. This lends itself to a concept similar to the [[http://docs.python.org/lib/module-logging.html|Python logging module]]. Specifically, there will be a notion of formatters and handlers, interchangeable and joinable like LEGO parts: |
| Line 164: | Line 164: |
| Using this vocabulary, the current SCons default would be a !ConsoleHandler with a !SimpleFormatter. The following UML diagram illustrates this relationship: attachment:SCons-loggers_and_handlers.png | Using this vocabulary, the current SCons default would be a !ConsoleHandler with a !SimpleFormatter. The following UML diagram illustrates this relationship: {{attachment:SCons-loggers_and_handlers.png}} |
| Line 168: | Line 168: |
| * !ColorFormatter to colorize the output of [http://gcc.gnu.org/ gcc] and other compiles | * !ColorFormatter to colorize the output of [[http://gcc.gnu.org/|gcc]] and other compiles |
| Line 179: | Line 179: |
| If there is enough time, I will also work on some architecture rework, as described on the [:SummerOfCodeIdeas:main SCons Wiki for Summer of Code] page. This will entail using the Configure context stuff to find tools, instead of the hard-coded generate() methods in each Tool module. This will relieve SCons of the burden of having to the availability of each Tool on the given machine. | If there is enough time, I will also work on some architecture rework, as described on the [[SummerOfCodeIdeas|main SCons Wiki for Summer of Code]] page. This will entail using the Configure context stuff to find tools, instead of the hard-coded generate() methods in each Tool module. This will relieve SCons of the burden of having to the availability of each Tool on the given machine. |
| Line 182: | Line 182: |
| I would like to point out that all of my ideas for this proposal are [:SummerOfCodeIdeas:official SCons proposals]. I have decided to perform a few large-size tasks: | I would like to point out that all of my ideas for this proposal are [[SummerOfCodeIdeas|official SCons proposals]]. I have decided to perform a few large-size tasks: |
| Line 192: | Line 192: |
| I am very qualified for this [http://www.scons.org SCons] [http://code.google.com/summerofcode.html Google Summer of Code] proposal. I have worked with the SCons team for a number of years, and I know SCons well. | I am very qualified for this [[http://www.scons.org|SCons]] [[http://code.google.com/summerofcode.html|Google Summer of Code]] proposal. I have worked with the SCons team for a number of years, and I know SCons well. |
Karl Pietrzak's Google Summer of Code 2006 Proposal
Introduction
About the Author
My name is Karl Pietrzak, and I am currently a senior at the Rochester Institute of Technology in Rochester, NY, where I will graduate with a BS in Computer Science in November 2006. I was born in Kraków, Poland and I came to the United States at the tender age of five. As such, I can speak, read, and write Polish, as well an a tinge of Spanish.
I am writing this document in order to receive at a SCons Google Summer of Code 2006 project. My interest in SCons started with my massive frustrations with the autotools (i.e., autoconf, automake, etc.); I feel the world could use something better, and SCons--with the power of Python behind--is that alternative.
Throughout the past few years of mySCons usage for both commercial and personal use, I have contributed a few small patches where I saw a bug or a need for a minor improvement. Now, however, I would love the opportunity to become a SCons developer so that my involvement becomes more substantial and permanent. I am very excited to get the opportunity to work on this proposal for this summer!
Contact Information
I can be contacted by any the following methods:
Email addresses |
||
PGP Key ID |
||
Telephone |
585-424-8250 |
|
Summary of Proposal
Despite all the power and functionality, it is difficult to when, how, and why the SCons engine is doing something. A logging framework would mitigate this problem by allowing SCons users to monitor what the engine is doing, and by allowing SCons developers to trace functions with minimal overhead.
The end goal is to have an XML build log, along with a plethora of minor features such as colorized output. These features will be able to be "chained", so a developer will be able to output colorized gcc output and an XML build log at the same time. This will also enable powerful integration with build management tools such asBuildBot.
Because of my class schedule, I would only work during the first half of the summer (until July 10th). I fully understand I will not receive the full $4500 from Google.
Qualifications
The qualifications for this project can be divided into the following sections.
Skill Set
I possess the following skills which I feel make me a qualified candidate for this SCons project:
implemented a SCons build system for the Software Research and Development Group at Thomson Legal and Regulatory
contributed a few patches to the SCons project
large interest in Python and build systems
large experience in using Ant
- giving a variety of presentations on both technical and non-technical audiences
experience in a variety of bug trackers, including BugZilla and TeamShare
years spent developing Java software using Eclipse on both Linux and Microsoft Windows
UML modeling using Umbrello UML modeler, Borland Together, and Rational Rose.
used a variety of SCMs, including Subversion and CVS
used a variety of unit testing frameworks, especially JUNIT , CppUnit , and the logging module in Python
Open-source Project Experience
I have contributed to a variety of open-source projects in a variety of capacities, ranging from tester to developer. I have:
contributed a few small patches to the PyDev project for better auto-completion of Python code
submitted a few bug reports to the PyDev project
PyDev refactoring crash, Bug 1426745
submitted a few small patches also to the SCons project, a Python-based build management tool used by Blender 3D and many other projects
tested a few releases and submitted bug reports for the Autopackage project
reported bugs to a plethora of open-source projects, including KDE, Umbrello UML modeler, openSUSE
changing case in file names, Bug 124273
diagrams print HUGE, Bug 124333
File menu should have print, Bug 124330
deleting association name in state diagram may cause crash, Bug 124587
cannot put subsystems within subsystems in Component diagram, Bug 124278
Python path does not contain /usr/local, Bug 149809
Python's site-packages should contain a directory in /usr/local, Bug 149843
helix backend for Amarok uses lots of memory, Bug 163481
latest Scribus fails because of 32bit / 64bit Python issues, Bug 163849
- contributed to many Wiki articles
started my own Wiki page dealing with using having an RPATH of $ORIGIN using SCons
created Wiki page that deals with delegating SCons responsibilities to help with development
better Sun CC compiler support, Patch 1192558
missing function now documented in man page Patch 1208536
recursive code fix, Patch 1195203
improper shared object suffix when using Sun CC compiler, Patch 1191940
contributed to many Wikipedia articles
In addition to those, I have experience using the following open-source tools:
Commercial Experience
I have worked on a variety of projects for IBM, Advanced Micro Devices, and Thomson Legal and Regulatory throughout my (so far) short career.
These have included, but are not limited to:
Oracle database manipulation using JDBC
- XML parsing
- XML creation
advanced GUI programming in Java's Swing
- RPM creation
middle-ware programming using XMPP
- BIOS testing
- giving presentations on a variety of topics
- demo-ing software for non-technical users
I have used SCons in a commercial setting to create a hierarchical build for an internal library that would run using the Microsoft Visual Studio compiler, gcc, and the Sun CC compiler.
Development Methodology
My development methodology can be described succinctly as careful, tested, and documented. I'm a big fan of software assistance in any kind of endeavour, specially software engineering. I tend to use project management, bug trackers, IDEs, and unit testing frameworks.
Specifically, the following will explain my development methodology in more detail:
Unit testing is a big part of my methodology, no matter what language it is. I have used JUNIT for unit testing in Java, CppUnit in C++, and the logging module in Python. I tend to sleep better at night knowing my code is unit tested.
I feel documentation is extremely important, and not just code documentation. I believe that a picture is worth a thousand words, and as a result, I tend to use UML modeling tools. Specifically, I plan on using the Umbrello UML Modeler, which has (limited) Python support.
Purpose
Although I have contributed to a variety of open-source projects, I have not become a major developer for any of them due to time constraints and other circumstances. The Google Summer of Code allows me to become the full-time open-source project developer I've always wanted to!
I have been followed the SCons mailing lists (both scons-user and scons-devel) for a few years now. I would really enjoy being a full-time SCons developer, and I feel I can make great impact on not only SCons development but also its user base.
The following sections list the tasks I would like to perform for the summer.
Logging Framework
Use Cases
A full-fledged logging framework would allow easy transfer of information from SCons to other build management tools by having easily-parsible log files which will contain all build information. There are current hacks to enable some of this (e.g., BuildLog), but they are not nearly complete or usable by external tools.
The log file must contain at least the following details:
- a list of all targets
- whether target passed or failed
- the types of each target
- the dependencies
- any input and output of the target
- timestamps
The final goal would be to allow SCons to integrate easily with build tools such as:
Without a full-fledged logging framework, it is close to impossible to gather the aforementioned data because parsing standard out is not scalable, and it's just bad practice. After the completion of this project, a tool like BuildBot will be able to parse the log XML file, and, for example:
- spit out to an IRC channel that libSDL.so failed
email the developer in charge of Windows support that EnvironmentVariablesParsingTest failed
provide a list of tests that did not run because the class XmppNetworking did not compile
With the notation of build listeners and event handlers will come the ability to filter:
- unneeded build information in a "build-simple.log" file, for example
- add as much information as possible in a "build-complete.log" file, for example
Independent software vendors (i.e., ISVs) will be able to create their own handlers, listeners, and filters to create their own complete build solution. Python's large software collection will allow some vendors, to, for example, send each build.log to a database, or just send a message to an IRC channel. Combined with a tool like BuildBot, the possibilities are limitless.
Description
Developers need a logging framework for SCons, similar to loggers and listeners in Ant. This is one area that SCons has been lacking in compared to the competition. Currently the only way to get results from SCons is to capture standard out and parse it. This is not very useful, however, as there is no:
- distinction which target is being built
- whether what's being built is a executable, shared library, etc.
- overall result document that provides a summary
Ideally, there would be multiple ways to output and format results. This lends itself to a concept similar to the Python logging module. Specifically, there will be a notion of formatters and handlers, interchangeable and joinable like LEGO parts:
- handlers
ConsoleHandler: prints to stdout/stderror
FileHandler: prints to a File
- DBHandler: sends results to a DB
- formatters
SimpleFormatter: just prints out everything
- XMLFormatter: print out an XML to some predefined schema
FancyFormatter: simply prints to stdout/stderr, but gives more information such as time, etc.
Using this vocabulary, the current SCons default would be a ConsoleHandler with a SimpleFormatter. The following UML diagram illustrates this relationship:
I would develop the following components using this framework:
ColorFormatter to colorize the output of gcc and other compiles
- XMLFormatter using an XML schema
PipeHandler which writes output to a named pipe
- GUI which would parse the log files and let you select--dynamically--how much output you want to see
Performance Measuring
Care will have to be taken to ensure that the logging framework does not use too many resources. Of course, the more complicated the handlers and formatters, the longer it will take to execute (e.g., XMLFormatter with a RotatingFileHandler will take much longer than SimpleFormatter with a ConsoleHandler).
Benchmarks will be taken and compared to the current SCons implemention to ensure that the new logging framework does not place have significant impacts on performance.
Architecture Re-work
If there is enough time, I will also work on some architecture rework, as described on the main SCons Wiki for Summer of Code page. This will entail using the Configure context stuff to find tools, instead of the hard-coded generate() methods in each Tool module. This will relieve SCons of the burden of having to the availability of each Tool on the given machine.
Timeline
I would like to point out that all of my ideas for this proposal are official SCons proposals. I have decided to perform a few large-size tasks:
Time Period |
Goal and/or Deliverable |
May 23 - May 31 |
solid understanding what it would take implement the logging framework |
June 1 - June 14 |
basic logging framework is in place |
June 14 - June 30 |
adding formatters and handlers such as XMLFormatter, FileHandler, GccColorizer, etc. |
July 1 - July 5 |
I feel it's best to reserve one week for any unforeseen issues, such as source control, integration, etc. |
Conclusion
I am very qualified for this SCons Google Summer of Code proposal. I have worked with the SCons team for a number of years, and I know SCons well.
