Feeds
:
Biella Coleman: The Statute of Anne (was actually kinda revolutionary)
Last night, in two different instances I read the claim that the England’s first copyright act, the statute of Anne passed in 1710 was never intended to protect authors but to protect the reproducers like printing houses and presses investing in authors implying that printing houses loved the act.
After pouring through hundreds of pages of Adrian John’s history of piracy, that statement is pretty off and in fact I don’t think the Statute was really about printers/booksellers or authors but the public.
While licensing had all together lapsed for a period before this statute was passed, and the printing houses and book sellers were indeed clamoring loudly for an official recognition of property in literary works, they wanted a perpetuall right in literary property rooted in common and natural law. Like I am talking here about forever, not like a measly, paltry 14 years.
They were not exactly thrilled at this statute (in fact, they were downright pissssssssed off) for it severely limited how long they held a property right over books. In fact, so pissed were they, they challenged the statute, went to court in 1769 (Millar v Taylor) and got what they wanted: a perpetual right to literary work.
It took s a fiery Scot and bookseller by the name of Alexander Donaldson (I kind of think of him as the RMS of booksellers; he was quite a rabble rouser) to challenge Millar and he finally got his day in the highest court of the land in 1774 in Donaldson v Beckett and the outcome was that a perpetual right in books was tossed out the window. The court ruled that copyright was a limited statute. One of the lords in the case even stated “”Knowledge has no value or use for the solitary owner: to be enjoyed it must be communicated.” Adrian John’s explains the significance of this case in the following way:
““Copyright, they decided, was not a right of man at all. Indeed, it was almost the very opposite: an artifact, and one that replaced a prior right established by an author’s work of creation. . . In terms of revolution principles, liberty won out over property”
Again the printers booksellers (minus the “pirate” ones) were not happy a bunch. Unfortunately the subsequent history is one we all know well, one in which booksellers and others with vested interests in copyrights pushed to extend property rights in all sorts of ways to get to where we are today (obviously with a lot of different historical developments), a land, time, period where perpetuity may not be forever but it is long enough to nullify the very public domain envisioned by the first copyright act.
However, I think it is nonetheless important to recognize how radical in many respects the first copyright act was: given what the book printers and sellers wanted (and they were a powerful bunch).
For those interested in learning more about Alexander Donaldson, I would check out his Some Thoughts on the State of Literary Property, where he rails against the London booksellers for being monopolistic and calling for a limited property right in books.
Biella Coleman: A Cultural Alibi of Sorts
There is an interesting conversation over at about the “nature” of peer production, and “crowd” based production over at PBS. Thankfully folks right off the bat noted that the types of activities they are addressing—that range from 4chan to open source—are so freaken distinct that perhaps it is not all that useful to use one moniker for them.
The comments I am most fascinated by are danah’s who notes:
“”We” assume that the collective voice will be populist and, more importantly, that it will reflect the diversity of the populous. Yet, as we’ve seen time and time again, certain values and attitudes and voices are over-represented in crowd-sourced activities. Who is looking out for those who aren’t represented? In what ways are we reinforcing structural inequalities? What are the implications of this?”
And then Clay’s response:
So, to re-ask your question in a non-rhetorical way, under what
circumstances would we want to make the population of Deviant Art,
say, less white, or Linux less male, and if we wanted to do so, what
would need to happen?
What I find interesting about this discussion (and will be talking about this topic here, next week) is there not enough recognition of two related things: 1) the efforts are there (more on this soon) 2) that perhaps hacking and F/OSS in particular are not fully accessible to all and everyone because they are full-fledged, full-bodied, cultural worlds —and all cultural worlds—are to some degree not fully accessible and transparent for there are built on particularities, often invisible and unarticulated, forms of value. That is, just as some norms and values of Indo-Guyanese to take one random example, are not of my world, so too is hacking partially inaccessible for the fact that it is culturally configured.
But I am starting to suspect that the “culture-ness” of these domains are often overlooked because they are overwhelmingly white, male, and chock full of computers (and so economically lucrative). All three, I suspect are (incorrectly) seen as lacking culture, as domains of rationality.
Other historical factors have also produced certain distortions that don’t allow us to see (easily at least) these worlds as culture-full. First is the fact that so many folks—outside of this world—lobbed onto F/OSS for being radical (and this is partially right in so far as its challenge to intellectual property can be seen as radical). But the portrayal or mere suggestion of these worlds as uber-democratic and populist, made people expect these groups to behave as radical egalitarian collectives. For the most part, they don’t and yet never portrayed their own politics and forms of organization as such (openness comes in the form of code and technical merit).
But this vision stuck and when some folks realized that larger projects, for example are very organized (which many people addressed only very late), have hierarchies (which are flexible and also allow them to function, which is I think is a good thing), and are not all that diverse, there was deep disappointment that they did not conform to the sense that there was something extremely radical going on as opposed to a cultural group really into producing free software.
But if I am offering a cultural alibi of sorts—in which barriers to participation are to some degree a function of culture, one of the great things about the norms, values, ideas that compose culture is that there are dynamic and changing. They are alive and historical. They are pushed and pulled upon by insiders and outsiders based on wider social values.
And there is an answer to these questions about diversity for there has been a dramatic, noticeable, and noteworthy push within this world, one that really started to coalesce I would say in the last year or so, to address these issues and it ranges from Python’s mammoth efforts at addressing diversity (and I have been told that there was a great speech on the topic at Pycon recently), the geek feminism wiki, and smaller but increasingly common efforts such as Libre Planet’s women’s caucus and their funding of women to participate.
So while I do think that culture goes at least part of the way to explain why these worlds are not fully open—for culture limits—this very domain has grown dissatisfied with its representational make-up and are leading some efforts for cultural change.
Need Medicine? Diet Coke? A new Mouse? How about going to Walgreen’s!
Earlier this afternoon I was at Walgreen’s, which for those who aren’t aware’t, is a drug and convenience store. I was waiting on a prescription to get filled. With some time to kill, I looked around the store for some entertainment. I started to marvel at the sheer amount of tech that can be had at what’s a “drug-store.”
In the above pic, you have some mice , a Ethernet Cable and a headset. These are just some of the things I have seen at Walgreens. These items I have kind of grown to expect seeing but I was even more surprised at how much more technology products Walgreens had.
Related posts:
- “Have a Coke and a…..” telephone call?
- Aeroport 4-port USB hub connects peripherals – blows papers off your desk
- 4 port USB Watch HUB is right twice a day
Related posts
Rich Bowen: Mowgli's Song
I've finally finished recording part three of The Jungle Book, in which Mowgli hunts Shere Khan. Perhaps I'll get it edited some other morning this week.
Here's a preview - Mowgli's Song, That He Sang At The Council Rock When He Danced On Shere Khan's Hide
Listen HERE or subscribe to my podcast.
Now I'll have to find something else to record to keep the boy happy.
Nicu Buculei: Inkscape Rocket Tutorial
I have learned quite a few tricks from Nicu in the past. He has a new tutorial if anyone is interested. Check it out. I did.
John Goerzen: Numerous Updates
It’s been awhile since I’ve posted some family/home updates, so here they are, sorta random-like…
Jacob is 3.5 now, and Oliver is about 8 months old at this point.
Jacob
Jacob has a few trends going on lately: pretending to be a cat, and inventing new games to play. He has one game he likes to play with me called “tunnels and slippers.” He will have me sit on the couch, put my feet up on the footstool, and crawl on top of my legs. He’ll want me to bounce him, then he can crawl underneath the “tunnel.”
The slippers part came because he started to steal my slippers one time during winter. He’d struggle furiously to get it off, then shriek with delight as he ran away, listing to my indignation at having a cold foot now. Then I was supposed to run after him, pick him up in the air, and get the slipper back.
Here he is, trying to steal a slipper while I happened to be holding a camera:
He’s said quite a few memorable quotes this winter:
Dec. 8: Jacob looked outside this morning and yelled, “WOW! Look at that!”, ran across the room and yelled, “MOM! WOW! There is snow outside this window too! WOW! Snow is ALL OVER THE PLACE!”
January: When told his grandparents were going back to Indiana: “The kitty doesn’t like that.” (the pretending to be a cat thing) The next morning when he remembered they were gone: “Oh. My kitty is so very sad now.”
February: My name is kitty. Jacob Cat!”
March: “I didn’t realize the basketball could go so far!”
He’s been starting to make his first attempts at sounding out words. He’s been interested in 2- and 3-digit numbers, trying to figure out how to tell time, and asking me the German words for all sorts of things. (And showing some disappointment with my German vocabulary.)
Jacob talks about Oliver as a “sweet baby,” and is often very caring about him. Jacob wants to make sure Oliver has *plenty* of toys. Though there have been some times when Jacob has pushed Oliver over.
Here’s the Christmas photo of the two of them:
And another:
Jacob has also started to pick up an interest in singing: his favorite song is one that he made up, and it goes “Engine, engine, passenger car…”
I still sing a song to Jacob at bedtime each night, but Home On the Range doesn’t cut it anymore. No, now I have a make up a song on the spot on a topic of Jacob’s choosing each night. Last night he chose “a song about the ceiling light and the smoke detector.” Other nights, it’s been about his toy butterfly, his night light, various smoke detectors (that’s a popular one), or something from his day.
Oliver
Oliver recently has started being able to sit up by himself. He can also scoot all over the room. I think he’s saying “dad”, but Terah disagrees and thinks he’s just babbling. Her case wasn’t helped the day I asked him, “Are you saying Dad?” He got a big smile after the question and laughed at me.
He loves playing peek-a-boo, playing with us — or playing by himself.
Oliver has been eating the mashed-up baby food for awhile. Terah recently gave him a rice puff, and he put it in his mouth but wasn’t sure what to do with it. He has been taking quite an interest in watching the rest of us eat, though, and sits at the table with us in his high chair.
Speeding Up Code
The latest heavy project at $work makes me miss C a bit. There's a lot of Moose objects, KiokuDB, MooseX::Getopt (which is evidently much lighter than I thought) and more. To display all the entries I have in a KiokuDB SQLite database, it takes roughly a second and a half!
Profiling with NYTProf 3.0 (FTW!) shows that Moose takes the most. I don't want to use Mouse for various reasons which I won't go into. Moose::Compile, MooseX::Antlers, nothing near production yet (but I'm keepings my fingers crossed). I tried to rewrite the MooseX::Getopt part and use Getopt::Long manually, but it only speed it up by 30ms. Oh, and yes, everything is immutable. Requiring KiokuDB::Navigator only in the part that loads the navigator gained me 300ms.
I can start rewriting everything with clean Perl objects. It could take a while, but I could get it done. However, that would be losing all the fun and power I get from Moose. Instead I thought of a different idea.
Since I want to integrate this with another database backend (which might be on a remote server) anyway, the speed will slow down a lot because even a small request for display the local database entries would make a trip to the remote database, so even without Moose, the penalty would be great.
I thought of putting everything in a daemon, which would compile and load all the code. The client would be simple code which just asks the daemon to run things. The runtime penalty can't be too big, so I think it would work out. The daemon could fetch the remote data once in a while or per command. That's about it.
I might try to rewrite it without Moose and see the differences. That would be interesting to note in the lectures I'll be giving on Moose next week.
Thoughts on the Alpha
Technical thoughts:
I installed goddard on my eeepc 900 and have some issues. Right after the first boot gnote crashed and activated the Automatic Bug Reporting Tool (ABRT). So I lol’d and started getting my WPA key put in so that I could report it. Only one problem. The ABRT window is bigger than my screen size, it cuts off just above where you can attach files. So I have no way of easily reporting the gnote bug.
If that wasn’t enough I can’t update it because of a discrepancy in Open Office core versions, and for some reason yum upgrade –skip-broken isnt working, nor is trying to let the GUI update tool handle it.
Non-Technical Thoughts:
I was almost pissed yesterday when I saw the “official” shortened urls for linking to the Alpha yesterday. The “official” shortened urls were setup so that we (the project) could have some data on how popular this release was. My issue was the services that were used are non-free; is.gd, bit.ly, and tinyurl. I was prepared to loose my mind and then I decided that before loosing my cool I should mention this in the mailing list. So I went through my trash folder (I’m so glad I don’t ever clear that out, it is now a personal procedure to keep all “trashed” email [and I don't worry because my hard drive is encrypted]) and replied that I was bad form for us to use non-free url shortners and let everyone know about ur1.ca and 2tu.us. No one knew these existed and it even prompted Paul Frields to edit his blog post to add them to the list.
Sometimes a little checking before you fly off the handle and run your mouth on the interwebs is good. Damn this whole turning 25 and deciding I should act like an adult thing
So please tryout Goddard; see how it works for you, and please post your thoughts about it in the comments or drop a link to your thoughts if you post them else where.
Dries Buytaert: City of Athens using Drupal
The City of Athens has launched a new Drupal site to serve as its official website, along with a Drupal-based site at http://www.breathtakingathens.com/ that provides visitor and tourism information.
Athens is a large city (3.5 million residents and 6 million tourists each year), with a large tourism base due in part to its role in the 2004 Olympic Games. To support the city's needs, the site includes a large calendar of city events, a comprehensive map-based index of city services and interactive tools that allow citizens to access city resources. The site builds on Drupal's multilingual capabilities to provide information in both Greek and English.
Life is wonderful
Whilst this blog allows OSS Watch members and guest posters to express personal opinion we don’t usually use this blog for personal items. However, I’m making an exception today to remind myself, and hopefully some others, that whilst life can sometimes be horrible it is more often than not wonderful
On Sunday at 17:17 (GMT) March 7th my wife gave birth to a beautiful and healthy baby girl, Saskia Frances Gardler at 7lb 10.5 oz. Mum and baby are doing very well and are now home with a proud Dad.
I’d like to publicly acknowledge the superb care that my wife and I received during this pregnancy. We only truly appreciate the National Health Service when we really need it, and Heidi and I have needed it on far too many occasions over the last few years. The care we have received has been exceptional when compared to what I have seen in other countries.
I should also mention Oxford University Computing Services. I could not have hoped for a more understanding employer, it was clear from the first day that as long as I worked hard when I was able OUCS would respond by giving me as much space and time as I needed to support my family during this difficult period. I’m truly grateful to my boss Lou Burnard and to my exceptional team here at OSS Watch.
As for my extended family - I hope they already understand how appreciative I am of their combined efforts in recent years.
Like I said in the intro, sometimes life is horrible, but more often than not life and the people around us are wonderful. We should never forget that in the difficult times.
Ross Gardler: Life is wonderful
Whilst this blog allows OSS Watch members and guest posters to express personal opinion we don’t usually use this blog for personal items. However, I’m making an exception today to remind myself, and hopefully some others, that whilst life can sometimes be horrible it is more often than not wonderful
On Sunday at 17:17 (GMT) March 7th my wife gave birth to a beautiful and healthy baby girl, Saskia Frances Gardler at 7lb 10.5 oz. Mum and baby are doing very well and are now home with a proud Dad.
I’d like to publicly acknowledge the superb care that my wife and I received during this pregnancy. We only truly appreciate the National Health Service when we really need it, and Heidi and I have needed it on far too many occasions over the last few years. The care we have received has been exceptional when compared to what I have seen in other countries.
I should also mention Oxford University Computing Services. I could not have hoped for a more understanding employer, it was clear from the first day that as long as I worked hard when I was able OUCS would respond by giving me as much space and time as I needed to support my family during this difficult period. I’m truly grateful to my boss Lou Burnard and to my exceptional team here at OSS Watch.
As for my extended family - I hope they already understand how appreciative I am of their combined efforts in recent years.
Like I said in the intro, sometimes life is horrible, but more often than not life and the people around us are wonderful. We should never forget that in the difficult times.
IronPython-URLs: IronPython in Action: Manning Deal of the Day
You can get the discount by buying IronPython in Action from the Manning website and using the discount code dotd0310.
It isn't only IronPython in Action that is on offer, you can also get Quick Python by Vern Ceder.
Lubos Lunak (llunak): On benchmarks
Do you know this one?
Phoronix tested md5sums of ISO images of distributions. The winner was openSUSE, scoring e29311f6f1bf1af907f9ef9f44b8328b, which gave it a noticeable lead before second Slackware (b026324c6904b2a9cb4b88d6d61c81d1), which is quite closely followed by Fedora (9ffbf43126e33be52cd2bf7e01d627f9) and Debian (9ae0ea9e3c9c6e1b9b6252c8395efdc1). The difference between these two distributions, as you can see, is only very small. Ubuntu completely flopped in this test, achieving only 1dcca23355272056f04fe8bf20edfce0, which is surprising, especially considering that its previous release scored a very nice c30f7472766d25af1dc80b3ffc9a58c7. (source).
Ok, that's just a joke, but the sad part is, as somebody pointed out, that it wouldn't be really that surprising if Phoronix actually did something like that. And, probably even more sad, there would be people who'd really take it as if it meant something and started adding comments about how last openSUSE is pretty good, last Ubuntu is so disappointing, and Fedora and Debian are not really that different.
So take this from somebody who has already done a lot of performance work: Benchmarks, on their own, mean almost nothing if you don't understand them. Especially if they are seriously flawed (I mean, testing filesystem performance by doing CPU-intensive tasks? Hallo? Probably even FAT16 could provide the same results in those tests on an SSD.), but even if the results are useful numbers, it is still necessary to understand what the numbers actually say. I think I wouldn't even have a big problem forging a "benchmark" where KDE would get better (and correct) numbers than LXDE by finding a scenario that'd be twisted enough.
And even then, it is still necessary to keep in mind what is compared. Comparing the default setup of Fedora and openSUSE means also comparing GNOME and KDE, which you may or may not want, but if you compare the distributions this way, it is affected by differences between the desktops, and if you compare the desktops, it is affected by the differences between the distributions. And in either case, it may or may not apply to another distribution or another desktop.
Yet one more thing to understand is what is measured and how it affects performance as a whole. Ages ago there was a Dot article that also mentioned performance improvements to be brought by Qt4 in some specific areas, yet even now there are numbers of people seriously disappointed by KDE4's performance only because they thought that since Qt4 improves in some areas, KDE4 will get exactly the same improvement, regardless of how much these improvements matter for the whole of KDE4 or how much of KDE4 was rewritten when porting from KDE3. When I fixed Exmap to work again and did a little benchmark as a part of it, there wasn't really much more to it than to show that Exmap works again and that it is very easy to lose a lot of advantage by a simple mistake, yet people had no problems drawing all kinds of strange conclusions from that. Since making right conclusions is unexpectedly difficult for most people when it gets to benchmarks, I really need to remember not to just post numbers again without also saying what it means.
And, finally, there is still the question of other costs and whether it is worth it. Various KDE components often have resource demands, but then they are also often worth it. I mean, we all could still use TWM, or, heck, Windows 95, but seriously, how many of us really would? This, ultimately, is always about what works the best for you.
Dependencies and patches - easy fix!
Problem:
I've been upgrading some systems at work recently. Using local::lib so I can test it first without worrying about rolling back being a pain (which it could be with our current build system).
We've had most of our CPAN modules installed for several years and haven't had the need/time to upgrade them. But with the advent of Catalyst 5.8 using Moose and other great projects we'd like to get involved in, such as Gitalist I bit the bullet and started installing into my local::lib so I could then run our tests against it, but then I hit a few problems....
Now remember when I said we had old module? - I'm talking some that haven't been upgraded in 4+ years (they only get upgraded when a newer version is set at a prerequisite).
What I found was although most modules passed their tests, there were a few that wouldn't, and this was because the package either didn't specify the dependency, didn't specify the dependency version, or required a module that now had a broken version on CPAN (and actually didn't need the module anymore because they'd coded around it!).
Solution:
I was glad to find all of the packages which had these issues were on github. So I:
- click fork
- clone to my local machine
- Edited Makefile.PL, Changes and set a new $VERSION
- push, back to git up
- click 'send pull request' (to inform the author)
Out of 4 distributions patched, I've already had two confirmed as merged in, one release to CPAN and this is all within 24 hours!
I've even submitted a minor one line doc patch to another module this way and it was on CPAN that afternoon.
Git (and github) really does make supplying (and accepting) patches very easy, so the next time you find an issue, see if the distribution has a repository and create a patch, it really doesn't take much time at all.
I've almost finished migrating all my own CPAN modules to Github, so if you'd like to patch those please fork from http://github.com/ranguard/.
Thanks:
Of course all of this wouldn't be possible without the great work people do in maintaining their modules (accepting and uploading patches for example!) in the first place - so once again thanks to the Perl community as a whole, you make my work FUN!
Aurelien Gateau: msrp, a useful addition to your toolbox
Have you ever faced the need to rename a file and do a search and replace to adjust all places where it is referenced? For example if you are a C++ developer you may want to rename foo.h and foo.cpp to bar.h and bar.cpp, but you must also replace all lines which says #include "foo.h" with #include "bar.h" in other source files… and don’t forget updating the build system files as well!
This is not really difficult, but it’s tedious and error-prone.
Enter msrp, Meta Search and Replace Program, a handy command-line utility designed to do search and replaces in both file contents and file names. In my example, renaming foo.h and foo.cpp to bar.h and bar.cpp can be done with this single command:
msrp foo\. bar. src/dir/Note that I escaped the ‘.’ in “foo.”, because msrp supports Perl 5 regular expressions.
What makes msrp even more useful is that it is VCS aware: If I replace the previous command with:
msrp --svn foo\. bar. src/dir/Then msrp will rename my files using “svn move” instead of doing a plain rename!
Unfortunately, it is unmaintained right now: his developer does not have time anymore to work on it. You can however install it via apt-get on Debian and Ubuntu, or download the source tarball on the page of the Debian package (the developer was also a Debian packager (Hint: if you are a Debian packager, there is an orphaned package waiting for you!))
Msrp comes with support for Mercurial and Subversion by default, but I wrote patches to add support for Git and Bazaar. Note that these patches are not in the 0.9.4 version which is shipped by Debian and Ubuntu.
Give it a try!
Mike C. Fletcher: Infinite Deployment Docs and OpenID Issues
Have spent rather a lot of time trying to wrestle the deployment docs into shape for the TurboGears 2.1 release. Even with all that work, only the "standard deployment pattern" is really in "good" shape. Alternative servers, alternative deployment styles, etceteras are all still needing lots of love. I am, however, I think, finished with that section for a while unless someone else chips in to help.
Also ran into one of those "argh" inducing issues this evening. A user was trying to follow through the "Using who.ini" discussion on his way to doing OpenID with TurboGears and ran into a weird, subtle bug. Turns out, when you disable TurboGears authentication repoze.what "fails open" as far as much TurboGears code is concerned. The predicates just all silently start evaluating to True. The @require() decorator thankfully does the right thing, but users who do:
tg.predicates.has_permission('manage')Now always get a True value (the predicate object), so if you're using that to control display of information... oops. Not likely to have bitten too many users, but it just seems we should have something raising errors on _nonzero_() if the predicate's aren't "booleanized()".
In other news, given that someone else is trying to get OpenID working, I suppose I should look at the branch of repoze.openid. Upstream wants changes, but I haven't yet figured out what's supposed to happen wrt registration to make those changes work. Repoze just doesn't seem to have a registration story AFAICT.
MJ Ray: SPI March 2010
The meeting agenda is already posted for tonight’s (Wednesday’s) SPI board IRC meeting which will be at 2000 UTC.
It’s another pretty lean meeting, with only some minutes to approve, so why not come along and let the board know what you think they should be doing to promote free and open source software?
Perl one-liner to sample your Mac's voices
I've been following stories about Roger Ebert's new voice, which a company has made so that they can apparently plug it into his Mac. In his appearances on camera, the voice he's been using is the Mac "Alex" voice. What other voices does your Mac have? Here's a Perl one-liner to play them.
From the Terminal window, paste this in at the prompt:
perl -le'for (@ARGV){m{/(\w+?)\.SpeechVoice};' \ -e'$_=$1;s/([a-z])([A-Z])/$1 $2/g;' \ -e'print qq{say -v "$_" This is $_};}' \ /System/Library/Speech/Voices/* | sh -xOn my Mac, "Organ" isn't found, but I don't know why.
logging changes in Dist::Zilla are maybe complete
The last 24 hours or so have been really busy. Today was Martha's third birthday (wow, can you believe it?) and I've had a number of incredibly annoying bugs at work. I won't get into the details right now but one of them was an MSIE bug that I solved by \uXXXX-only double-JSON-encoding a structure. The other was fixed by disabling Etag headers. Blaaaagh!
Despite this, I found some time for working on Dist::Zilla improvements. I did a pretty significant amount of work, actually, but if I paste the results, it will not look very impressive:
[DZ] beginning to build Dist-Zilla [DZ] guessing dist's main_module is lib/Dist/Zilla.pm [DZ] extracting distribution abstract from lib/Dist/Zilla.pm [@RJBS/Classic/ExtraTests] rewriting release test xt/release/pod-coverage.t [@RJBS/Classic/ExtraTests] rewriting release test xt/release/pod-syntax.t [@RJBS/PodWeaver] [@Default/Name] couldn't find abstract in lib/Dist/Zilla/Tester.pm [@RJBS/PodWeaver] [@Default/Name] couldn't find abstract in lib/Dist/Zilla/App/Tester.pm [DZ] writing Dist-Zilla in Dist-Zilla-1.100680 [DZ] writing archive to Dist-Zilla-1.100680.tar.gzThe change, here, is that Pod::Weaver's plugins can now log as a "second order" set of plugin data. This sort of worked, in theory, with previous implementations of logging, but it's much simpler now. I've ripped out a lot of the logging code from Dist::Zilla, eliminating the illusion that you could use something other than Log::Dispatchouli to replace its logging. At the same time, I refactored some of Log::Dispatchouli's methods to make it more flexible, but not (I hope!) more complex. I don't think much will come of it, beyond what I've just shown above, but it's still useful. It will also let me easily do something like this:
$self->log_debug( { prefix => $self->prefix_wrap }, $multi_line_log, );...to produce...
[PluginName] <<< This is a multi-line [PluginName] ||| log entry that will be [PluginName] ||| marked with some sort [PluginName] >>> of log-item grouper.The real win here is "less code." I had to copy and paste a five or six line hunk of code around a few times, and I think that will get refactored later. Still, things are very simple, now, and it will make testing the logging of plugins very easy.
Next up: actual testing.
I hit one stumbling block with my previous attempt to make it possible to build a dist found in another directory. Because of the way things worked, I ended up getting dist tarballs with contents like ~/User/rjbs/code/cs/Whatever/lib/...instead ofWhatever-1.234/lib/...`. I fixed this by reverting the directory absolutizing. I'll either have to do a more comprehensive survey and fix of the code or I'll just more aggressively add localized chdirs. That's fine, too.
So, next up: I start to really test things. First up, I'll make the existing dz1.t and dz2.t tests actually test things. After that, it will be time to start testing each plugin. That should be... well, awful. It will be nice to have the tests, though!