I just met Jared a month ago and I'm deep in the book. Seems like a lot of interesting things to say. I have much more respect for the pragmatic approach. Trying to implement some of the practices here for our work, especially when it comes to The List and better project scheduling (having wonderful CI and unit testing here). I'll have to check this out.
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-16 10:13 pm (UTC)
| (Link)
|
Who's Jared? I'm confused. :)
Jared Richardson? Who wrote the book Ship It? Whose development practices I assume this software implements based on the brief description I read?
If that is not the case, this is a monumentally weird coincidence.
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-16 11:57 pm (UTC)
| (Link)
|
Nope, had never heard of him or the book.
We just always joke around at work and say "Ship it!" for everything, so I used that name.
OK. That is officially a really weird coincidence. Ship It
that seems really cool- it's definitely my most hated part of things- previously i'd done all this shit by hand-
maybe i'm clueless as to the cpan webnav, but i couldn't find a way to see what needs to go in the conf file?
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-16 08:53 pm (UTC)
| (Link)
|
Run shipit in a project directory and it'll help you, writing your template .shipit file you can then edit.
Sorry, some docs still lacking.
![[User Picture]](http://l-userpic.livejournal.com/92611566/3171) | From: mart 2007-04-17 06:51 am (UTC)
| (Link)
|
Next project: DocumentIt. ;)
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-17 06:52 am (UTC)
| (Link)
|
Naah, just a ShipIt::Step::DocCheck, which just uses Test::POD or whatever... one of the billion doc checkers that already exists.
![[User Picture]](http://l-userpic.livejournal.com/92611566/3171) | From: mart 2007-04-17 07:38 am (UTC)
| (Link)
|
I was thinking along the lines of some plugin for Visual Studio that one of my co-workers had. It'd look at the method names and parameter names and guess some documentation for you, so a method name like getDisplayName would get documented as “Gets the display name”. The docs it generates are completely useless and redundant, but at least you can feel accomplished having documentation for every member!
No idea how you'd do such a think for perl, though.
![[User Picture]](http://l-userpic.livejournal.com/996772/447266) | From: ydna 2007-04-16 09:34 pm (UTC)
| (Link)
|
I made a wheel that automates some of my hell for one particular project (work), but it is not round. I will have to look more closely at this wheel you have wrought.
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-16 10:13 pm (UTC)
| (Link)
|
Cool, let me know what you think.
![[User Picture]](http://l-userpic.livejournal.com/51462672/477231) | From: skx 2007-04-16 09:41 pm (UTC)
| (Link)
|
Neat.
One obvious step for a release is making GPG-signatures of tarballs.
I've been working on my own system for creating releases for a while, although mine focuses upon uploading to Freshmeat.net rather than CPAN. (Never posted any code there!)
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-16 09:47 pm (UTC)
| (Link)
|
If you'd like to write Step subclasses for GPG signing and Freshmeat.net pinging/uploading, I'd happily include them!
![[User Picture]](http://l-userpic.livejournal.com/265901/210712) | From: gaal 2007-04-17 04:28 am (UTC)
| (Link)
|
For Perl projects that use Module::Build (or Module::Install, which I usually use because it lets me MIT-license the code), you add a "sign" directive in the build file and signing is taken care of.
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-17 06:16 am (UTC)
| (Link)
|
In that case, ShipIt needs no extra steps/config, unless you want to also upload/etc the signature file.
![[User Picture]](http://l-userpic.livejournal.com/51462672/477231) | From: skx 2007-04-17 09:27 am (UTC)
| (Link)
|
Right now it looks like "make", "dist" are hardwired.
It'd certainly be easy to make the code accept any additional arguments though.
One thing that jumps out, re the discussion on portability below, is that you hardwire "make" as a command. People on Windows who aren't using cygwin, etc, will probably have NMAKE.exe installed from Visual Studio installed.
So it might be nice to use "make = " in the .shipit file...
![[User Picture]](http://l-userpic.livejournal.com/51462672/477231) | From: skx 2007-04-17 09:28 am (UTC)
| (Link)
|
I'll have a look at moving my freshmeat code over. The only extra steps are to define a base-prefix for the uploaded data and to have a human-readable changelog entry.
Right now I guess I could fudge that by invoking the editor...
Man, I need that at work. I don't suppose you're interested in making a Windows/C# version :P.
I guess I've hacked most of that out of NAnt, but yours is cooler in approximately all ways.
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-17 04:13 am (UTC)
| (Link)
|
Run it on ActiveState's Perl?
I've never been able to get past their marketing to get more than a time-limited demo. We had a custom lousy Perl environment for the app at the old job that used it anyway.
I really need a ShipIt that works with Windows conventions rather than 'nix ones, not one that happens to run on Windows, I was just complaining :P
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-17 06:15 am (UTC)
| (Link)
|
ActiveState's Perl runtime is free. There's no time-limited aspect to it.
Further, nothing in ShipIt should depend on Unix-isms. Maybe I let some slip (most likely), in the Perl Step subclasses, but for your C#-ish Step subclasses, there'd be no need... nothing in the core should be Unix-specific.
I like this idea! When I wanted to automate the process of Plagger release management, I first looked at Module::Release on CPAN but the functionality was sort of limited and the object model looked weird, so ended up with a custom script. Idea: make the release process pluggable so you can optionally announce the release to mailing list, blog, freshmeat or Twitter.
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-17 01:26 am (UTC)
| (Link)
|
It's pluggable already.
From the class structure I found it so, but was not sure how to actually "plug" it. I just checked out svn repository and will take a look at it on the plane (NRT -> SFO) in a few hours ...
![[User Picture]](http://l-userpic.livejournal.com/54541970/2) | From: brad 2007-04-17 07:11 am (UTC)
| (Link)
|
Well, it's pluggable in that you can write your own Step subclasses, and they're dynamically loaded.
In ShipIt's own .shipit config file:
steps = FindVersion, ChangeVersion, CheckChangeLog, DistTest, Commit, Tag, MakeDist, UploadCPAN svn.tagpattern = ShipIt-%v CheckChangeLog.files = ChangeLog
Where those steps are just shorthands for:
ShipIt::Step::FindVersion, ...
So if those are in your path, they're loaded, instantiated, and ->run.
If you want something more, let me know. I'm sure as I push it harder, I'll extend it more, but so far today I've done releases of 11 projects without needing to tweak anything much.
|