Your browser (Internet Explorer 7 or lower) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.

X

s2member to WP Autoresponder v0.2 Released!

A new version of the s2member to WP Autoresponder integration plugin has been released.

What’s new?

The plugin uses the name of the actual membership levels as defined in the s2member plugin to show the membership levels to which a user should be subscribed. Previously it just used s2member level 0, s2member level 1 and so on. Also in this version is a fix that ensure that the plugin will work regardless of the name of the directory in which the plugin is placed.

Testing WP Autoresponder

Testing WP Autoresponder is one major challenge that I am dealing with right now. My first thought was to write unit tests but that wouldn’t be sufficient for ensuring that features always kept working. Seeing the scale and nature of problems I keep running into I’ve landed on writing automated tests.

Over the last few releases a lot changes were made. Somewhere along the way I seem to have made changes that have broken some crucial features. This happened despite the hours of testing  done following my careful crafting of the test cases to be run against the plugin. There always seems to be some peculiar condition that my tests keep missing so I am going with the one method that comes closest to real world usage – brute force.

I’ll be writing Selenium and command line scripts to stimulate real world usage to the best extent possible. I am still wrapping my head around the kind of scripts and the kind of integration i will have to do since I’ve never done this before! All of this is going to be a huge learning curve but I strongly believe this will help make sure that I can take the plugin forward instead of fighting fire constantly.

I could drop everything and start working on the numerous critical issues that are pending an assignment and reply over at GitHub. But that I am sure still won’t solve the real problem. I will be fixing the symptoms – the behavior of the plugin in specific conditions under which users seem to report problems. Not only does the automated scripts ensure proper functioning it will finally be a way to actually define the expected behavior of the plugin in a concrete format.

Currently there are major problems with - Blog categories and Autoresponder deliveries. Some users report that autoresponders deliver on alternate days, blog category subscribers do not receive all the emails categorized under the specific category.  While blog categories delivery will be fixed shortly, the delivery of autoresponders is more time-sensitive and needs some thorough testing that is very hard to do manually.

For now, an update is in the works that will provide a solution for blog category subscriptions. Stay tuned!

Too Much Plugin: Moving Forward

Many have told me that WP Autoresponder is enormous. It sometimes surprises me just how much code I wrote in so little time. It is so enormous that it is incredibly hard for me to make any change these days without breaking something somewhere.

There are just too many moving parts for it to be fully testable before very single release. That is why I am not making too many changes in each release. A little here and a little there and that’s all I will be doing in the coming releases.

One major problem I face with working on the plugin is managing to keep every single feature working. Most parts of the plugin have bugs. A lot of it was written with the intention of making the bare minimum. The bare minimum that does something. But somewhere along the way I got carried away. I wrote too much bare minimum. These days I keep running into some serious issues when trying to add a new feature or fix an existing one. It is a struggle to keep the most basic features running on all servers before each release.

I’ve decided that moving forward there will be little to no new features added to the plugin until all the existing critical problems are resolved. That’s it no more. I am committed to making this the best solution for most businesses but that cannot happen if I am not able to move swiftly in the future without some baggage of past mistakes pulling me back.

The plugin’s progress will be in the following order:

  • Basic background processing should start functioning again flawlessly (currently in progress): The most fundamental feature – email delivery has many issues – duplicate deliveries, lack of deliveries, complete stoppage of deliveries, among many other.
  • Refactor the custom fields interface to not use temporary tables: The custom fields in the plugin are currently being fetched by creating temporary tables and then doing a join on those temporary tables. This has massive issues when it comes to actually replacing custom fields place holders in outgoing email with their values for a particular subscriber.First off, it is a pain to use the custom field interface. Second, it often overloads the database server where it runs.
  • Complete rewrite of the subscriber management interface – The subscriber management interface does very little justice to the name it is assigned. Currently you can’t add new subscribers. Can’t subscribe existing ones to other newsletters/autoresponders/blog categories/the kitchen sink.
  • Improvement to the subscription form interface: The welcome email will be made optional, the selection of custom fields will be more usable.
  • Complete rewrite of the broadcast management interface: The user interface currently lies about things. When a broadcast has “been delivered”. It only means that it has been processed. Not that it has been delivered. It has been placed in queue. It has been delivered when the queue emails for that broadcast has finished. There is no way to stop a delivering broadcast. No way to see the delivery progress of a broadcast currently being delivered.
  • Post series overhaul: Make the whole interface a single page. It is so simple I don’t know why does it need to have so many pages.
