Padre blogs

August 17, 2010

Peter Lavender

Padre 0.69 Released - Still Unstable.

Padre 0.69 has been released, it's still marked as unstable while Adam Kennedy works on the various parts of the Task subsystem.  We hope that once the Australian Election is over Adam will be somewhat less distracted and focus on the 'bits that are missing' to remove the unstable tag.

Until then though, 0.69 has been released, it includes the beginnings of the Sync server work that will see the option to store your personalised settings on a server allowing you to share your settings between computers.

As always there's a few bug fixes, like the fix to the annoying bug in the Dialog about changed files that only gave you the option to Close the file or Close the dialog.

After a question through the padre-dev mailing list about cursors blinking and how to turn it off, this release sees a new preference setting that allow those who like to control  blinking cursor to turn it off, by setting the time to 0 or speed it up and slow it down.  If you wish to adjust the blink rate or turn it off, you can find it in Tools/Preferences under Behavior about 3/4's of the way down.

With little more to add, the list of changes for 0.69:


    - Landed ConfigSync branch (MATTP)
    - Task 2.0 restores support for having tasks send unlimited messages
      back to the main application while they are running (ADAMK)
    - Added Padre::Task::Run for background process execution with STDOUT
      lines streaming as events back to the main window. (ADAMK)
    - Fixed test failure in t/93-padre-filename-win.t under win32 (SEWI)
    - Devel plugin now has the option to dump the Task Manager (GARU)
    - Refactored, reskinned and polished ConfigSync functionality (ADAMK)
    - Added ->status to ::Main to allow rapid transient messages to be
      presented in the status bar, as fast as 100/sec (ADAMK)
    - Fixed the file-changed-on-disk dialog: Show "Reload" button instead
      of "Close" (SEWI)
    - Adding a ton of additional $BACKCOMPATIBLE variables so that every
      class consumed by the current family of plugins has them (ADAMK)
    - Nudging up the default background thread count now that we will
      start to see long-running threads looking after background
      processes (ADAMK)
    - Allow the opening of files exceeding the editor_file_size_limit of
      500_000. The file is opened if the user answers Yes to the
      dialog (MULANDER)
    - The Task Manager now records per-worker statistics on which tasks they
      have run in the past. This is needed to support various worker
      optimisation strategies to be implemented in the future (ADAMK)
    - Added a simple initial Task Manager optimisation strategy to favour
      workers which have run a task at least once before (ADAMK)
    - "Find method declaration" will not find forward-declaration (CHORNY)
    - Task manager now has separate maximum and minimum thread counts (ADAMK)
    - Minimum thread count set to zero. Padre starts up 600ms faster, at the
      cost of the directory tree appearing 200ms slower if you use it (ADAMK)
    - Command line switch to select locale (CHORNY)
    - Added configuration option to modify the cursor blink rate in Padre
      as requested via the padre-dev mailing list closes ticket number
      983 (PLAVEN)
    - Added Padre::Task::Daemon for bidirectional communication support in
      tasks. When the task is launched, messages to the chlid can be sent
      down the worker thread's message queue, and they will be tunneled
      through to the task, which can retrieve them Erlang-style via a
      dequeue method (ADAMK)


As you can see there are some interesting things to come into production in Padre.  Feel free to drop on into the #padre channel on irc.perl.org.

Read and post comments | Send to a friend

by pete at August 17, 2010 11:22 AM

August 16, 2010

Peter Lavender

Finding your way around Padre, one mistake at a time...

Intro


I originally started this as a cry for help in the padre-dev mailing list.  After spending far more time on this problem than I'm willing to admit, I felt it was time to reach out.

In so doing, and spending time moving around the code grabbing the bits that I needed to make my point clearer, I actually stumbled on the solution.

I felt after all that effort it makes a great example of how to sit back and take your time to work through tricky problems you're having at the time.

I'm posting this as a blog, not only to show that you can contribute and not be an uber or alpha coder, but that by stepping through things even confusing and painful road blocks can be cleared with a little thought.. and to remind me next time that some times it's worth taking notes than try to keep it worked out in your head.  :)

Orginal email - never sent -  follows:


I've been tooling about with the Padre::Plugin::SQL module, and have in the past had it working fine in that when the plugin is enabled, it asks for DB connection details and when you connect it opens up two output panels at the bottom of the IDE, one for messages and one for database results.

Now a change was made by patsam due to the bottom and output panels crashing plack and I recall it because the comment on the commit made a few of us chuckle, something about Padre assuming too much about it's bottom.

Anyway, after that change I started cleaning up the code.. it's woefully full of print statements and half thought out data structures.  Now either I've removed too much code, or the changes made mean I need to fix up the panel code I have to work properly.

The problem I suspect is that I need to fix my code, but I'm now lost in the way things are inherited and not making any headway.

I'll hopefully grab the right bits of code and see if it all comes together:

The message panel I'm using is crashing Padre, Padre::Plugin::SQL::MessagePanel is a panel to output messages from the Database connection.

It's a Wx::Panel: use base 'Wx::Panel';

And is instantiated like so:

