 Well, welcome everyone to WordCamp Hamilton 2018. I'm Brian Hogg for those that don't know me. And this talk will be on submitting, maintaining, and growing a plugin on wordpress.org. There we go. So definitely encourage to ask questions. It's first talk of the morning, so I may forget what I said 10 minutes ago. So definitely, if you have a question, as I'm going along, much better, I think, to my answer might be, hey, I'm going to get to that in two slides. But at least if it's fresh on your brain, ask the question, and then we'll try and answer it when we are going along. So I've got a few plugins, a couple on, or three, I believe now, on the wordpress.org, some courses as well, teaching people right now on development and launching and growing plugins, both free and paid. I've got a whole blog thing there. And I used to organize this conference. And so this is really neat to be coming and speaking at the conference and just showing up. And everything's already done. So I'd love to know who you guys are. So just kind of a quick show of hands. Like, who has created a plugin even, but not necessarily released it, but just created a plugin, even a small one for a client project? It could just be a couple lines of code or whatever. Perfect. And then who right now has a plugin release on wordpress.org already? So a handful. Cool. Good. Sweet. So for those who haven't created a plugin, I'm not going to be going through how to code a plugin during this. But hopefully you'll still be able to take away and have things in the back of your mind when you're coding some for a client. You're like, oh, OK. Yeah, what would be involved in actually putting this out there for everyone to use and not just the client who I'm creating it for? And yeah, so we'll go from there. So a quick story of the first plugin that I created and released myself on wordpress.org was actually right here in Hamilton at the Winking Judge. A little hard to see. It's kind of a dark, dingy upstairs up there. But essentially, the plugin was for sending, helping to send newsletters. So softwarehamilton.com was kind of promoting, doing a really good job promoting events here in Hamilton. But sometimes the dates would be wrong. And they kind of put that our event was happening Wednesday at 2 PM instead of Saturday 2 PM or something like that. And we're like, oh, are you doing this manually? And they're like, yeah, I'm like, oh, maybe we can code something up quick to do it. So an hour or two with a beer or two in that chair coded the first version of that plugin just for their specific calendar that they were using, which actually doesn't even exist anymore. And apparently, this is kind of, and we got it working. And we're able to use it pretty quickly after. But apparently, this is kind of a startup hub because on this couch, three people built an app and got it working while people drunkenly threw darts above their head. So that's like extreme programming to like a next level. But yeah, so we totally got it working. And I waited to publicly release it until I sobered up because you shouldn't drink and launch. That's kind of an important thing. But yeah, I mean, it definitely had some hurdles to think about as I kind of went through and releasing it and maintaining it. So that's what I'm going to be going through today. So the first thing is obviously to get the plugin ready to submit. And the very first thing you need to do is that you don't need to have in there to have a working plugin is adding a readme.txt file, which is literally a readme.txt file that you put inside your plugin folder. So this is an example, obviously hard to read, but I'll go through what's in it. But it's literally a plain text file. And on WordPress.org, you can just Google like WordPress.readme.txt example and find it. But it contains things like a short and long description. So when you're actually searching for a plugin, when you go to plugins add new and you type in a plugin name, there's kind of that short description. So that's what you put in there. The long description. So if you click on like more info, it can be literally as long as you want. I think it put right in the description, infinite length. So some people use that as a very, very long description there. You can have tags or keywords. I don't know if you remember back in the day, like the meta keywords for like a website which aren't really looked at anymore. You can totally add that in there as well. You can add in any installation notes. Most often it's just go to plugins add new, click activate install. Or if people actually download the zip, right? Upload the zip. But if you have any special installation notes in there, you can put that in that section. You can have frequently asked questions, which in the new design actually looks quite good. So you can have a question and then an answer and it's like the accordion style. So you click on it and it'll like expand. And so you can put any kind of frequently asked questions for your plugin in there. People can see it. Reference the screenshots, which I'll go through in a bit, but basically a description of any screenshots you add to your plugin. And then the license, which I'll go through a bit as well. But basically that it needs to be a GPL. But you specify exactly which license you have in there. And the change lock. So anytime you make a change, you can also put in the readme.txt file description of what you changed, which everyone reads before clicking update now. But if they do, they click on it, they can actually see exactly what you changed and whether they should upgrade or not. So some tips on this. Do not spam the tags. So maybe tempting that you're like, well, these 500 keywords are totally relevant to my plugin. Don't do it. You're limited to about 12 before they start to kind of flag you and they can either deny you're being in the repo at all or take you out if you like add it later. So yeah, definitely you really don't need more than 12 plugins at all. And you can kind of look at, and they basically think that you're trying to gain the system if you have more than that. Look at other plugin readme files, right? So you can go search for a plugin, download it, grab this zip file, open up the readme.txt file and just see what that format is. And even copy and paste and use it as kind of a base for yours. So that gives you some ideas of some other sections that you might not have mentioned and what tags and stuff that they're using if it's a similar plugin to yours. Validate the file before you submit. So there's this kind of WordPress.org plugin validator so you can either put in the location of readme or just copy and paste it into that box, hit validate and it'll tell you if there's any errors. So just make sure that you do that first. So WordPress.org, it's free for you to use. It's free for anyone to have a plugin hosted there. But because of that, it's not something you own and there are obviously rules they need to follow if you're gonna have a plugin listed in there. So here's some of them. So as I alluded to, your plugin needs to be 100% GPL compatible. So there are other licenses that GPL, they're still GPL compatible and are still open source enough and have no, don't have any restrictions that would prevent it from being GPL. But this doesn't just include the PHP code of your plugin. It also includes like any images, any CSS, any JavaScript libraries that you're adding that you're including within your plugin all have to be GPL compatible. And this isn't necessarily the case if you're creating a plugin for your client. So if you are creating one, you have a choice between a couple libraries and you think this might be a plugin that you wanna release later, definitely consider what license that library has and make sure that it's one that is GPL compatible. So no tracking without explicit consent. So you can't like add any kind of tracking code and this could be something simple like having an image that is being pulled from your website, right? So then you can tell where that image is being pulled from and you can see what other sites are using your plugin. You think, oh, that's kind of public information, whatever. But no, you can't have any of that, any kind of tracking at all and you really shouldn't be pulling stuff from your own website inside your plugin or any external spot if you can because then that creates a potential for your plugin to break that site if that other site goes down. But essentially you can track stuff and there are plugins like Wisdom plugin, Freemius Insights is another plugin slash service that you can use to like track what version of WordPress are they using? What's the URL of the site? Like what PHP version are they using? You can track all that but you have to ask them and they have to explicitly say yep and then consent to it that way. So no credits, so similar to the tracking you can't have anything show up on the front end of the site that says like powered by and then your plugin name without again them approving it. You can though have links within the back end of the site like on your settings page and stuff that say like hey this is created by me like check go here for more info or for tips or something. You can totally do that on the back end of the site you just can't do it on the front end without asking them first. So no nags or nondismissable alerts if you've seen plugins like this where they just create a nag at the top and you can't get rid of it and there's no way to click it away so you can have alerts and it's kind of nice where like after maybe they use your plugin for a while you can ask them to leave a review or something but it has to be you know not super annoying and consistent and it has to be something that can just hit X or dismiss and get rid of quickly. So you can't have it where they can't get rid of it all. Nothing illegal. This kind of goes without saying but yeah I really did consider having a you know a Bitcoin mining plugin that you know you just have out there for like a month or two on a bunch of sites and then it would like scoop it all and then I'd just take it away in a future update and it'd be fine but no you can't do that. So yeah I mean even after all these rules and obviously not doing anything illegal they still have the right to you know take your plugin down for any reason but remember that these are volunteers they're very nice people they aren't out there to like make enemies and take plugins down at random you know it's public when that happens right so if it was done for no reason people would complain but you know just realize that this is something that you don't own and that there is a potential for the plugin to be taken down at any time. So now you've kind of followed the rules and you've thought of got your readme file ready so now how do you actually release the plugin? So there's some specific steps and we'll go through that. So again ensure that your readme.txt file is present and validated so it's not there's no errors in it. You basically you know you right click in either Windows or Mac and create a zip file if you have the git folder or I don't know if there are some old developers in there with a CVS folder hopefully no one's using CVS anymore but if you have any kind of version control within your plugin just get rid of that folder before you create the zip or move it temporarily. You submit the plugin for review which I'll show you in a sec and then you push your code op using the SVN repo which I'll go through you don't have to use SVN if you've ever used it before it's I much prefer git and most people use git for development but there are a couple of commands that you just need to run to do an update. So before you actually push up to submit you definitely wanna test with WP debug on. So WP debug is a little configuration thing you can have in on your site or your local site and you turn that on and any warnings that show up or that happen within your plugin or any other code will appear at the top. So definitely before you submit it's good to turn that on at least for a bit and then make sure that there are no warnings or errors and if there are fix them before you submit. If you're using JavaScript just check the console the debug tools and Chrome or whatever browser just make sure there are no errors or if there are they're not being caused by your plugin and you don't need to cause a huge fear that I hear when you're creating something for a client and then you're like, I'm gonna release it for public but it's like, oh man, there's like 50,000 plugins out there. Like I don't wanna put it out there cause like one of those plugins might conflict with my plugin and then everyone will hate me and there'll be like thousands of support emails and this will be terrible. But no, there's no, you don't need to test obviously you wanna test with plugins that you kinda work with maybe or if your plugin's like an add-on to another plugin or a theme you know I still wanna test with that but beyond that, you know it's really up to you. Like you don't have to support every plugin working with your plugin and conflicting if you don't want to. If there's a popular one that you want to support and there's an error with it, fine but there's no reason why you have to support every plugin and it's totally reasonable if someone says like oh my plugin doesn't work with this page builder and like my 500 other plugins I have installed you can just be like sorry try deactivate, back up your site try deactivating plugins and other plugins, does mine work? Yep, cool, all right. Well, you have to contact the other people. So yeah, don't let this stop you releasing the plugin for the fear of you might have a conflict with one of the many other plugins out there. So now one of the easy part is you just go to wordpress.org slash plugin slash add and there's a little form there it gives you a little notice as to how many plugins are still in the review queue left or waiting to be reviewed. If you don't already have a WordPress.org account you just have to create one, it's free. And when you're creating that account it's associated with an email address you need to make sure you don't have any of those like vacation messages ever turned on and the reason for this is that the team if there's some issue or like sometimes it could take a day or so for like your plugin update to appear for people to be able to download and stuff like that. If they send out an email to all the plugin owners and then they get back a thousand, I'm on vacation until next week in messages that creates a ticket within their system that they didn't have to go into clothes, delete, whatever. So yeah, if they're nice, they'll give you a warning but usually like it's very clear in the guidelines to not have it. So, but usually let's take your plugin down. So yeah, definitely just make sure that's never turned on from the email address that you use for WordPress. The form's very simple. So you just have a plugin name here, description, you can just paste that in from your readme.txt file and then the plugin URL, so you have to have it like somewhere on the internet, you don't upload it here but you can just on a WordPress site just drag the zip file into your media library and then you'll get a URL on your website you can paste in there and they can download it and check out your plugin. So your plugin name, so if you look back here, right, you've got the plugin name thing, that'll be turned into a slug, so it'll be turned into say your dash plugin dash name. You can change your plugin name later but this slug cannot be changed. So just be aware of that and pick something that you're happy with I guess and name your plugin. Probably like a kind of a shorter one as well which kind of gives your plugin somewhere to go if you kind of want to add new features and change its direction a bit. If you're super specific as to like what your plugin does exactly and it only that one feature then you don't really have much room to move I guess. So yeah, keep it as general as you can. But once you submit it, you wait in an indefinite amount of time. There's no, they're volunteers again so there's no set time as to when it'll be done but yeah, they're usually pretty quick to get you your plugin ready. So once you get it, you get this SVN repository and so it'll be your plugin name at the end there and there's just a couple of commands you have to run to get your plugin released. So you run this CO for checkout and the URL that you get in the email and folder name so just telling SVN where to put it once so that'll create a folder on your computer where it'll be and in this folder it'll just have other folders but it'll also have a trunk folder which is where you copy in your plugin code so your main plugin file, any things that are being included, your readme.txt all that and then you'll just type SVN add trunk which will add all those files to SVN and I forgot to mention at the beginning these slides will be available so you don't need to frantically write anything and that'll just be for reference because I often forget these commands when I'm doing it and we'll review back to my slides and content to remember how to do it when an update comes up and then once you're there you just type SVN CI just like for commit I guess CO was already taken for checkout and then dash M and a message which you can just put like first version of my plugin once you're there now you can actually go back to wordpress.org slash plugin slash your name there and it'll be you should see it there within a few minutes again it can take a while if it's bogged down a bit but at that point your plugins release so now someone can actually you can tell anyone in the world and just say hey go to your WordPress site go to plugins add new search for my plugin and it'll be there and just click download and install activate and that's it so now we've added it but like I said before like one of the things you can add to the read me is screenshots or descriptions of screenshots so I mean you've seen it when he search for a plugin right there's a little square image so there's that icon image that's good to add when you actually go to wordpress.org slash a plugin there's a kind of a big header image at the top and then also screenshots so all these files there's this other folder that you see when you get your SVN repository that's just an assets folder so before you used to actually put the screenshots and stuff inside your plugin but that's kind of a waste right because why would why do you need to download all these screenshots and header images and icons when you just want to download the plugin code right so now it's in a separate folder which is good so if you got a couple screenshots like that you just name them like screenshot dash one dash two dash three however many you got there's there's some rules if you like or switching up between PNG and JPEG I think it's sports give but yeah I just tend to keep them all one format and then in your read me you can have a screenshot section and then one description of the screenshot two description of the screenshot and that just adds as a caption on the page so you do same thing SVN add assets just like we added it for drunk and then commit it and just say adding screenshots and that'll push that up and then after a few minutes it'll show up on the website so now you've got your initial plugin out but now how do you release a new version you're probably going to want to add features over time when people ask for it or you find a bug or something so how do you actually get a new version out there so you make the changes to your code in that trunk folder you update your version number in your read me and in the plugin header the standard plugin header that you need at the top of the main PHP file so just make sure to update in both I often forget to do one or the other but if you don't it'll show the wrong version or not show as an update at all and then you add a line again often forget this and there's this is one guy I wanted my plugins that will always remind me hey forgot to add the thing to your change log I'm like I'm so sorry I swear it's not a breaking change you can update it's okay but yeah it definitely had a line there and that just tells people which who are good about updating their site they can click and say what's new and then actually see what's changed in your plugin and then you just do SVN add whatever files have changed or ones that you've added as well and then just SVNCI to in a message saying maybe just a short one of what changed maybe or that you're just releasing this version so this is good like we're releasing it on the trunk folder but it's nice to keep the versions organized kind of in separate folders and that's what's called kind of tagging your version of your plugin so you just go back up oh sorry Is there best practices for version numbers? Um, yeah I mean in general right like you've got like 1.0 and then if it's and then you can go up to 3 I think is I think the events calendar amount of time goes like to 4 right so like 1.2.10.5 but yeah typically 3 is good so you do like 1.1.1 would be like a minor change like no real update if you go from say 1.1 to 1.2 then that's again not a breaking change but you're probably adding a new feature it's not like a bug fix and then if you go in from say 1.5 to 2.0 that's like a major version change that could potentially I mean nobody people just update and not realize but yeah that's the change where everyone's going to go down yeah potentially yeah who commerce yeah right yeah exactly so but yeah I'm sorry to repeat the question is there a good thing for version numbers but yeah nobody even like was easy to go down it was recently 3.5 to 3.6 it's actually a very major change that if you didn't know it and didn't update the database would break like licensing and stuff so yeah but that's typically yeah you want to keep the major version for potentially breaking changes and a minor otherwise no problem so to tag those versions yeah you just go up one and they use SVN to actually just copy it from the trunk to your tags folder with the version number of your new plugin and then you just say from that main folder hey I'm tagging version 1.1 and that just makes it easy for people to like go back keeps your code organized and when you release an update you can actually release it in trunk and then tag it afterwards like it's two separate steps yeah just keeps your code organized yep I've found this oh so tagging so if you make any change you want to increase the lowest level version number usually and that means you're going to create a new tag and almost always that means you're going to update your meeting and then when you release the meeting you've got to create a new tag not necessarily no there is a no yeah so you can definitely release a readme without but you have to so the question yeah well common was that sometimes you have to do a new version for a readme file change but you can actually copy you have to update the readme file in the trunk and then also copy it to the current tag as well and then and just copy it to both yeah I did experiment with this at work camp you asked a couple times and then I'm just like oh I can just update in trunk no no yeah and they also have to update in the tag as well to update repress.org but yeah you can do it without releasing a new version which is nice but yeah bit of a pain so yeah so now we've we started with this and now after our tags we're going to have our tags folder 1.1 1.2 and so on as you release new versions so we'll just be there nicely organized so I mean as we mentioned like you do need to increase the version number for every release otherwise it won't show up as an update for people right and you don't want like some people with version 1.2 with some of code that other people who downloaded 1.2 earlier don't have so anytime you have any change to your code add a increase the version number it could just be a version 1.2.1 if this is like a small change but make it a new version number and increase the number so they see it so yeah while you ultimately need to use SVN if you're like me like most people like to use Git and not SVN so there is a way to kind of pull these changes to your trunk folder from Git so you have your your repository here with the trunk folder then I actually will kind of delete the trunk folder and then check out my Git repository into trunk and then so you get this .git folder which you don't SVN add that folder but it's just there and then you're able to just go in the trunk and do Git pull to get your latest changes and you can develop using Git somewhere else you know using your local environment or in production I mean whatever you do for developing your plugin but this this tutorial kind of goes through the specifics on how to set that up so you don't have to use SVN for everything and on that note don't actually use SVN for your development repo so you could use trunk make some changes not increase the version number and if you've tagged it properly it shouldn't release a new version but every time you do that the server will actually go through all your tags your code regenerate the zip file every time you push like a change so if you're using it just to like as you're developing push it up and like not release it or anything it does put a lot of strain on that server and if you do it enough they'll probably notice it until you stop so you really only want to use this SVN repo when you have a new version ready and use something else if you need to track it on the way so tips on your plugin code itself so don't include you know while you could do it for your client site because you're in full control over that site if it's a plugin that you're using or releasing for someone else or for everyone to use you don't want to add like any styling and scripts everywhere across the entire front end and back end of the site you want to actually limit it to just say your admin setting screen right if you've got a nice UI there and you need some styling just have it on that one page and that's it and I've got this this free course here that just goes through like some specifics of ways that you can detect what page you're on and how you can again not do this in it because this is a big way to break everyone's site where you're just adding script where it doesn't need to be and then I don't I haven't I don't see this as much now but this is the number one uh... thing that plugins would do that would break other plugins or the theme or the site completely is basically there's a way you can like a de-register rip out the WordPress version of jQuery or any of the other scripts that WordPress includes and then add your own because you're like well I need version whatever so and WordPress doesn't have that yet so I'm just going to rip it out and put it on my own but that is number one of the way that you will break because people when they build plugins the right way they will expect that the version of you know if WordPress is 4.9 it'll be jQuery version whatever so you don't want to uh... rip out and put your own version of any included WordPress scripts because again it'll break stuff so yeah don't do that but do include uh... php and or WordPress version check so there's some people who are on very old hosts uh... very old sites and you don't want to have your if your code you know is using some newer features of php you don't want to break their sites with your plugin installed so uh... there's a library down here again I'll have these slides because it's kind of hard to... you know I can't pronounce that uh... it's just a little snippet uh... that I've used on my plugins that just says oh is this at least WordPress 4.1 and is it at least uh php 5.3 is my plugins right now yes cool right run it if not it'll immediately deactivate your plugin and show a message saying hey your stuff's too old uh... you need to upgrade uh... do use apply filters and do action so if you've ever kind of used you might have written a plugin that like uses a filter or an action that the theme or another plugin uses but by using these functions you're able to allow people to extend your plugin without having to hack your plugin so use it where it makes sense uh... so that other people can uh... you know add on to your plugin without having to edit that code uh... which is nice uh... do you don't have to translate it but by using this kind of double underscore function and there's a few other plugins as well actually I've got a presentation on uh... more tips and ways to make your plugin translatable but by using this function it allows people to be able to go in and add translations for your plugin without you doing anything like I think my one plugin's been in Japanese uh... Portuguese Brazil like I don't even know who did it you know they're just able to go in to translate that wordpress.org uh... find their language see the string that you have in your plugin and then add the translation and then someone else comes in approves it and then you're all set so uh... it's nice just a nice thing to do and get into the habit of using this function around any strings you have in your plugin and uh... do add a little help page so uh... for example I've got this short code plugin for the events calendar so thanks to the magic wordpress I can add a little menu item underneath uh... the main events uh... one and then shows us a beautifully designed uh... it's a joke it's a terrible design uh... but at least it's helpful like it shows here's the basic usage linked to a video uh... here's some options here's some examples and this dramatically decreases uh... the amount of support that you need to deal with because it just makes it helpful and people can see uh... what your plugin does and how to use it without having to forage for it on the internet uh... so do you test test test but again don't don't let this be like how I mentioned before where you don't have to like test with every single plugin you know you just be available you know someone has an issue or you release uh... a new version your plugin you know don't don't be like um... some people i know who who may have you release a new version not added a required file and then gone to a concert without cell reception when you know the plugin didn't have that file and it broke breaking benjamin is a great band by the way but yeah definitely definitely be available and maybe hang around for an hour or two after you release a plugin uh... new version just you know but uh... one big example I gave like jetpack uh... four point I broke millions of sites uh... and then four point oh point one still broke all the sides but then finally four point oh point two fixed that uh... so you know that's that's a big plug-in uh... that i can still have issues so uh... don't again don't don't let it be like a fear that you might break a site just you know be available fix it people update it and move on with their lives so now you've got your plugin out there how do you get more people using it kind of burn it um... so don't underestimate the power of word of mouth and social because now your plugins on wordpress dot org again you don't have to like tell them go to this website download the zip you know take the zip i swear it doesn't have a virus upload it to plugins ad new uh... you can just literally say go to plugins ad new type in your plugin name you know uh... and solve it very quickly so uh... it's a great way to and obviously social as well facebook twitter whatever uh... just mentioning it that you have it get some initial users and some initial feedback uh... youtube how-to videos i found a huge these only to be super high-tech you can use your uh... headset near the the with the the earbud uh... headset with the in-line mic if you don't have a another mic uh... maybe borrow one if you need to but literally it's a quick little screencast uh... you know it's free tools out there uh... showing how your plugin uh... helps them solve whatever plug-in your problem solves and uh... youtube especially like you get a lot more kind of traffic because it is you know obviously harder to make a video uh... but it's a great way to uh... to get people to see your plug-in without even having to install it first and then uh... frequent updates is a good thing and there's a whole blog on you know because it's it's kind of open source or it is open source as to how your plug-in is ranked you know and how people actually find it and you can you can see all that and you're like oh well if i create a account name with my key word in its then that'll help my rankings but then they'll see you're trying to gain the system and delete your plug-in uh... so and they they say on on this blog post not to you but one thing is frequent updates and frequent updates is needs to be like every week i think it's every if you don't update every six months you get a penalty but so yeah just having at least once every few months uh... some update will help uh... your your thing show up but uh... it is hard uh... you know it's uh... hard to get a lot of traffic i mean if my right meow plug-in which will translate all the instances of now with meow still has fewer than ten installs like i i don't understand like if if i can't get this plug-in to the million level like i get it it is a very hard thing to do but uh... it's fully compatible with my other plug-ins in case you were wondering but uh... but yeah older plug-ins are definitely favored over newer ones so it can be hard uh... to you know don't expect to just put it on repress dot org and you get millions of users without any kind of marketing or telling anyone about it those days are kind of gone but uh... stuff like worth it you know like it takes time but nothing beats me all the tell uh... friend family member a potential spouse they can go to plug-ins at new well you have a plug-in on the repo wow uh... and they can find it so it's good uh... so again uh... my plug-ins are there uh... course teach people how to help uh... people do this stuff uh... plug-ins for beginners would actually course on on learning how to code plug-ins uh... learning center and then i did i had the slide uh... when i did this before it's like where came hamilton is coming up soon but it's right now so yeah uh... and speaking of you can get the slides right there just on brianhawk.com slash wc hamont twenty eighteen uh... but that's it so i'm open to any uh... questions that are made in time any other questions i'm just laughing cuz like my plug-in actually ranked higher than the events counter at one point when they first released a new version like all that's great but weird yeah what's causing that i mean yeah you can you can read that that freemius blog post and it literally so the question are we still recording okay yeah so yeah so the question was uh... yeah like why why when you search even the exact plug-in name does the wrong plug-in or you know useless plug-in come up uh... yeah i mean they're there engine is definitely not perfect and i've definitely seen weird stuff like but there is like yeah that that freemius blog post does go through like exactly how that algorithm works uh... and i i do know they tweak it from time to time but yeah i mean having a unique plug-in name helps and but even then it's uh... it's not perfect for sure yeah i mean that's another so the answer to the question was uh... how do you tackle sport questions that you get oftentimes like i mean it takes effort to do a support question right so personally i find it you know i've gotten some amazing feedback and and uh... feature ideas and everything else is like literally they have to create a repress account they have to go on with the type of so they're gonna put that much effort into it like chances are the other had a real problem that's like oh shoot like it's not clear on the documentation or or maybe i can switch up the ui to like fix it or it's like oh yeah that's a sweet idea that you like are struggling with and like hope that my plug-in would solve but it doesn't uh... so personally i i i'd less of a like i guess deal with thing and more of a uh... opportunity all but on that subject make sure i don't think it does automatically uh... to subscribe to your so uh... plug-in support thread uh... so that anytime you get uh... support question you get an email for it and don't have is it on mac yet though a couple years ago wasn't and uh... yeah i would i would then not get emails and you like i'm so sorry i didn't see your thing uh... but no yeah i just try to be helpful and just think of it as you know so so there's human like me who's trying to get their work done and uh... and do it but yeah it's been it's been great support uh... but yeah if i keep getting the same question over and over again that's like all right add some documentation at the queue whatever make it better and the other uh... great well thanks come now to enjoy uh... the rest of your work out