I am just amazed at the pace at which I wrote as much code that does something on the very first run. Mostly anyway. Something I can’t do anymore for some reason. I delivered a (more than) minimum viable product so fast and didn’t get bogged down by standards and peer critique.
I wrote a minimum viable product that does something at the speed of light and got it out there. Delivered software. Something I struggle with today for the smallest of projects – ones I even get paid for. I was a true hacker! An innocent daring fireball of pure coding power. The problem: I feel stung by my earlier “mistakes”. I’ve been bombarded with support questions on problems in the UI lacking input validation or type checking or taking too much liberties afforded by PHP/Javascript and so on.
But this plugin can be made better in so many different ways:
  • The user interface of the plugin can be made to look more WordPress-y
  • The various forms in the plugin can be given nonces so that they are secure.
  • All the text in the plugin can be made translatable through a translation file. Something people have been asking for well over a year now.
  • The plugin’s code can be separated as models, views and controllers like I’ve been trying to for over 5 versions now.

What ’bout translation?

Most of the plugin will be rewritten completely. So translation will be partial in the beginning and will be complete nearing the end of the overhaul.

Plugin Dev: Actions And Filters

Many people have contacted me wanting to be able to customize the plugin on their client websites. A lot of designers and developers are starting to deploy this plugin in their clients’ servers.

But time and again a problem that has mired these deployments is the inability to upgrade to newer versions. Because the plugin version they deployed wasn’t extensible they edited the actual source code – adding their own bits and fixes. These changes would be lost in the upgrade to a new version.

A solution is here! Going forward, I will refactor the application to work using the WordPress Actions and Filters API. Any new feature that is written/rewritten will have actions and filters wherever applicable.

So if you must choose to drill a hole in the pipe that takes emails to the delivery queue and suck out the bad ones, you will be able to do that soon!

A new documentation article that will list the on-going addition of actions and filters has been added to the developers’ documentation here. Check it out!

WP Autoresponder v5.2.6 Released!

A new version of WP Autoresponder has been released. Version 5.2.6 is available for  download here.

What’s new in this release?

  • Developers’ API: Some developer API actions have been added so that other WordPress developers can write plugins that work with or extend WP Autoresponder. Some actions and filters have been added to the plugin. They will be documented on this site shortly.
  • Multiple Deliveries Fixed: Having more than 2000-4000 blog subscribers caused the plugin to start sending repeated copies of the same email again and again. This issue has been fixed.
  • Blog categories subscriptions separated : A separate background process has been created that will deliver blog categories. There were major issues in previous versions wherein blog deliveries will not happen without atleast one subscriber to receive all posts published on the blog.
  • Deleted emails will not be delivered: Previous versions suffered the problem of having deleted emails continue to deliver to subscribers after they were placed in queue.
  • Deletion of Newsletters - Now you can delete newsletters using the delete button placed against the Newsletter name in the Newsletters section.
  • Revamped Export Feature - The previous versions’ export feature had a tendency to crash the database server or hang up indefinitely when an export is performed on a newsletter with more than 5-6 custom fields. This version introduces an export feature that will work regardless of the number of custom fields.
This plugin still has a LONG way to go. Please keep updating the plugin and consider supporting development by making a donation!

WP Autoresponder Now Hosted At GitHub.Com

For the longest time I had a lot of trouble keeping track of the bugs in the plugin. WordPress.org at one time provided free hosting and Trac access to all plugins. But that was a long time ago. The plugin repository’s Trac used for issue tracking is now defunct.

New accounts are no longer being issued. It is also incredibly hard to create an account there – you have to first create a WordPress.org account and then use the same credential to log in again just to post an issue at the plugin repository.

Subversion – the source code management system used by WordPress.org, I find, is very difficult to use. There is also this huge mental block surrounding using the repository given one mistake could mean tens of thousands of websites using WP Autoresponder will be affected.

GitHub was perfect for these needs. It has a central issue tracking and source code repository. Anyone can fork, view and open issues all at the same place.

If you face any issue with WP Autoresponder. Please feel free to report an issue in at this page.

Developer Contributions Are Welcome

If you have found an issue, please feel free to fork it and go to work on the issue. I am open to bug fixes and am very much able to take patches. If your fork fixes a major issue in the plugin, I will gladly merge it into the main source.