sub new {
    my $class      = shift;
    my $main       = shift;
    my $self       = $class->SUPER::new( Padre::Current->main->bottom );

The rest of the code is taken from other implementations of this sort of thing.

So when the first message needs to be output, this is the error I get when Padre crashes:

Can't locate object method "ide" via package "Padre::Plugin::SQL::MessagePanel" at /home/pete/Programming/Perl/Padre/trunk/Padre/lib/Padre/Wx/Output.pm line 177

This of course used to work.

So looking at the Output Class at line 177:

my $use_ansi = $self->main->ide->config->main_output_ansi;

So it's calling a method main on itself.

the main method has this:

sub main {
    $_[0]->{main} || $_[0]->GetGrandParent;
}

So, there's a reference to main here.

Looking at Padre::Wx::Output it is  a our @ISA = 'Wx::RichTextCtrl'; and is instantiated like so:

sub new {
    my $class = shift;
    my $main  = shift;

    # Bottom defaults to $main's bottom panel, but can be
    # something different (for example see Padre::Plugin::Plack's usage)
    my $bottom = shift || $main->bottom;

and we can see that during instantiation main gets stored in $self: $self->{main}   = $main;

So when I put in a print statement to see what this line has for $self->main:

    my $use_ansi = $self->main->ide->config->main_output_ansi;

I see: Self->main is Padre::Plugin::SQL::MessagePanel

The reference in the  main instance variable  in the Output class isn't Main.pm at all.

So lets go back and see how we are instantiating our Output object in the MessagePanel.


# output panel for server
    require Padre::Wx::Output;
    my $output = Padre::Wx::Output->new($self);


What you don't see or hear is the head slap moment where all this starts to make sense.  The email finishes here.

The following is just me wrapping up the matter:


Now if we go back to Padre::Wx::Output we see these lines:

sub new {
    my $class = shift;
    my $main  = shift;

    # Bottom defaults to $main's bottom panel, but can be
    # something different (for example see Padre::Plugin::Plack's usage)
    my $bottom = shift || $main->bottom;


This means that a reference to main needs to be the first parameter supplied to the Class' instantiator, then $bottom takes a reference to a Bottom Class or gets it from $main->bottom.

So we change our call to Padre::Wx::Output's new method to this:

my $output = Padre::Wx::Output->new($main, $self);

Now Padre::Wx::Output has both the reference to Main.pm and Bottom.pm classes.


My MessagePanel Class now works and the plugin itself no longer crashes.

I hope that this shows, that if I can do it... so can you.  :)


Read and post comments | Send to a friend

by pete at August 16, 2010 07:38 AM

Padre 0.66 - Unstable - Bug fix!

0.65 was released with an issue with file locking that caused problems on windows:

- Unix-specific file system code that crashed on Windows, right in the middle of the unlocking phase of Padre::Locker

This release fixes the bug.

Other changes for this release - granted it's only about 6 hours since the last release:

    - Improved the quality and integration of the default window size (ADAMK)
    - The non-blocking IO upgrade in 0.65 meant that Padre could no longer
      open files on Windows. Fixed (ADAMK)
    - Minor improvements to the About dialog (ADAMK)

If you have upgraded Padre to 0.65 please upgrade to 0.66 as soon as your CPAN mirror has it.

Hopefully this release will last a little bit longer than the last.

Read and post comments | Send to a friend

by pete at August 16, 2010 07:37 AM

Padre's 2nd Birthday...

This weekend is Padre's 2nd birthday.  Padre's birthday also coincides with someone close me's birthday.

Last year we went away for the weekend and I got to catch up on the weekend via the irc log: http://irclog.perlgeek.de/padre.

This year I have been able to wander in and out of the room with the laptop to keep an eye on things, and I have to say it's a pretty cool weekend.

The birthday hackathon has bought in a few names to the channel, along with bringing back some of the earlier contributors and alpha coders.  Adam Kennedy has remained busy even with the announcement of the Australian Federal Election now distracting him with his other interest http://geo2gov.com.au/.

Gabor Szabo who does a lot of work promoting perl and is the project's "father" got busy with a screencast on how to join the channel: http://szabgab.com/blog/2010/07/1280012145.html.  While you are on his blog, go check out the perl 6 screen casts.  I was truely impressed with what's coming in Perl 6 and seeing it explained and in use made all those exegeses so much clearer.

Ahmad Zawawi has returned this weekend and has started on his long todo list, which one of those items looks like Wx documentation based on the commits to the Padre repo.  I'm looking forward to the efforts of his work!

There's also a lot more activitity from those of us still learning our ways through the code. 

Zeno Gantner has been beavering away on the internationalisation part of Padre.  There's been long running issues with switching languages in the IDE.  For the most part it worked fine, and since you generally don't change languages often it was something we didn't make a priority to solve; but some of the odd things to happen would be the loss of the Plugins in the Tools Menu - now fixed zeno++.  Also, the issue of warnings popping up in the console if you changed to a language you didn't have installed in your OS.  The changes made recently have reduced the number of warnings to 1.  I'm still trying to see if we can suppress this warning, or if it's something that needs to be done differently in wxWidgets.

There have been others who have been fixing some of the plugins, chorny++, Sewi++ with a few fixes here and there, notably the reload file dialog has been given some attention... :)

To everyone who has popped in to say hello, or wish Padre a happy birthday, a big thanks. It's a small gesture, but it has a big effect.

The hacking continues today, so feel free to drop on by and say hello or fix a bug!

Read and post comments | Send to a friend

by pete at August 16, 2010 07:37 AM

Padre 068 Post Birthday Hackthon Release - Still Unstable

Those who keep an eye on such things might notice there was no 0.67 of Padre.

Well you'd be right.  0.67 got tagged last night, but due to not paying enough attention the Changes file was completely mucked up, leading to a release that codewise was fine, but a Change file that in its current state would cause confusion.

In the time following the release process, chorny fixed a rather rare bug on the windows platform, so rather than muck about with the versioning system, it was decided to incorporate the fix and instead release 0.68.

Given that the Changes listed below are those for what was 0.67 that never saw the light of public release, just to be complete, 0.68 has one additional change:

    - Fixed rare bug in t/23_task_chain.t (CHORNY)

This is included and the changes for what was 0.67 are listed as changes for 0.68, and 0.67 has a marker to be clear that there was no public release.

Following is the original release announcement for 0.67:

Padre's second birthday was celebrated with a hackathon over the weekend of the 24th and 25th of July.

It brought back some long time contributors, some who popped in to the channel to say hi and some who had a go at their long todo list as well as a number of other well wishers.

We also saw a number commits over the weekend from a number of people fixing the things in Padre that itched them, and we saw the first pass of the Wx documentation being parsed and formatted for Padre's context help system.  This will go a long way in improving the work flow for those who use Wx in their coding lives.

This release sees a huge number of changes to Padre since 0.66 - not to mention the length of time since the last release.  This was in part due to the ongoing changes being made by Adam Kennedy after the Task 2.0 API change prior to the hackathon. With Adam's efforts leading up to the weekend, the list of changes simply flowed on through.

This release remains tagged as unstable, and not for package maintainers to spend their time on.

I expect that with this release if we see little breakage after the major API change and all the hackery from the weekend just passed, we should be able to release a stable Padre.  Hopefully with as many languages as possible up to date.

So with little more to add, what follows is the exhaustive list of changes for this release:

    - Refactored the Action subsystem into a simpler model. The old layout
      artificially broke it up based on menu structure. The new layout
      also makes it simpler to do further refactorings (ADAMK)
    - Removed half the usages of Wx::Perl::Dialog (ADAMK)
    - Use a hyphen to a separate the current vs native names of the languages
      in the View menu, as the bracing looked weird with the bracing of some
      of the languages themselves (ADAMK, ZENOG)
    - Don't show a additional translated string for the language that is
      currently active (ADAMK, ZENOG)
    - When the advanced setting "feature_fontsize" is disabled, Padre will
      remove the Font Size menu, disable Ctrl-+ and Ctrl--, and (most
      importantly) will not change the font size in an editor on
      Ctrl-Scroll (ADAMK)
    - Added integration with the PPI::Transform API for modifying Perl
      documents, so the transform objects can modify Padre documents (ADAMK)
    - Added the "Move POD to __END__" refactoring that lets you extract all
      the POD scattered through a document, merge it together, and move it
      to the bottom of the file after an __END__ statement (ADAMK)
    - If the Open Selection expression only matches one file, immediately
      open it without showing a pointless dialog (ADAMK)
    - Removed Wx::Perl::Dialog by inlining it into Padre::Wx::Dialog, this
      will remove the need to import ':everything', saving 50-100k (ADAMK)
    - Actions now only need to be declared once, and are all declared in one
      place in advance (ADAMK)
    - Directory Tree sort order is now (advanced) configurable between
      directory-first and directory-mixed (ADAMK)
    - Moved the Padre::Action* classes to Padre::Wx::Action* as they are now
      much more tightly dependant on Wx (ADAMK)
    - Plugins will now do full compatibility testing, which means that when we
      change an internal API we can just update $COMPATIBLE in that package
      and any impacted plugins will be automatically disabled until they do a
      new release. That is far better than "They just crash blindly" (ADAMK)
    - Create a new main_directory_root settting distinct from the existing
      default_projects_directory one, specifically for setting the default
      root of the directory tree. It will continue to be pointed to
      my_documents by default (the original may change) (ADAMK)
    - Made Padre::Wx::Dialog::ModuleStart configuration translation-safe (ZENOG)
    - Updated German translation (ZENOG)
    - Add Java and BibTeX to MIME types (ZENOG)
    - Ack ("find in files") output is now more 'clickable', but still not
      perfect (ZENOG)
    - Fix File::Open3::open3() call to be IPC::Open3::open3() (BRICAS)
    - Fix #969: crash when switching language after using Ack (ZENOG)
    - Remove unnecessary Wx::gettext calls from Padre::Wx::Dialog::Preferences
      that lead to missing translations (ZENOG)
    - Description field is hidden by default in the regex editor dialog.
      A checkbox now optionally toggles its visibility (AZAWAWI)
    - Padre::Wx::FindResult: Get rid of global variable, shorter column
      titles, both columns now wxLIST_AUTOSIZE (ZENOG)
    - Call relocale() for all elements of the Bottom panel (ZENOG)
    - Remember sorting order in session manager (SEWI)
    - Nicer workflow for renaming variables: Now we check for some conditions
      before prompting the user for a name; renamed function
      'lexical_variable_replacement' to 'rename_variable' (ZENOG)
    - Simplify the code for the Bottom pane a bit (-1 method), no warnings
      any more (ZENOG)
    - Fixed #970: Switching language removes plugin menus (ZENOG)
    - Padre::MimeTypes: Fixed some Wx::gettext handling problems, switched
      keys of menu_view_mimes() so that the names (not the MIME types) of
      file types are shown in the View menu (ZENOG)
    - Documentation of Padre::Current (SEWI)
    - Include only changed files in changed-file-list (SEWI)
    - Added wxwidgets.pod which contains the method documentation of all Wx
      classes (AZAWAWI)
    - Padre has wxWidgets method documentation in F2 help search (AZAWAWI)
    - Added Padre::Wx::Nth to group first/nth-time startup magic (ADAMK)
    - Fixed #781 : Unicode should not be used for accessing file system on
      Win32 (CHORNY)
    - The New Installation Survey now only appears on the third time that
      Padre starts, so it doesn't confuse people with locale issues (ADAMK)
    - Split Padre::Wx::Dialog::WhereFrom into main and FBP classes to try
      out the designer-based approach experimentally (ADAMK)
    - Tab width is configurable for opened file too (CHORNY)

It's a long list of changes, a number of people have made a difference to Padre in their own way, all in the name of improving their application and making Padre just that little bit better for everyone else.

It was great to see people drop by the channel to wish Padre a happy birthday, so to all who took the time to drop in, I'm sure I echo the sentiment of the regulars in #padre - thanks a bunch.  While the work is done on Padre without seeking recognition and gratitude, it's still nice to be reminded that efforts are not in vain.

As always, feel free to drop into the #padre channel on irc.perl.org, if you are a bit stuck on accessing  old school chat rooms, check out Gabor's screencast at http://szabgab.com/blog/2010/07/happy-2nd-birthday-to-padre-the-perl-ide.html  to help you along your way.

Read and post comments | Send to a friend

by pete at August 16, 2010 07:36 AM

August 06, 2010

Peter Lavender

Padre 0.64 has been released

As announced previously a fairly major change to one of Padre's core API's is about to hit trunk.

Adam Kennedy has been working on the second generation of the Task API and finally hit on a solution he's happy with.  Adam discusses the new API in detail here: http://use.perl.org/~Alias/journal/40377/.

With Adam happy with the work done, we needed some time to organise a final stable release before the merge of Adams branch into trunk.

0.64 is that stable release that will see the following releases announced as unstable while the finer details of the merged in work gets sorted out.

This means that any package maintainers should consider 0.64 as suitable for packaging until such time we announce a stable version, at which point we expect to have a stable Padre with the new API and all dependent tasks converted to it. 

For what it's worth though, Adam has pretty much migrated all existing tasks in Padre to the new API in his branch, what is really required is time to see how it all performs and holds up in general use, so do that we need it in trunk and we need to have a few releases for people to give it a good working over before declaring things stable again.

Once Adam has done the merge, all plugin authors and maintainers whose plugins use the old API will need to update their plugin to the new API.  We'll make sure that the when the merge is complete someone will make an announcement about it.

So after all of that, what has changed for this release, not much really.  With the warning of the last stable release before the merge and a number of our regular contributors busy with linuxtag and other side projects ( life is a valid side project! ) we didn't see much change in the code base.

A call for translations to be in did see one come in, but with little changing the code base any language that was committed for 0.63 should still be fine:

Translations


    - zh-cn translation updated (jagd)


That sees the list of changes for this release.

To see how things are progressing with the change to to the new API, feel free to hang out in the #padre channel on irc.perl.org.


Read and post comments | Send to a friend

by pete at August 06, 2010 03:12 AM

Padre 0.63 Bugfix Release

There aren't many releases that don't include bug fixes, however this release is being pushed out to fix a rather embarrassing bug in the Outline view that crashes Padre quite badly.

If you can live without the Outline view, then Padre is fine, it's only when it is turned on that you see the problem.

So this release really only contains two changes:

    - Autocomplete "sub new" for Perl modules (SEWI)
    - fixed ticket #956: crashes if Outline is active (ZENOG)

Zeno Gantner gets the kudos for the bug fix.

Looking Ahead

Given the shortness of this release announcement, it's a good chance to prepare everyone for the upcoming "Unstable" series of release for Padre.

Adam Kennedy has been hard at work rewriting the underlying Task API.

For those who don't know what this is, it's the API that gives parts of Padre and the plugins that want access to the threading mechanism to hand off long running processes and return control back to the main IDE.  Such things that that make use of this is the syntax checker or the Outline View.

With the code rewrite now all but complete, the branch that Adam has been working on is nearly ready to be merged into trunk.

It's during this time that we will see a number of Plugins that won't work until they are ported to the new Task API, along with any undetected parts within Padre.

As we did last time, we'll mark each release as unstable.  This means package maintainers can sit back a while while the task of getting Padre back to a stable release comes to pass.

For most people though, trunk will remain quite usable and anyone who wants to chip in and earn some kudos and fame can help with the task of migrating any parts of Padre to the new Task API.

Well that's it for this release. A major bug fix and a warning of things to come.

I expect to do one more stable release to give our translators time to get the languages done before the merge.

Feel free to swing on over to the #padre channel on irc.perl.org.

Read and post comments | Send to a friend

by pete at August 06, 2010 02:34 AM

Padre 0.62 Released

With out much fanfare and a quicker than normal release, Padre 0.62 has been released.

This release of Padre is "rushed" out to fix a bug that crashes Padre 0.61 - and possibly earlier - when you hold down the CRTL Key and left click the mouse button.

This is proving a problem for a few people, specifically Kartic Thakore who has asked if we can roll out a new release to improve things while he codes in Padre.

Given that he's very active in the  SDL project, there is a lot of perl being written and there's nothing worse than your IDE not providing a stable platform to work from.

With little more to add, our short llst of changes for Padre 0.62:

Fixes


    - Any 3 column table layout in the preferences dialog now has a
      stretched middle column. (PLAVEN)
    - Add a warning for versions of Wx.pm with broken HTML rendering
      (ZENOG)
    - Mousing over a sub/method name with ctrl pressed now highlights it
      to indicate it can be clicked on (Sam Crawley)
    - Regex editor: Support global flag for substitute (ZENOG)

Translations


    - Updated Turkish translation (Burak Gürsoy)

This release sees 7 languages at 100% translated in Padre:

de, es-es, it-it, nl-nl, pt-br, tr, zh-cn

You can see this for your self on the translations page:   http://perlide.org/translations/, which is updated hourly.

As you can see it's not a huge list of changes for this release, but the small changes coming through continue to make Padre just that little bit better.

Again a big thanks to our translators, you do a great job keeping Padre up to date with the various languages we are fortunate enough to have translations for.

As usual feel free to drop by the irc channel: #padre on irc.perl.org, if you have a question or just want to hang out with a friendly bunch of people.  Just keep in mind that we aren't all awake or at the keyboard at the same time, so if you are asking a question, please hang around a while so someone has a chance to answer you.

Until next time, happy hacking.

Read and post comments | Send to a friend

by pete at August 06, 2010 02:27 AM

Padre 0.65 - Unstable - Task 2.0 Released

Padre 0.65 is the first of the unstable releases after the Task 2.0 rewrite by Adam Kennedy was merged into trunk.

In a fairly long - for Padre development - period of time Adam Kennedy (Alias) worked pretty darn hard to get the rough edges polished off.

Along with plenty of us finding where things weren't working so well.  This bit though will be ongoing of course.  :)

Overall Padre has been fairly stable after the merge was completed, out standing issues for now are plugins that used the old Task API that need to be ported to the new API.

The changes for this release follow:

    - Task 2.0 API landed on trunk (and everything breaks) (ADAMK)
    - Converted the FunctionList GUI component to work via a task (ADAMK)
    - Padre::Role::Task role added to allow any object in Padre
      to be the "owner" of task and automatically handle which
      tasks are still relevant to the UI state at the time the task
      is completed, and ignore the ones that aren't (ADAMK)
    - New compulsory Padre::Wx::Role::View for editor GUI componants
      that want to live in the left/right/bottom tool panels (ADAMK)
    - Renamed a number of classes to simpler names. Because we are
      breaking everything anyway, this is an opportune time to lump
      in these low-importance changes (ADAMK)
    - Padre::DocBrowser --> Padre::Browser (ADAMK)
    - Padre::Wx::DocBrowser --> Padre::Wx::Browser (ADAMK)
    - Padre::Wx::Role::MainChild --> Padre::Wx::Role::Main (ADAMK)
    - Language-specific task sub-classes now live under the document class
      instead of under the Padre::Task tree, to encourage concentration
      of language-specific code within the document tree (ADAMK)
    - Padre::Task::Perl::Syntax --> Padre::Document::Perl::Syntax (ADAMK)
    - Padre::Task::Perl::Outline --> Padre::Document::Perl::Outline (ADAMK)
    - Startup config file now uses a custom hyper-minimalist format
      which avoids the need to load YAML::Tiny before the first thread
      spawn, saving about 400k per thread (ADAMK)
    - Padre::Logger now allows the PADRE_DEBUG environment variable to be
      set to a specific class name, enabling logging only for that class.
      This simplies tracing around a specific problem now that the number
      of classes with debugging hooks is getting large (ADAMK)
    - Moved the startup tool enabling of the syntax check and error list
      from the startup timer to the constructor, and prevent them from
      writing back to the config. We no longer need to write the config
      at all during startup, making startup faster (ADAMK)
    - Scroll the output window down on outputs (kthakore)
    - Directory browser rewritten to operate in the background (ADAMK)
    - Improved directory tree search to take advantage of new background
      file scanning. It is now instantaneously quick (ADAMK)
    - Added the PPI::Cache API to provide a simple common mechanism for
      stashing GUI model data such that all cache data can be cleaned up in
      one go when the relevant project or document is released (ADAMK)
    - Fixing some new bugs or adding temporary workarounds for them (SEWI)
    - Rebuild History using non-blocking IO on Padre start (SEWI)

As you can see Adam has been very busy this cycle.  What you don't see is the work involved to get the new API ready for merging.  I think this was something like a 3-4 month ( 6 maybe? ) journey for Adam to get to where we are today. 

Thanks to Adam for all his hard work, it's a stand out release for all his efforts.

Padre 0.65 is released as unstable only to provide a warning that this is a major work in progress.  If you like to live a little on the edge, then step up, upgrade Padre and let us know where you find Padre not working as it should.

The package maintainer though can skip this version of Padre and remain at 0.64.  We'll make it well known when we consider Padre ready for prime time again.

As always a big thanks to all our contributors.  If you have any questions or just want to chat, drop into #padre on irc.perl.org.

Oh.. as a side note, I mucked up the release and forgot to update the Changes file.  Sorry!!! 


Read and post comments | Send to a friend

by pete at August 06, 2010 01:32 AM

Upcoming Padre 0.64 Call for Translations - Last stable release for a little while...

I've sent pretty much this to the padre-dev list, but for those following along the blogs, the upcoming release 0.64 will be the last of the stable Padre's for a little while... read on for more:

As alluded to in the release announcement, we are heading towards a series of unstable releases.

This is to facilitate the merge of Adam's branch for the Task 2.0 rewrite into trunk.

It may be that Padre itself is fine once the merge is done, however there will be impact on the plugins that use the task API to off load long running processes.

I know we've already discussed it, but we aren't the only ones to have a series of unstable releases.

http://zee-nix.blogspot.com/2010/06/rygel-070-picture-if-you-will-is-out.html

This release marks the start of the new unstable release-cycle.

Just like before each release will be marked as unstable and a suitable warning in the release notes.  This should hopefully allow our release maintainers enough visibility to not spend time on packaging a possible short lived release.

So with that in mind; I plan to release 0.64 this friday some time post 1000UTC 11 June 2010.   This leaves the weekend for the merge to trunk and all associated tidy up work to be done.

For the most part this is a call to all translators to get their changes in for our final 'stable' for a little while.

If you want to know how your language is tracking check it out here: http://perlide.org/translations/

OK, that's it for now..

Read and post comments | Send to a friend

by pete at August 06, 2010 01:32 AM

July 29, 2010

Adam Kennedy

Help?

(Before I begin, I should clarify I did not write this code, I'm just trying to maintain it)

The following error is the first thing spat out by make test for the Padre sync server, located at http://svn.perlide.org/padre/trunk/Madre-Sync.

Wasn't the move of Catalyst to Moose going to make things easier?

Can someone explain how you debug this?

I get the basics, I can see the "Can't locate Madre/Sync/Schema.pm". But that file should be, I think, automatically generated. And I don't really get how to dig down the 75 caller levels from the start to the end to work out where the actual functionality is failing...

not ok 1 - use Catalyst::Test;
 
#   Failed test 'use Catalyst::Test;'
#   at t\01app.t line 7.
#     Tried to use 'Catalyst::Test'.
#     Error:  Couldn't load class (Madre::Sync) because: Couldn't instantiate component "Madre::Sync::Model::padreDB", "Can't locate Madre/Sync/Schema.pm i
n @INC (@INC contains: blib\lib blib\arch C:/strawberry/perl/lib C:/strawberry/perl/site/lib C:\strawberry\perl\vendor\lib .). at C:\strawberry\perl\vendor
\lib/Class/MOP.pm line 132
#       Class::MOP::load_first_existing_class('Madre::Sync::Schema') called at C:\strawberry\perl\vendor\lib/Class/MOP.pm line 137
#       Class::MOP::load_class('Madre::Sync::Schema') called at C:\strawberry\perl\vendor\lib/Catalyst/Model/DBIC/Schema/Types.pm line 21
#       Catalyst::Model::DBIC::Schema::Types::__ANON__[C:\strawberry\perl\vendor\lib/Ca talyst/Model/DBIC/Schema/Types.pm:21]('Madre::Sync::Schema') called
at C:\strawberry\perl\vendor\lib/Moose/Meta/TypeCoercion.pm line 63
#       Moose::Meta::TypeCoercion::__ANON__[C:\strawberry\perl\vendor\lib/Moose/Meta/Ty peCoercion.pm:67]('Madre::Sync::Schema') called at C:\strawberry\per
l\vendor\lib/Moose/Meta/TypeCoercion.pm line 97
#       Moose::Meta::TypeCoercion::coerce('Moose::Meta::TypeCoercion=HASH(0x4a2b444)', 'Madre::Sync::Schema') called at C:\strawberry\perl\vendor\lib/Moose
/Meta/TypeConstraint.pm line 90
#       Moose::Meta::TypeConstraint::coerce('Moose::Meta::TypeConstraint=HASH(0x4a29854 )', 'Madre::Sync::Schema') called at C:\strawberry\perl\vendor\lib/M
ooseX/Types/TypeDecorator.pm line 206
#       eval {...} called at C:\strawberry\perl\vendor\lib/MooseX/Types/TypeDecorator.pm line 205
#       MooseX::Types::TypeDecorator::AUTOLOAD('MooseX::Types::TypeDecorator=HASH(0x4a3 1424)', 'Madre::Sync::Schema') called at C:\strawberry\perl\vendor\l
ib/Moose/Meta/Attribute.pm line 743
#       Moose::Meta::Attribute::_coerce_and_verify('Moose::Meta::Attribute=HASH(0x4b467 fc)', 'Madre::Sync::Schema', 'Madre::Sync::Model::padreDB=HASH(0x4db
7c64)') called at C:\strawberry\perl\vendor\lib/Moose/Meta/Attribute.pm line 398
#       Moose::Meta::Attribute::initialize_instance_slot('Moose::Meta::Attribute=HASH(0 x4b467fc)', 'Moose::Meta::Instance=HASH(0x4db7ed4)', 'Madre::Sync::M
odel::padreDB=HASH(0x4db7c64)', 'HASH(0x4db53ac)') called at C:\strawberry\perl\vendor\lib/Class/MOP/Class.pm line 567
#       Class::MOP::Class::_construct_instance('Moose::Meta::Class=HASH(0x4942ffc)', 'HASH(0x4db53ac)') called at C:\strawberry\perl\vendor\lib/Class/MOP/C
lass.pm line 540
#       Class::MOP::Class::new_object('Moose::Meta::Class=HASH(0x4942ffc)', 'HASH(0x4db53ac)') called at C:\strawberry\perl\vendor\lib/Moose/Meta/Class.pm
line 256
#       Moose::Meta::Class::new_object('Moose::Meta::Class=HASH(0x4942ffc)', 'HASH(0x4db53ac)') called at C:\strawberry\perl\vendor\lib/Moose/Object.pm lin
e 25
#       Moose::Object::new('Madre::Sync::Model::padreDB', 'Madre::Sync', 'HASH(0x4b404ec)') called at generated method (unknown origin) line 4
#       Catalyst::Model::DBIC::Schema::new('Madre::Sync::Model::padreDB', 'Madre::Sync', 'HASH(0x4b404ec)') called at C:\strawberry\perl\vendor\lib/MooseX/
Traits/Pluggable.pm line 131
#       MooseX::Traits::Pluggable::new_with_traits('Madre::Sync::Model::padreDB', 'Madre::Sync') called at C:\strawberry\perl\vendor\lib/CatalystX/Componen
t/Traits.pm line 146
#       CatalystX::Component::Traits::COMPONENT('Madre::Sync::Model::padreDB', 'Madre::Sync', 'HASH(0x4c6b93c)') called at C:\strawberry\perl\vendor\lib/Cl
ass/MOP/Method/Wrapped.pm line 48
#       Class::MOP::Method::Wrapped::__ANON__[C:\strawberry\perl\vendor\lib/Class/MOP/M ethod/Wrapped.pm:49]('Madre::Sync::Model::padreDB', 'Madre::Sync', '
HASH(0x4c6b93c)') called at C:\strawberry\perl\vendor\lib/Class/MOP/Method/Wrapped.pm line 89
#       Catalyst::Model::DBIC::Schema::COMPONENT('Madre::Sync::Model::padreDB', 'Madre::Sync', 'HASH(0x4c6b93c)') called at C:\strawberry\perl\vendor\lib/C
atalyst.pm line 2502
#       eval {...} called at C:\strawberry\perl\vendor\lib/Catalyst.pm line 2502
#       Catalyst::setup_component('Madre::Sync', 'Madre::Sync::Model::padreDB') called at C:\strawberry\perl\vendor\lib/Catalyst.pm line 2416
#       Catalyst::setup_components('Madre::Sync') called at C:\strawberry\perl\vendor\lib/Class/MOP/Method/Wrapped.pm line 54
#       Class::MOP::Method::Wrapped::__ANON__[C:\strawberry\perl\vendor\lib/Class/MOP/M ethod/Wrapped.pm:64]('Madre::Sync') called at C:\strawberry\perl\ven
dor\lib/Class/MOP/Method/Wrapped.pm line 89
#       Madre::Sync::setup_components('Madre::Sync') called at C:\strawberry\perl\vendor\lib/Catalyst.pm line 1142
#       Catalyst::setup('Madre::Sync') called at blib\lib/Madre/Sync.pm line 62
#       require Madre/Sync.pm called at C:\strawberry\perl\vendor\lib/Class/MOP.pm line 114
#       Class::MOP::__ANON__[C:\strawberry\perl\vendor\lib/Class/MOP.pm:118]() called at C:\strawberry\perl\vendor\lib/Try/Tiny.pm line 74
#       eval {...} called at C:\strawberry\perl\vendor\lib/Try/Tiny.pm line 67
#       Try::Tiny::try('CODE(0x36d759c)', 'Try::Tiny::Catch=REF(0x33a9584)') called at C:\strawberry\perl\vendor\lib/Class/MOP.pm line 125
#       Class::MOP::load_first_existing_class('Madre::Sync') called at C:\strawberry\perl\vendor\lib/Class/MOP.pm line 137
#       Class::MOP::load_class('Madre::Sync') called at C:\strawberry\perl\vendor\lib/Catalyst/Test.pm line 24
#       Catalyst::Test::__ANON__[C:\strawberry\perl\vendor\lib/Catalyst/Test.pm:93]('Ca talyst::Test', 'all', 'HASH(0x36d768c)', 'HASH(0x25de3a4)') called a
t C:\strawberry\perl\vendor\lib/Sub/Exporter.pm line 493
#       Sub::Exporter::_expand_group('Catalyst::Test', 'HASH(0x36d4ce4)', 'ARRAY(0x36d4994)', 'HASH(0x25de3a4)', 'HASH(0x36d755c)', 'HASH(0x25de334)') call
ed at C:\strawberry\perl\vendor\lib/Sub/Exporter.pm line 424
#       Sub::Exporter::_expand_groups('Catalyst::Test', 'HASH(0x36d4ce4)', 'ARRAY(0x36d723c)', 'HASH(0x25de3a4)') called at C:\strawberry\perl\vendor\lib/S
ub/Exporter.pm line 742
#       Sub::Exporter::__ANON__[C:\strawberry\perl\vendor\lib/Sub/Exporter.pm:756]('Cat alyst::Test', '-all', 'HASH(0x36cc8d4)') called at C:\strawberry\per
l\vendor\lib/Catalyst/Test.pm line 112
#       Catalyst::Test::import('Catalyst::Test', 'Madre::Sync') called at (eval 11)[C:/strawberry/perl/lib/Test/More.pm:858] line 2
#       main::BEGIN() called at blib\lib/Madre/Sync.pm line 0
#       eval {...} called at blib\lib/Madre/Sync.pm line 0
#       eval 'package main;
# use Catalyst::Test @{$args[0]};
# 1;
#
# ;' called at C:/strawberry/perl/lib/Test/More.pm line 858
#       Test::More::_eval('package main;\x{a}use Catalyst::Test @{$args[0]};\x{a}1;\x{a}', 'ARRAY(0x2308474)') called at C:/strawberry/perl/lib/Test/More.p
m line 833
#       Test::More::use_ok('Catalyst::Test', 'Madre::Sync') called at t\01app.t line 7
#  at C:\strawberry\perl\vendor\lib/MooseX/Types/TypeDecorator.pm line 208
#       MooseX::Types::TypeDecorator::AUTOLOAD('MooseX::Types::TypeDecorator=HASH(0x4a3 1424)', 'Madre::Sync::Schema') called at C:\strawberry\perl\vendor\l
ib/Moose/Meta/Attribute.pm line 743
#       Moose::Meta::Attribute::_coerce_and_verify('Moose::Meta::Attribute=HASH(0x4b467 fc)', 'Madre::Sync::Schema', 'Madre::Sync::Model::padreDB=HASH(0x4db
7c64)') called at C:\strawberry\perl\vendor\lib/Moose/Meta/Attribute.pm line 398
#       Moose::Meta::Attribute::initialize_instance_slot('Moose::Meta::Attribute=HASH(0 x4b467fc)', 'Moose::Meta::Instance=HASH(0x4db7ed4)', 'Madre::Sync::M
odel::padreDB=HASH(0x4db7c64)', 'HASH(0x4db53ac)') called at C:\strawberry\perl\vendor\lib/Class/MOP/Class.pm line 567
#       Class::MOP::Class::_construct_instance('Moose::Meta::Class=HASH(0x4942ffc)', 'HASH(0x4db53ac)') called at C:\strawberry\perl\vendor\lib/Class/MOP/C
lass.pm line 540
#       Class::MOP::Class::new_object('Moose::Meta::Class=HASH(0x4942ffc)', 'HASH(0x4db53ac)') called at C:\strawberry\perl\vendor\lib/Moose/Meta/Class.pm
line 256
#       Moose::Meta::Class::new_object('Moose::Meta::Class=HASH(0x4942ffc)', 'HASH(0x4db53ac)') called at C:\strawberry\perl\vendor\lib/Moose/Object.pm lin
e 25
#       Moose::Object::new('Madre::Sync::Model::padreDB', 'Madre::Sync', 'HASH(0x4b404ec)') called at generated method (unknown origin) line 4
#       Catalyst::Model::DBIC::Schema::new('Madre::Sync::Model::padreDB', 'Madre::Sync', 'HASH(0x4b404ec)') called at C:\strawberry\perl\vendor\lib/MooseX/
Traits/Pluggable.pm line 131
#       MooseX::Traits::Pluggable::new_with_traits('Madre::Sync::Model::padreDB', 'Madre::Sync') called at C:\strawberry\perl\vendor\lib/CatalystX/Componen
t/Traits.pm line 146
#       CatalystX::Component::Traits::COMPONENT('Madre::Sync::Model::padreDB', 'Madre::Sync', 'HASH(0x4c6b93c)') called at C:\strawberry\perl\vendor\lib/Cl
ass/MOP/Method/Wrapped.pm line 48
#       Class::MOP::Method::Wrapped::__ANON__[C:\strawberry\perl\vendor\lib/Class/MOP/M ethod/Wrapped.pm:49]('Madre::Sync::Model::padreDB', 'Madre::Sync', '
HASH(0x4c6b93c)') called at C:\strawberry\perl\vendor\lib/Class/MOP/Method/Wrapped.pm line 89
#       Catalyst::Model::DBIC::Schema::COMPONENT('Madre::Sync::Model::padreDB', 'Madre::Sync', 'HASH(0x4c6b93c)') called at C:\strawberry\perl\vendor\lib/C
atalyst.pm line 2502
#       eval {...} called at C:\strawberry\perl\vendor\lib/Catalyst.pm line 2502
#       Catalyst::setup_component('Madre::Sync', 'Madre::Sync::Model::padreDB') called at C:\strawberry\perl\vendor\lib/Catalyst.pm line 2416
#       Catalyst::setup_components('Madre::Sync') called at C:\strawberry\perl\vendor\lib/Class/MOP/Method/Wrapped.pm line 54
#       Class::MOP::Method::Wrapped::__ANON__[C:\strawberry\perl\vendor\lib/Class/MOP/M ethod/Wrapped.pm:64]('Madre::Sync') called at C:\strawberry\perl\ven
dor\lib/Class/MOP/Method/Wrapped.pm line 89
#       Madre::Sync::setup_components('Madre::Sync') called at C:\strawberry\perl\vendor\lib/Catalyst.pm line 1142
#       Catalyst::setup('Madre::Sync') called at blib\lib/Madre/Sync.pm line 62
#       require Madre/Sync.pm called at C:\strawberry\perl\vendor\lib/Class/MOP.pm line 114
#       Class::MOP::__ANON__[C:\strawberry\perl\vendor\lib/Class/MOP.pm:118]() called at C:\strawberry\perl\vendor\lib/Try/Tiny.pm line 74
#       eval {...} called at C:\strawberry\perl\vendor\lib/Try/Tiny.pm line 67
#       Try::Tiny::try('CODE(0x36d759c)', 'Try::Tiny::Catch=REF(0x33a9584)') called at C:\strawberry\perl\vendor\lib/Class/MOP.pm line 125
#       Class::MOP::load_first_existing_class('Madre::Sync') called at C:\strawberry\perl\vendor\lib/Class/MOP.pm line 137
#       Class::MOP::load_class('Madre::Sync') called at C:\strawberry\perl\vendor\lib/Catalyst/Test.pm line 24
#       Catalyst::Test::__ANON__[C:\strawberry\perl\vendor\lib/Catalyst/Test.pm:93]('Ca talyst::Test', 'all', 'HASH(0x36d768c)', 'HASH(0x25de3a4)') called a
t C:\strawberry\perl\vendor\lib/Sub/Exporter.pm line 493
#       Sub::Exporter::_expand_group('Catalyst::Test', 'HASH(0x36d4ce4)', 'ARRAY(0x36d4994)', 'HASH(0x25de3a4)', 'HASH(0x36d755c)', 'HASH(0x25de334)') call
ed at C:\strawberry\perl\vendor\lib/Sub/Exporter.pm line 424
#       Sub::Exporter::_expand_groups('Catalyst::Test', 'HASH(0x36d4ce4)', 'ARRAY(0x36d723c)', 'HASH(0x25de3a4)') called at C:\strawberry\perl\vendor\lib/S
ub/Exporter.pm line 742
#       Sub::Exporter::__ANON__[C:\strawberry\perl\vendor\lib/Sub/Exporter.pm:756]('Cat alyst::Test', '-all', 'HASH(0x36cc8d4)') called at C:\strawberry\per
l\vendor\lib/Catalyst/Test.pm line 112
#       Catalyst::Test::import('Catalyst::Test', 'Madre::Sync') called at (eval 11)[C:/strawberry/perl/lib/Test/More.pm:858] line 2
#       main::BEGIN() called at blib\lib/Madre/Sync.pm line 0
#       eval {...} called at blib\lib/Madre/Sync.pm line 0
#       eval 'package main;
# use Catalyst::Test @{$args[0]};
# 1;
#
# ;' called at C:/strawberry/perl/lib/Test/More.pm line 858
#       Test::More::_eval('package main;\x{a}use Catalyst::Test @{$args[0]};\x{a}1;\x{a}', 'ARRAY(0x2308474)') called at C:/strawberry/perl/lib/Test/More.p
m line 833
#       Test::More::use_ok('Catalyst::Test', 'Madre::Sync') called at t\01app.t line 7"Compilation failed in require at C:\strawberry\perl\vendor\lib/Class
/MOP.pm line 114.
#  at C:\strawberry\perl\vendor\lib/Class/MOP.pm line 121
#       Class::MOP::__ANON__[C:\strawberry\perl\vendor\lib/Class/MOP.pm:125]('Couldn\'t instantiate component "Madre::Sync::Model::padreDB"...') called at
C:\strawberry\perl\vendor\lib/Try/Tiny.pm line 98
#       Try::Tiny::try('CODE(0x36d759c)', 'Try::Tiny::Catch=REF(0x33a9584)') called at C:\strawberry\perl\vendor\lib/Class/MOP.pm line 125
#       Class::MOP::load_first_existing_class('Madre::Sync') called at C:\strawberry\perl\vendor\lib/Class/MOP.pm line 137
#       Class::MOP::load_class('Madre::Sync') called at C:\strawberry\perl\vendor\lib/Catalyst/Test.pm line 24
#       Catalyst::Test::__ANON__[C:\strawberry\perl\vendor\lib/Catalyst/Test.pm:93]('Ca talyst::Test', 'all', 'HASH(0x36d768c)', 'HASH(0x25de3a4)') called a
t C:\strawberry\perl\vendor\lib/Sub/Exporter.pm line 493
#       Sub::Exporter::_expand_group('Catalyst::Test', 'HASH(0x36d4ce4)', 'ARRAY(0x36d4994)', 'HASH(0x25de3a4)', 'HASH(0x36d755c)', 'HASH(0x25de334)') call
ed at C:\strawberry\perl\vendor\lib/Sub/Exporter.pm line 424
#       Sub::Exporter::_expand_groups('Catalyst::Test', 'HASH(0x36d4ce4)', 'ARRAY(0x36d723c)', 'HASH(0x25de3a4)') called at C:\strawberry\perl\vendor\lib/S
ub/Exporter.pm line 742
#       Sub::Exporter::__ANON__[C:\strawberry\perl\vendor\lib/Sub/Exporter.pm:756]('Cat alyst::Test', '-all', 'HASH(0x36cc8d4)') called at C:\strawberry\per
l\vendor\lib/Catalyst/Test.pm line 112
#       Catalyst::Test::import('Catalyst::Test', 'Madre::Sync') called at (eval 11)[C:/strawberry/perl/lib/Test/More.pm:858] line 2
#       main::BEGIN() called at C:\strawberry\perl\vendor\lib/Catalyst/Test.pm line 2
#       eval {...} called at C:\strawberry\perl\vendor\lib/Catalyst/Test.pm line 2
#       eval 'package main;
# use Catalyst::Test @{$args[0]};
# 1;
#
# ;' called at C:/strawberry/perl/lib/Test/More.pm line 858
#       Test::More::_eval('package main;\x{a}use Catalyst::Test @{$args[0]};\x{a}1;\x{a}', 'ARRAY(0x2308474)') called at C:/strawberry/perl/lib/Test/More.p
m line 833
#       Test::More::use_ok('Catalyst::Test', 'Madre::Sync') called at t\01app.t line 7
# BEGIN failed--compilation aborted at (eval 11)[C:/strawberry/perl/lib/Test/More.pm:858] line 2.

