Below is a transcript of the PMPro Dev Chat held today. Lots of good ideas on how to keep track of addon updates and generally how to keep in touch with the PMPro developer community. We will have another chat next week. I’ll post to the blog details when it’s scheduled. Thanks to everyone who participated today.



jasoncoleman [1:57 PM]
Hello!

jasoncoleman [1:57 PM]
Starting soon. Thanks for coming

michaelcummings [1:57 PM]
:thumbsup:

tubiz [1:57 PM]
Hi everyone

reportica [1:57 PM]
hi

squarelines [1:57 PM]
Good morning! (At least here in PDT.)

jasoncoleman [1:58 PM]
Any suggestions for a soundtrack to this chat?

frederick [1:58 PM]
Mission Impossible theme?

jasoncoleman [1:59 PM]
Hmmm

jasoncoleman [1:59 PM]
Alabama Shakes – Sound and Color? https://open.spotify.com/album/2IVZPDXb7LFbyukqaoWpYR Saw it in new releases.
Spotify
Alabama Shakes – 12. Over My Head

jasoncoleman [1:59 PM]
on spotity

jasoncoleman [1:59 PM]
nifty

michaelcummings [1:59 PM]
its a good album

frederick [1:59 PM]
Excellent.

jasoncoleman [2:00 PM]
Didn’t know there would be an embed like that. Cool

jasoncoleman [2:00 PM]
We can get into things slowly. Does anyone have a topic they would like to address today?

reportica [2:02 PM]
process keeping track up dates and rolling them out to clients

jasoncoleman [2:03 PM]
Specifically for GitHub plugins?

squarelines [2:03 PM]
Anything on the roadmap affecting the roles and capabilities? Adding more, lower-level ones, etc?

jasoncoleman [2:04 PM]
Almost 5min in. Can everyone in the room say “Hi, my name is ____” and maybe a sentence about who/what and we’ll consider us started?

reportica [2:04 PM]
sort of, you shouldn’t have to give us a github class, but my changes vs. your changes, I make them all again every time you update

jasoncoleman [2:04 PM]
Hi, I’m Jason Coleman. Lead Developer of Paid Memberships Pro.

squarelines [2:04 PM]
(I’m going to be digging into those over the next couple of weeks for a client, so it’d be great to get a heads-up if there’s stuff coming.)

jasoncoleman [2:04 PM]
(Taking notes on topics and will try to get to them. Let me know later if I miss anything.)

camaropilot [2:05 PM]
Hi, I’m Andy Daupert, web developer/owner RADTechWeb.com

tubiz [2:05 PM]
Hi, my name is Tunbosun. Am a WordPress developer from Nigeria.

squarelines [2:05 PM]
Hi, I’m Aaron Director from Square Lines LLC www.square-lines.com

reportica [2:05 PM]
My name is Sheryl Coe and I am just learning development. Basically, I’m an implementer :simple_smile:

frederick [2:05 PM]
Hi, I’m Frederick Van Johnson – Founder of the ThisWeekinPhoto.com photography network

wpbackoffice [2:05 PM]
Hi, I’m Mike Donaghy and I am a web developer / owner of wpbackoffice.com

michaelcummings [2:06 PM]
Hi I’m Michael from Austin TX. I run a small consultancy

jasoncoleman [2:07 PM]
Awesome. I don’t have any specific agenda, so I’ll dive into those topics that came up and we’ll freestyle from there.

jasoncoleman [2:07 PM]
> process keeping track up dates and rolling them out to clients

jasoncoleman [2:07 PM]
> but my changes vs. your changes, I make them all again every time you update

jasoncoleman [2:07 PM]
@reportica what kinds of changes are you asking about?

reportica [2:07 PM]
if that’s too basic I can take it to the forums

jasoncoleman [2:08 PM]
I know that something on my mind is that some of the more popular plugins we have on github, but not in the WP.org repository (like PMPro register helper) get updated and we don’t have a good way (even blog posts) for updating people RE those updates.

jasoncoleman [2:08 PM]
If it’s something specific, we can follow up in forums, but I think the general question of how to manage addon updates is good for this group.

tubiz [2:08 PM]
@jasoncoleman: why dont ou want to submit the plugins to the WP.org repository

