Please note:The SCons wiki is in read-only mode due to ongoing spam/DoS issues. Also, new account creation is currently disabled. We are looking into alternative wiki hosts.
Differences between revisions 35 and 36
Revision 35 as of 2006-05-22 03:51:33
Size: 16487
Editor: KarlPietrzak
Comment:
Revision 36 as of 2008-03-12 02:47:00
Size: 16689
Editor: localhost
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

kap4020@rit.edu

thealchemist@optonline.net

PGP Key ID

B936DC86

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:

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:

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: SCons-loggers_and_handlers.png

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.

SummerOfCodeIdeas/KarlPietrzakSoC2006Proposal (last edited 2008-03-12 02:47:00 by localhost)