by Alias at July 29, 2010 01:23 PM

Jerome Quelin

perl's state in mandriva cooker

some time after mandriva 2010.1 has been released, i'm now pleased to report that perl has been updated to 5.12.1, all cpan modules are up-to-date (including padre 0.68) or bugs have been reported upstream... and parrot 2.6.0 is currently building.

the perl 5.12.0 - 5.12.1 upgrade was really smooth: no patch to rediff, reapply, etc. that's definitely a good thing for perl maintainers to have a stable series with only critical fixes going in. i've already said it, but thanks again to p5p!

by Jérôme Quelin (jquelin@gmail.com) at July 29, 2010 11:28 AM

July 24, 2010

Gábor Szabó

Happy 2nd birthday to Padre - Get on an IRC channel

The IRC redirector on the Padre website. Type in some username and select the channel.

If your perl related channel is missing from the list let us know on #padre irc.perl.org

I hope you'll come by the Padre channel and say happy birthday to the developers!

Direct link to the screencast

by Gabor Szabo at July 24, 2010 03:55 PM

Ahmad M. Zawawi

Padre's Second Birthday Party and Hackathon starts today

Adam Kennedy (Alias) wrote in his journal:
On the weekend of the 24th-25th of July we would like to invite all Padre developers, users, friends and well-wishers to join us for Padre's Second Birthday Party and Hackathon in the Padre IRC channel at irc://irc.perl.org/#padre or via the Mibbit Web Client."
Rakudo Star is going also to be released by Thursday July 29th. What exciting times! I think it is about time for me to finish my long to do list for Padre and Perl 6 support. See you at the Padre IRC channel #padre.