reportica [2:08 PM]
when I customize your plugins for a client, I don’t know any other way to reconcile other than, 1) you update 2) i make changes again and upload to client

reportica [2:09 PM]
these are client specific settings

michaelcummings [2:09 PM]
@tubiz: there are probably some aspects of them that don’t fit the public requirments

reportica [2:09 PM]
sure

jasoncoleman [2:09 PM]
If you are editing a plugin and have to redo work/etc when that plugin gets updated… then we should figure out a way for you to either (a) work your updates into the plugin itself or (b) figure out how to get your edits in using custom hooks/filters

(snipped)

jasoncoleman [2:09 PM]
NP. FYI I have been bad about this in the past, but I want to have these dev chats weekly.

michaelcummings [2:09 PM]
is there no forking and merging strategy on the github projects yet?

tubiz [2:10 PM]
@michaelcummings I get your point (edited)

michaelcummings [2:10 PM]
I must admit I just started using PMP 24 hours ago… switched over from Membermouse

jasoncoleman [2:10 PM]
And also want to have a more hands on type sessions every week too. Something like “how to use hooks and filters with PMPro so you don’t lose changes in updates” would be a really important one to do

reportica [2:10 PM]
I understand what you are saying but I need an example, I have read a lot of documentation but I’m short on practical experience

squarelines [2:10 PM]
It’s definitely a hurdle we all faced at one time or another in learning the hooks/filters available in PMPro!

jasoncoleman [2:10 PM]
On GitHub, you can open pull requests agains the dev branch of the core plugin or master branch of the addons (don’t typically have multiple branches for them)

jasoncoleman [2:10 PM]
and we will review and merge when it makese sense

frederick [2:11 PM]
I lean more towards the non-developer side of things. I’d love a non-dev area to download no-coding-req, tested plug-ins and add-ons.

reportica [2:11 PM]
ok fine to save that for later, current system works, but I know not the smartest way to work

jasoncoleman [2:11 PM]
ideally if you are heavily involved in an addon, I’d like to get other developers to take “ownership” of them.

michaelcummings [2:11 PM]
Why do you not opensource the documentation as well. Pull requests into the docs would help everyone stay up to date on hooks/filters

jasoncoleman [2:11 PM]
Good idea.

jasoncoleman [2:11 PM]
Know of a good WP-related solution?

jasoncoleman [2:11 PM]
Would take work to add functionality around our doc pages.

michaelcummings [2:11 PM]
Just do it on github…

jasoncoleman [2:12 PM]
I saw a nifty presentation once around syncing github docs with WP pages.

michaelcummings [2:12 PM]
yep.

michaelcummings [2:12 PM]
you can do that

michaelcummings [2:12 PM]
they you would just git push your changes and it should update your wppages

jasoncoleman [2:12 PM]
do you have an example of an OSS project that does this well?

jasoncoleman [2:12 PM]
so we can copy some things they do

michaelcummings [2:12 PM]
I dont off the top of my head

michaelcummings [2:12 PM]
but most people are not gpl either

jasoncoleman [2:12 PM]
that would be nify.

jasoncoleman [2:12 PM]
ty

jasoncoleman [2:13 PM]
Open to volunteers that want to work on it. Can pay too. :simple_smile:

michaelcummings [2:13 PM]
I could possibly help in the near future with that… not this month though

tubiz [2:13 PM]
That will be a good idea as regards documentation. Will be glad to work on it as well

jasoncoleman [2:13 PM]
RE an example of using hooks and filters, there are some examples here https://www.paidmembershipspro.com/hooks-filters/

