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 http://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