by Ahmad M. Zawawi (noreply@blogger.com) at July 24, 2010 09:20 AM

July 23, 2010

Adam Kennedy

A reminder - Padre Second Birthday Hackathon this weekend

This is just a quick reminder that this weekend is the Padre's second birthday party and hackathon.

If you are a Padre user, please drop in and say hello to the team. We'd love to hear how you are using Padre and where your main needs are for the next year.

If you are interested in trying out Padre for the first time, or trying your hand at improving it for the first time, it's a great time to get started because we'll have plenty of people around to provide guidance and advice.

Some of the plans for this weekend are to bring all the plugins up to date with the latest versions of the plugin API, to start the merge of the ConfigSync branch, and if we can, to start on the Madre server that will serve as the ConfigSync and Telemetry server for Padre.

I look forward to seeing you there!

by Alias at July 23, 2010 03:53 AM

July 10, 2010

Adam Kennedy

Padre Second Birthday Party 24th-25th of July

2 years ago this month, Gabor did the first Padre release.

The last 12 months has seen Padre mature from a high-end text editor to a low-end refactoring IDE. We've stolen a number of features from Ultraedit, Komodo and EPIC, and we've invented new features all of our own, making Padre a very fluid and natural place to write Perl in.

We've added support for Perl 6, Template Toolkit, remote file support, more languages, syntax checking, an interactive debugger, a regex editor, and our first half a dozen refactoring tools.