Paid Memberships Pro
Hooks and Filters | Paid Memberships Pro
Here is a list of the various hooks (do_action() and filters (apply_filters()) added or used by Paid Memberships Pro, organized alphabetically. You may bro

michaelcummings [2:13 PM]
how many support staff does PMP have?

jasoncoleman [2:14 PM]
and some reading on doing this generally in WP here https://codex.wordpress.org/Plugin_API

jasoncoleman [2:14 PM]
me and one part time (Jessica)

jasoncoleman [2:14 PM]
we’ve had 2-3 in the past at certain times

michaelcummings [2:14 PM]
does jessica have enough bandwidth to convert the current documentation into Markdown? Obviously this is not immediate…

jasoncoleman [2:15 PM]
RE plugins for non-developers, another good idea. In general, I expect people using Paid Memberships Pro in a serious way to have a developer involved at some point.

reportica [2:15 PM]
I have feedback for you in terms of who I recommend this to. I think your plugin is the best in terms of functionality, but the support is not for non-coders. In some cases, this is good, I made my first plugin with your guidance. It’s good.

jasoncoleman [2:15 PM]
we take the approach of “have a developer write a few lines of code” vs “have a non-developer tweak a few tabs of settings”

michaelcummings [2:15 PM]
@jasoncoleman: the reason I’m here is because im in the process of installing and using PMP for a client right now

reportica [2:15 PM]
so I guess I’m right

jasoncoleman [2:15 PM]
but lots of people use PMPro and addons without a developer. Would be neat to maybe have some kind of list of more user-friendly features… or like a rating system on addons

reportica [2:15 PM]
we’ll the few lines of code is do-able and well-documented

jasoncoleman [2:16 PM]
in general, the ones on WordPress.org have been more fully baked for ease of use

michaelcummings [2:16 PM]
one user friendly method you need for sure, that I’ve run into is the need to import users from other systems. I know you have a CSV importer, but it is piggybacking off of something else.

jasoncoleman [2:16 PM]
I can see if Jess or someone else can do something like that.

jasoncoleman [2:16 PM]
Might be hard to do for some of the docs

reportica [2:16 PM]
I have found the only to explain to nonwp people what you can and cannot do is case studies, lists of features make their eyes glaze over

michaelcummings [2:16 PM]
Would like to see that be a more robust solution as it will help bring people over to PMP from other solutions

jasoncoleman [2:17 PM]
Good ideas Re the importer.

reportica [2:17 PM]
import from mailchimp works fine with your instructions

michaelcummings [2:17 PM]
I agree with @reportica. People want to know if its going to solve their problems

jasoncoleman [2:17 PM]
Couple things.

jasoncoleman [2:17 PM]
(1) I’m actually making some improvements to the Import Users From CSV plugin so you can import large sheets with AJAX.

reportica [2:17 PM]
thx @michaelcummings

jasoncoleman [2:18 PM]
And it would be possible to build importers for specific other membership plugins since we can get their export formats. I’m kind of worried about maintaining it.

jasoncoleman [2:18 PM]
But have written things that move column names around and tweak data/etc for specific cases that could be used.

michaelcummings [2:18 PM]
@jasoncoleman: are you going to be able to do column matching in the WP backend? Thats the ultimate user friendly function so that people dont have to format all the data in a special way before import.

jasoncoleman [2:18 PM]
another goal I have is to basically be able to accept the exact output from the members list export as an import.

jasoncoleman [2:18 PM]
tricky

squarelines [2:18 PM]
Any capability in what you’ve written so far to import custom fields per member, too?

reportica [2:18 PM]
can I ask something? does everyone here use pmpro alone or like me offer other solutions as well?

reportica [2:19 PM]
other membership solutions

jasoncoleman [2:19 PM]
@squarelines: The import users from csv plugin will import any column as user meta. It uses the column heading as the meta key (as long as it’s not a user specific field already like user_email)

michaelcummings [2:19 PM]
@reportica: I give users the simpliest solution to solve their problem…

squarelines [2:19 PM]
Perfect. Thanks – hadn’t looked into it before, and that’ll come in handy on an upcoming project.

jasoncoleman [2:20 PM]
Cases studies is another good idea that I think we’ll be doing more of on our site.

jasoncoleman [2:20 PM]
Someone asked RE roles and capabilities earlier.

jasoncoleman [2:20 PM]
Feel free to elaborate.

jasoncoleman [2:21 PM]
In the last update, I fixed some typos in our cap names (e.g. pmpro_memberslistcsv) hope it didn’t mess anyone else up.

jasoncoleman [2:21 PM]
I had to fix a few client sites.

squarelines [2:21 PM]
That was me. A bit of a selfish request – I may need to get more deep on defining some capabilities for a client who needs a new user type developed (with some admin features but not all), and I’m loathe to touch base code. So was checking on the roadmap.

jasoncoleman [2:21 PM]
Do you mean caps like that? Let me know suggestions and we can add them easily enough.

jasoncoleman [2:22 PM]
Can look into this

jasoncoleman [2:22 PM]
https://github.com/strangerstudios/pmpro-membership-manager-role

GitHub
strangerstudios/pmpro-membership-manager-role
pmpro-membership-manager-role – Adds a Membership Manager role to WordPress with access to PMPro settings and reports.

jasoncoleman [2:22 PM]
Should be able to use that as a guideline

squarelines [2:22 PM]
OK. I appreciate your willingness to look at that – will follow up when I have more details. Yeah, looked at that, and may be able to adapt some of it (but lamentably, not a ton).

erik_bertrand [2:23 PM]
joined #development. Also, @nozzljohn joined.

jasoncoleman [2:23 PM]
You can also use plugins like Members or Role Scoper to tweak roles and assign roles based on membership level if you have to. Have code for that. Just post to forums and we’ll point you to it.

squarelines [2:24 PM]
Sure – we work with Role Scoper a fair amount with folks, but I’m concerned it’s a shotgun for a flyswatter job. I’ll head down the path and holler if it gets fraught with demons. :simple_smile:

jasoncoleman [2:25 PM]
some other topics on my mind: (1) how can we use Slack to stay connected? (2) Other things we can do for developers and vice versa? (3) Anyone interested in getting leads from us for development projects and how to facilitate that.

jasoncoleman [2:26 PM]
RE Slack. I realize now that the premium levels are super expensive for open ended groups like this.l

reportica [2:26 PM]
chats like this

jasoncoleman [2:26 PM]
So y’all are full team members. Use your responsibility well.

jasoncoleman [2:26 PM]
I plan to copy/paste the history of the chats into our blog

tubiz [2:26 PM]
As regards using Slack for staying connected. The best thing will be to leave the group open for conversation at any point in time.

jasoncoleman [2:27 PM]
I agree @tubiz

tubiz [2:27 PM]
As regards getting lead for development work I filled the Consultant form last year and havent gotten a reply back

jasoncoleman [2:27 PM]
I’m worried a little about getting support requests in here and competing with the member forum, but I think we just police it well

jasoncoleman [2:27 PM]
people are understanding

jasoncoleman [2:27 PM]
thanks for the heads up tubiz, I’ll try to post it right now

tubiz [2:27 PM]
Just let people know that it strictly for developers conversation only

tubiz [2:28 PM]
At least you can set a message in the channel

jasoncoleman [2:28 PM]
tubiz you reached out last chat about being listed. sorry for the wait

tubiz [2:29 PM]
Yes I did.

tubiz [2:30 PM]
@jasoncoleman: hope the developer chat will now be held weekly

jasoncoleman [2:30 PM]
@tubiz can you private message me the name/email you used to submit?

jasoncoleman [2:31 PM]
Me too. Committed to it. We dropped some clients to free up time.

michaelcummings [2:32 PM]
@channel: for those of you who do not already use the Slack desktop or mobile apps, I highly suggest it. It allows you to stay logged into multiple teams at all times. I’m currently logged in and conversating in 5 different places

erik_bertrand [2:32 PM]
Came in late… I’m Erik Bertrand, developer at Dyn (http://dyn.com) and also do freelance WP development on the side, most recently http://nhmade.com using PMPro.
Dyn is a cloud-based Internet Performance company. Dyn helps companies monitor, control, and optimize online infrastructure using a best-in-class anycast DNS network and peerless network performance monitoring to provide managed DNS services, web traffic load balancing, uptime monitoring, domain registration, and transactional email delivery.

erik_bertrand [2:32 PM]
We use Slack at Dyn, so that’ll help, thanks @michaelcummings.

jasoncoleman [2:32 PM]
Thanks for saying hi.

jasoncoleman [2:34 PM]
I miss any topics?

jasoncoleman [2:35 PM]
I wonder if we could talk more about ways to manage addon updates.

jasoncoleman [2:35 PM]
Maybe I can make a category on the blog that autoposts updates from Git/GitHub

jasoncoleman [2:35 PM]
hmmm or we just need to expedite getting some plugins into the WP.org repository.

jasoncoleman [2:36 PM]
Or weekly updates RE addons.

michaelcummings [2:36 PM]
How hard will it be to implement a plugin registration system? It should be easy enough to hook into the master branches of the plugins to ping the version number back to the WP installed version to check and make sure its up to date

jasoncoleman [2:36 PM]
open to using a clean library to upgrade in WP from GitHub as well. I think those solutions are getting better.

jasoncoleman [2:37 PM]
hmm

jasoncoleman [2:37 PM]
So just a bit of code in PMPro that would check the version numbers of the addons

michaelcummings [2:37 PM]
yeah…

jasoncoleman [2:37 PM]
and maybe alert when they are out of date?

jasoncoleman [2:37 PM]
I like it

michaelcummings [2:37 PM]
its easy enough to check if a plugin is installed

michaelcummings [2:37 PM]
so in PMP you have a function Check_addons()

michaelcummings [2:37 PM]
and run it once a day

jasoncoleman [2:38 PM]
The stuff in the addons folder gets out of date (https://github.com/strangerstudios/paid-memberships-pro/tree/dev/adminpages/addons) between versions and is a hassle to update.

GitHub
strangerstudios/paid-memberships-pro
paid-memberships-pro – Membership Plugin for WordPress

jasoncoleman [2:38 PM]
we have a spreadsheet to keep track of addon versions internall, but could make it something more formal.

reportica [2:38 PM]
me too that’s sad, thought I was lame :simple_smile:

jasoncoleman [2:38 PM]
step 1 would be to update that addons page to get addon version numbers from our server behind the scenes.

jasoncoleman [2:38 PM]
to get up to date versions

jasoncoleman [2:39 PM]
then show warnings if a plugin is installed (the addons page has code to check for functions or something to detect the plugin) and out of date.

jasoncoleman [2:39 PM]
I like it

reportica [2:39 PM]
can you also have separate chats about the book: https://library.oreilly.com/book/0636920029380/building-web-apps-with-wordpress/toc.xhtml?

jasoncoleman [2:39 PM]
FYI I am setting up a license/notification server to handle API-like traffic like that.

jasoncoleman [2:39 PM]
can add a version check service there

jasoncoleman [2:40 PM]
RE the book maybe. I neglect the book a lot (no marketing etc) and it’s hard to compete with PMPro for my time.

jasoncoleman [2:40 PM]
but possibly

jasoncoleman [2:40 PM]
I’m speaking at WordCamp Miami next month if you can make it. :simple_smile:

reportica [2:41 PM]
Maybe if it was February I would!

jasoncoleman [2:42 PM]
I like those ideas around the addons, a good first step.

jasoncoleman [2:43 PM]
I’d like to screenshare when I work on some stuff like that if folks are interested.

michaelcummings [2:43 PM]
The difficult thing I think you’re going to run into with all the plugins is managing to make sure that each version works with varying versions of other plugins and PMP core

jasoncoleman [2:43 PM]
Will advertise on the blog and here.

michaelcummings [2:43 PM]
k

jasoncoleman [2:44 PM]
Yeah. There are conflicts between the addons. Some are obvious (can’t hide and show addresses at the same time) but a lot just because the addons aren’t developed to handle all combos and edge cases.

jasoncoleman [2:44 PM]
we kind of just address them as they come up via the forums.

michaelcummings [2:45 PM]
There is a reason that the majority of other projects like this hold everything in core…. its easier for bug testing. You exponentially increase the number possibly error points by separating it out and developing it separately.

michaelcummings [2:45 PM]
I like this method as it allows me to only use the things I need, and allows others to plugin as well

michaelcummings [2:45 PM]
but it comes with its downsides

reportica [2:45 PM]
For screenshare consider screenhero owned by slack

jasoncoleman [2:46 PM]
yeah. we avoid the bugs for people who aren’t interested in certain features when we modularize them.

jasoncoleman [2:46 PM]
try to use an 80/20 rule type reasoning when things come up

michaelcummings [2:46 PM]
:thumbsup:

jasoncoleman [2:46 PM]
also have some things that start as plugins but might get into core at some point (like the payflow recurring orders addon)

jasoncoleman [2:46 PM]
I’ll look into it.

michaelcummings [2:46 PM]
thats a good one to go to core

jasoncoleman [2:46 PM]
screenhero

jasoncoleman [2:47 PM]
yeah. future gateways will be in plugins. but we’ll need to maintain the originals in core. kind of funny.

michaelcummings [2:47 PM]
when you implement your API plugin checker… you’ll be able to keep stats on what people use which plugins

michaelcummings [2:47 PM]
you can see what is popular

jasoncoleman [2:47 PM]
good point

michaelcummings [2:47 PM]
then you can roll only the most popluar functions into core

jasoncoleman [2:47 PM]
good data to have.

jasoncoleman [2:48 PM]
I’d like to create an opt in system to collect more usage data. addons, # of orders, # of levels, gateways, etc.

michaelcummings [2:48 PM]
You’ll need to force registration for that wouldn’t you?

jasoncoleman [2:49 PM]
wrapping up soon. just going to ask again if anyone has questions we didn’t touch on.

jasoncoleman [2:49 PM]
Force PMPro registration?

michaelcummings [2:49 PM]
right now you know how many people have downloaded it from the Plugin Directory, but you don’t know how many are actively using it do you?

jasoncoleman [2:49 PM]
I figured we would encode the domain of the site track things.

jasoncoleman [2:49 PM]
The WP repository shows an estimate of active users now

jasoncoleman [2:49 PM]
says 30k+

michaelcummings [2:49 PM]
gotcha

jasoncoleman [2:49 PM]
active plugin installs

jasoncoleman [2:50 PM]
there is a thing kind of phoning home already. a script to check for “notifications” from us.

michaelcummings [2:50 PM]
I’m good on questions right now. I’ve got to get to importing my clients 5000 members into PMP today…

jasoncoleman [2:50 PM]
we use it to show critical updates.

jasoncoleman [2:50 PM]
could use that to count.

jasoncoleman [2:50 PM]
let me get you the current import users from csv with AJAX for that

jasoncoleman [2:50 PM]
it needs work but will help you

michaelcummings [2:51 PM]
awesome

jasoncoleman [2:51 PM]
Hmmm. I’ll have a link in a moment.

michaelcummings [2:51 PM]
k

jasoncoleman [2:52 PM]
Otherwise, I’m going to wrap up. Please feel free to lurk on this channel. I will for a bit.

jasoncoleman [2:52 PM]
We’ll consider the “dev chat” officially done soon.

jasoncoleman [2:52 PM]
I’ll copy/paste it to the blog.

nozzljohn [2:53 PM]
Thanks for the copy/paste … I was a latecomer.

jasoncoleman [2:54 PM]
Hi, John!

jasoncoleman [2:56 PM]
https://github.com/strangerstudios/import-users-from-csv

GitHub
strangerstudios/import-users-from-csv
import-users-from-csv – WordPress plugin – Import users from a CSV file into WordPress

jasoncoleman [2:56 PM]
download the zip there

jasoncoleman [2:56 PM]
it adds an option to “use AJAX” when importing. then keeps a copy of the csv file in the uploads folder.

jasoncoleman [2:57 PM]
and redirects to a page that loads 20 (I think) at a time via AJAX

jasoncoleman [2:57 PM]
when it’s done, it tries to clean itself up

michaelcummings [2:57 PM]
thanks @jasoncoleman, I’ll check it out in an hour or so

reportica [2:57 PM]
thanks

jasoncoleman [2:57 PM]
Need to make it a bit more air tight and can show more stats (like % of rows completed) and tweak the number per time, but it will save you a lot of time

michaelcummings [2:57 PM]
so this will eliminate the failed script execution time problem I assume?

jasoncoleman [2:57 PM]
yeah

michaelcummings [2:57 PM]
:thumbsup:

jasoncoleman [2:58 PM]
this version requires that transients are reliable on your host

jasoncoleman [2:58 PM]
should be

jasoncoleman [2:58 PM]
but some setups clear the memory transients are stored in/etc.

motti [3:00 PM]
joined #development


Leave a Reply

Your email address will not be published. Required fields are marked *