A month of Plumage work

It has been another month since the last time I posted a Plumage work log, back on the old u.p.o blog. Mostly this was because I was getting actual work done on Plumage, so I hope you'll forgive me.

Just like last time so much time had passed, I'm just going to post the (mildly edited) #parrotsketch reports here; the format is a bit terse, but it should give you an idea of the pace of development:

DONE:
* Support fperrad++'s setup.pir system in Plumage
* Fix several portability issues, leading to ...
* ... Plumage's first successful clean test run and project install on Win32!
* Much more use of new NQP-rx features
* Switch over to parrot-nqp, no longer following NQP-rx git master directly
* More Glue.pir -> Util.nqp conversions
* Refactor action functions to reduce pointless duplication
* Add simple version of 'status' command
* Commit metadata additions/edits from fperrad++
* Reorganize more of the tests to make it easier to identify testing gaps
MAD PROPZ:
* fperrad++   # setup.pir, Win32 testing, new & improved metadata ...
* pmichaud++  # NQP-rx features, w00t!
EOR

DONE:
* Keep up with pmichaud's NQP-rx improvements (and push for more :-)
* Keep up (mostly) with fperrad's bug reports and metadata updates
* Various Glue.pir improvements
* A few more tests
WIP:
* Big refactoring of main "brains" to OO classes
* Document refactored code
* About 50% done with planned refactors before next feature push
MAD PROPZ:
* fperrad++   # Copious metadata updates, suggestions, and bug reports
* pmichaud++  # NQP-rx feature-o-rama
* dukeleto++  # Initial pass at qx() tests
EOR

DONE:
* Lots more metadata updates, fperrad++, dukeleto++, vadrer++
* Now at least 23 projects have Plumage metadata
* Convert Glue.pir code to native NQP-rx features as they become available
* Util.nqp reduce() implementation that doesn't entirely suck to use
* Improve output of projects command
WIP:
* Continued major refactoring.  About 80% done now.
* Details of remaining refactoring unclear, need more code to clarify path forward.
MAD PROPZ:
* fperrad++  # Metadata updates, Win32 testing, assisting conversions to setup / plumage
* dukeleto++ # Metadata updates
* tene++     # try/CATCH
* cotto++    # Parrot build GUID/UUID suggestion
EOR

DONE:
* Hacking docs!  Reviews requested: http://gitorious.org/parrot-plumage/parrot-plumage/trees/master/docs/hacking , start with the contributing.pod doc.
* More metadata updates from fperrad++
* Add accessor methods to Plumage::Project
* Add project-dir command to plumage
* Move responsibility for determining build sequence to Plumage::Project
* Move responsibility for mkpath($build_root) to Plumage::Project's fetch action
* Excise %STAGES and supporting code from plumage.nqp
* Improve API of perform_actions{,_on_projects}
* Add stub of update stage to Plumage::Project, reusing (and falling back to) fetch
* Make harness exit(1) after failing test runs
* Fix broken test
* Tell plumage command_ subs what command invoked them
* Collapse all plumage project action commands into one sub
EOR

DONE:
* Documentation
  * Add/improve comments
  * Update/improve usage info
  * Update existing hacking docs
  * Add more hacking docs
* Internals
  * Save away a copy of the project metadata at install, remove at uninstall
  * Improve metadata validation, resilience, and error reporting
  * Several other improvements to error reporting
  * Add hash() coercion to Util.nqp
* New features
  * Add update type 'parrot_setup'
  * Make update fall back to fetch if source dir is missing
  * Make update the default way to start a build cycle
  * Add support for Git submodules
  * Add support for Mercurial repos
  * Add support for Rake build tool
  * Add new project actions: smoke, clean, realclean, uninstall
    * uninstall only works with setup.pir-based projects for now
* Misc
  * Lots of metadata updates, fperrad++
  * Fix several bugs reported by fperrad++
  * Fix several bugs discovered by me(--,++)
WIP:
* Convert remaining Glue.pir items to NQP and move to Util.nqp
MAD PROPZ:
* fperrad++   # Testing, suggestions, and metadata updates
* #ps++, pmichaud++, moritz++, Tene++, (anyone I forgot)++   # Great discussions, and suggestions for improving Plumage messaging outside the Parrot core team
BLOCKERS:
* Fat arrow (=>) syntax in nqp-rx
EOR

Interested in our future progress? You can follow Plumage here or on twitter or identi.ca; or for the real time experience, come by #parrot and chat us up:

Leave a comment

About Geoffrey Broadwell

user-pic My JAPH side: Perl 5, Perl 6, Parrot, Plumage, oPenGL (cough). See also http://twitter.com/japhb and http://identi.ca/japhb.