We've also greatly solidified the code. Window integration is now totally solid, we've added a resource locking API, a new filesystem API, a new search API, a new display API, rewritten the threading and background Task subsystem, heavily overhauled the Plugin Manager API and GUI, and added Advanced Preferences and the ability for advanced users to selective disable various Padre bloat/features.

The last couple of months have also seen great improvements in Padre's hackability as well. The new Task 2.0 API lets people write background logic and consume multiple cores of CPU without having to know how threading works, and the new wxFormBuilder plugin lets you build GUI code without having to know Wx (one of the biggest barriers to contributing to Padre).

On the weekend of the 24th-25th of July we would like to invite all Padre developers, users, friends and well-wishers to join us for Padre's Second Birthday Party and Hackathon in the Padre IRC channel at irc://irc.perl.org/#padre or via the Mibbit Web Client.

If you've always been curious about, or interested in hacking on, Padre we'll have a number of developers in channel to help you out.

Personally, I plan to debut the first public release of Padre::Plugin::FormBuilder, and to start ripping out all Padre's older fixed-size dialogs and replacing them with new shiny model-generated sizer-based dialogs that will work much better across all three operating systems.

If you'd like to help out in this effort, I'll be in channel most of the day on both days (Sydney timezone).

I look forward to seeing you all there.

by Alias at July 10, 2010 04:50 PM

July 08, 2010

Sebastian Willing

Unknown power

So, you’re using Perl? For web applications? You’re not alone, many people do the same, but…

no one knows!

So many people use Perl for so many web projects, but only very few people actually show or tell it.

We (the Padre IRC channel) shortly discovered that there are plenty more or less “official” icons and buttons for showing this to the world:

The Perl foundation (TPF) gives us

and  

And O’Reilly licensed some camels for free usage:

and    and   and  

(and some others)

All of them have their licenses but as a summary one could say that you could put them on your website if you

  • Run a non-commercial project (most but not all are also approved for commercial projects)
  • and make the graphic a link to http://www.perl.org (Perl foundation buttons)  or http://www.perl.com (O’Reilly buttons)

Please follow the links above and read the full license before using them.

Gabor Szabo colltected some Powered-by-Perl icons here but I don’t know about the sources an licensing. You might violate TPF, O’Reilly or others rights when using them, so add them on your own risk.

I like this one . If you got any rights on it, please tell be and I’ll remove it.

Why should you promote Perl?

Why are you using Perl?

It’s a great language but too few people are using it.

(Nearly) every PHP project is using “.php” – URLs which tell people: This (maybe great) site is running PHP!

But Perl based sites? They use mod_perl (which has no file extension by default) or CGI-scripts (which aren’t recognized as Perl scripts).

It would be great if you’ld add one of the buttons to your Perl projects. If you don’t want it on every page, simply add it to the about, imprint or contact page.

If you’re not allowed to add a button (maybe it’s not your project but you’re managing it), you might be allowed to add it to the Perl Foundation list of Perl users – it’s free and it’s free advertising for your company or project.

You don’t have any Perl based website?

But you might know someone who runs a Perl based project or website! Tell him (or her) to add a button or point her/him to this blog post.

by Sewi at July 08, 2010 04:06 PM

July 07, 2010

Claudio Ramirez

Fosdem 2010 Impressions

This year’s FOSDEM was great. Not only did we have a Perl stand, but we could also meet face to face with other Padre developers. Here follow some loose impressions of the weekend…

Hall of Distributions

Hacker Room

Open Solaris

Erik @ the Perl Stand (with a "tuit")

Perl/Padre developers Dave and Gabor

Catalan Perl Monger Alex (I forgot the name, please forgive me...)

O'Reilly

FSF Europe: respect!

BSDs

Gabor's CPAN talk

Salve's talk on Kaizendo.org

The Hat


Filed under: Misc, Perl Tagged: fosdem, Padre, Perl, photography

by claudio at July 07, 2010 06:51 PM

July 01, 2010

Adam Kennedy

The next challenge for Perl on Windows (et al)

Even at this early stage, before any actual installers have appeared, things are looking pretty good for Strawberry Professional Alpha 2.

Padre is starting to firm up as a usable editor, Frozen Bubble works quite well and is completely playable, and I think my wxFormBuilder work is coming along nicely (which bodes well for quickly and easily creating GUI apps in some Alpha 3...)

My biggest remaining concern at the moment though, is also one of the smallest and seemingly trivial issues.

Although we can much more easily build and install large, rich and good looking desktop applications there is still no way to launch these applications without resorting to the command line.

Any iconography that are filled into the start menu in Strawberry Professional will do so because Curtis has put them there himself.

A Perl installation, via the %Config information, lets an installer know where to put libraries, binaries, documentation etc. Shared files in the File::ShareDir model are really just a hack, putting them in an agreed location within lib.

File::HomeDir isn't any use to us either for this. It is designed to let programs deal with user-owned data at run-time, NOT with system integration at install time.

Without the ability to install programs in a way that desktop users can easily launch, our little nascent desktop revolution will never really be able to get up to speed.

Having a post-install step where you need to launch a Windows command line, and then run "padre --desktop" just to install a desktop icon is simply not good enough.

Likewise, having to run Frozen Bubble from the command line is silly as well.

So consider this a challenge to anyone out there that likes tackling tricky puzzles, to try and build a File::Launcher (or whatever you want to call it) that can locate install paths, and be integrated into module installers, so we can make proper use of the Start Menu, Desktop, Quick Launcher, and all the equivalent features on all three major desktop platforms (Windows, Mac, and FreeDesktop.org).

If you build it, Padre will use it.

by Alias at July 01, 2010 03:32 AM