Talk Devy to Me: WPM With Lovekesh Kumar

๐ **Source:** [Talk Devy to Me: WPM With Lovekesh Kumar](https://www.youtube.com/watch?v=Cy6JgeSOuLA)
> [!note]+ Document Notes
> tags: [wordpress-development, package-management, developer-tools, supply-chain-security, plugin-distribution]
> author: [MISSING]
> source: YouTube
> reference: https://www.youtube.com/watch?v=Cy6JgeSOuLA
> date created: {{date:YYYY-MM-DD}} {{time:HH:mm}}
>
> # ๐ท๏ธ Title: Talk Devy To Me: wpm with Lovekesh Kumar
>
<!-- deep-read:sections start -->
## ๐งญ Table of Contents
- [๐ Summary](#-summary)
- [๐ Main Content](#-main-content)
- [๐๏ธ Notes](#๏ธ-notes)
- [๐ References](#-references)
- [๐ฃ๏ธ Paraphrase](#๏ธ-paraphrase)
- [๐ฐ Newsletter](#-newsletter)
- [โ
Action Items](#-action-items)
- [๐งช Hypotheses](#-hypotheses)
- [๐ Methodology](#-methodology)
- [โ Questions](#-questions)
- [๐ฎ Future Research](#-future-research)
- [๐ก Implications](#-implications)
- [๐ง Learning Styles Assessment](#-learning-styles-assessment)
- [๐ Accessibility Assessment](#-accessibility-assessment)
- [๐ DEIB Assessment](#-deib-assessment)
- [โ
Logical Validity](#-logical-validity)
- [๐ก๏ธ DARVO Analysis](#-darvo-analysis)
- [๐ฏ Conclusion](#-conclusion)
## ๐ Summary
- **What happened:** Lovekesh Kumar introduced WPM (WordPress Package Manager), a new tool designed to manage WordPress plugins and themes similar to how npm manages JavaScript packages
- **Why it matters:** Current WordPress dependency management is fragmented, with no unified way to handle private plugins, verify package integrity, or manage dependencies automatically
- **Key stakeholders:** Enterprise WordPress developers, agencies, WordPress VIP users, plugin/theme vendors
- **Risks and tradeoffs:** Adds another tool to the ecosystem; requires adoption by vendors; centralized registry dependency
- **Bottom line:** WPM aims to solve WordPress's package management gaps with security-first approach and dependency resolution
## ๐ Main Content
WPM (WordPress Package Manager) is a new tool that brings npm-like package management to WordPress plugins and themes. Created by Lovekesh Kumar, it addresses several pain points in the WordPress development ecosystem.
### Core Problems WPM Solves
**Fragmented Distribution:** Unlike JavaScript's npm ecosystem, WordPress has no unified package management. Public plugins use WordPress.org, premium plugins have vendor-specific APIs or manual downloads, and private plugins require custom solutions.
**Manual Dependency Management:** WordPress plugins with dependencies (like WooCommerce extensions requiring WooCommerce) don't automatically resolve dependencies. Developers must manually track and install prerequisite plugins.
**Security Gaps:** Current distribution methods lack cryptographic verification. If a vendor's site is compromised, users can unknowingly download malicious code with no way to verify package integrity.
**Enterprise Workflow Friction:** Large WordPress installations require managing plugins as code rather than through the dashboard. This involves manually downloading, unzipping, and committing plugin files to repositories, bloating git repos and complicating updates.
### How WPM Works
WPM operates as both a CLI tool and package registry. It automatically mirrors WordPress.org plugins every 15 minutes, creating cryptographically signed tarballs with verification metadata. The system uses:
- **Dependency Resolution:** Automatically installs required plugins (e.g., installing a WooCommerce extension automatically includes WooCommerce)
- **Cryptographic Verification:** Uses AWS KMS-backed private keys to sign packages, preventing supply chain attacks
- **Version Management:** Supports specific version installation and tracks dependency trees
- **Development Dependencies:** Separates production plugins from development-only tools (like Query Monitor)
### Security Architecture
The security model prevents tampering through multiple layers:
- Cryptographic signatures using hardware security modules (HSM)
- Publisher verification through GitHub/GitLab OIDC integration
- Software Bill of Materials (SBOM) attestation
- Provenance tracking showing where and how packages were built
## ๐๏ธ Notes
#### โฑ๏ธ [00:00:00](https://www.youtube.com/watch?v=Cy6JgeSOuLA?t=0) Introduction and Context
- WPM introduced at WordCamp Asia as "npm for WordPress"
- Focus on package management and registry functionality
- Addresses enterprise WordPress development needs
#### โฑ๏ธ [00:03:12](https://www.youtube.com/watch?v=Cy6JgeSOuLA?t=192) Problem Definition
- WordPress lacks unified package management unlike JavaScript ecosystem
- Current solutions require manual processes for updates and distribution
- Enterprise environments can't use dashboard-based plugin installation
#### โฑ๏ธ [00:08:45](https://www.youtube.com/watch?v=Cy6JgeSOuLA?t=525) Security Concerns
- No verification mechanism for downloaded plugins
- Vendor site compromises can inject malicious code
- Supply chain attacks possible without cryptographic verification
#### โฑ๏ธ [00:15:30](https://www.youtube.com/watch?v=Cy6JgeSOuLA?t=930) Live Demonstration
- Installation: `wpm install advanced-query-loop`
- Dependency resolution shown with Elementor + Dino Pack example
- Version-specific installation: `wpm install package@version`
#### โฑ๏ธ [00:25:20](https://www.youtube.com/watch?v=Cy6JgeSOuLA?t=1520) Development Dependencies
- Separate dev dependencies (Query Monitor) from production plugins
- `wpm install --save-dev query-monitor` for development-only tools
- Production installs exclude dev dependencies automatically
#### โฑ๏ธ [00:30:00](https://www.youtube.com/watch?v=Cy6JgeSOuLA?t=1800) Registry Architecture
- 15-minute cron jobs sync WordPress.org SVN repository
- Automatic tarball creation with cryptographic signatures
- HSM-backed signing prevents private key compromise
## ๐ References
- [WPM.so](https://wpm.so) - Main website and documentation
- [WP2WPM GitHub Repository](https://github.com/wpmio/wp2wpm) - Automation system for WordPress.org mirroring
- WordPress.org Plugin Directory - Source for public plugin mirroring
- WP-CLI - Existing WordPress command-line tool for comparison
## ๐ฃ๏ธ Paraphrase
WPM represents an attempt to bring modern package management practices to WordPress development. While WordPress has grown into a sophisticated development platform, its tooling has lagged behind other ecosystems. The fragmented nature of plugin distributionโspanning WordPress.org, vendor-specific systems, and manual processesโcreates friction for professional development workflows.
The security focus addresses real concerns in an ecosystem where supply chain attacks have become increasingly common. By implementing cryptographic verification and provenance tracking, WPM aims to provide enterprise-grade assurance about package integrity.
However, success depends on ecosystem adoption. For WPM to reach its potential, plugin vendors need to integrate with the system, and developers need compelling reasons to adopt another tool in their workflow.
## ๐ฐ Newsletter
๐ง **New Tool Alert: WordPress Gets Its Own Package Manager**
The WordPress development ecosystem just got a significant upgrade with WPM (WordPress Package Manager), a new tool that brings npm-style dependency management to plugins and themes.
**What makes this interesting:**
- **Automatic dependency resolution** - Install a WooCommerce extension and it automatically includes WooCommerce
- **Enterprise-grade security** - Cryptographic verification prevents supply chain attacks
- **Development workflow integration** - Manage WordPress dependencies as code, not through dashboards
**Perfect for:** Agencies managing multiple client sites, enterprise WordPress installations, and developers who prefer infrastructure-as-code approaches.
The tool automatically mirrors WordPress.org plugins with enhanced security features, while also supporting private and premium plugin distribution. Early adoption could streamline WordPress development workflows significantly.
[Check out WPM.so](https://wpm.so) to explore the documentation and see if it fits your development process.
## โ
Action Items
#### DevRel
- **Developer advocacy:** Create comparison guides showing WPM vs existing WordPress tooling workflows
- **Education:** Develop workshops on secure WordPress package management practices
- **Developer experience:** Document integration patterns with popular WordPress development tools
- **Community management:** Establish feedback channels for enterprise WordPress developers
#### WordPress
- **Core:** Evaluate potential integration points for package management metadata in plugin headers
- **Security:** Review WPM's security model for potential adoption of verification standards
- **CLI:** Consider WP-CLI integration or compatibility with WPM workflows
- **Plugins:** Document best practices for plugin authors to support dependency declarations
#### Community
- **Maintainers:** Evaluate adding WPM support to popular WordPress development boilerplates
- **Contributors:** Test WPM integration with existing WordPress development workflows
- **Ecosystem:** Create standards for WordPress package metadata and dependency declaration
## ๐งช Hypotheses
- WPM adoption will correlate with enterprise WordPress usage patterns
- Security-conscious organizations will drive initial adoption over convenience features
- Plugin vendors will adopt WPM integration if it reduces support burden
- Developer workflow improvements will outweigh tool complexity for target users
- Automated dependency resolution will reduce WordPress project setup time significantly
### ๐ Methodology
- **Adoption tracking:** Monitor WPM registry growth and CLI download metrics
- **Developer surveys:** Quarterly feedback on WordPress tooling preferences and pain points
- **Security analysis:** Audit cryptographic implementation and compare to industry standards
- **Performance measurement:** Benchmark installation speed vs manual plugin management
- **Enterprise case studies:** Document workflow improvements in controlled enterprise environments
### โ Questions
- How will WPM handle WordPress.org plugin approval process integration?
- What incentives exist for premium plugin vendors to adopt WPM distribution?
- How does WPM's security model compare to other package managers?
- What happens to WPM packages if the registry becomes unavailable?
- How will WordPress hosting providers adapt to package manager workflows?
### ๐ฎ Future Research
- Integration possibilities with WordPress hosting platforms
- Potential for WordPress Core to adopt package management standards
- Impact on WordPress.org plugin distribution statistics
- Security audit of cryptographic implementation
- Developer productivity measurements in WPM vs traditional workflows
### ๐ก Implications
- **Enterprise WordPress:** Could standardize dependency management across large WordPress installations
- **Plugin Development:** May encourage better dependency documentation and modular plugin architecture
- **Security Posture:** Raises security expectations for WordPress package distribution
- **Developer Tooling:** Could catalyze broader WordPress development tool modernization
- **Hosting Integration:** May drive hosting providers to support package manager workflows
### ๐ง Learning Styles Assessment
Reading level: **College level** (Flesch-Kincaid ~13-15). Technical terminology and complex workflow descriptions require developer background.
#### ๐ Visual learners
- **Present:** Code examples, terminal output, dependency tree visualization
- **Improve:** Architecture diagrams showing WPM vs traditional workflows, package verification flow charts
#### ๐ Aural learners
- **Present:** Video demonstration with live coding and explanation
- **Improve:** Audio-only version explaining concepts without visual dependency
#### ๐ฃ๏ธ Verbal learners
- **Present:** Clear analogies (npm for WordPress), technical definitions, step-by-step explanations
- **Improve:** Glossary of package management terms, plain-language security explanations
#### ๐งฉ Kinesthetic learners
- **Present:** Live terminal demonstrations, installation commands, hands-on examples
- **Improve:** Downloadable sandbox environment, guided tutorial with checkpoints
#### ๐ง Logical learners
- **Present:** Problem-solution structure, security architecture explanation, workflow comparisons
- **Improve:** Decision matrix for adoption, formal security model documentation
#### ๐งโ๐คโ๐ง Social learners
- **Present:** Interview format, community discussion, collaborative problem-solving
- **Improve:** Developer forum integration, peer review processes
#### ๐งโโ๏ธ Solitary learners
- **Present:** Comprehensive documentation links, self-paced exploration
- **Improve:** Self-assessment checklist, independent project ideas
#### ๐ฟ Naturalistic learners
- **Present:** Ecosystem metaphors, organic tool evolution discussion
- **Improve:** WordPress ecosystem health metrics, sustainable development practices
### ๐ Accessibility Assessment
#### Screen reader semantics
- **Present:** Clear heading structure, descriptive link text
- **Improve:** Alt text for terminal screenshots, ARIA labels for complex interactions
#### Keyboard navigation
- **Present:** Standard video controls, text-based content
- **Improve:** Keyboard shortcuts for video sections, skip links for long technical discussions
#### Contrast and readability
- **Present:** Standard text presentation
- **Improve:** High contrast mode for code examples, larger font options
#### Media and captions
- **Present:** Video with clear audio
- **Improve:** Full transcript with timestamps, closed captions, audio descriptions for visual demos
### ๐ DEIB Assessment
#### Cultural breadth
- **Present:** English-only content, Western development practices
- **Improve:** Multi-language documentation, global WordPress community examples
#### Inclusive language
- **Present:** Technical jargon with some explanation
- **Improve:** Plain-language alternatives, expanded glossary
#### Neurodiversity support
- **Present:** Long-form discussion format
- **Improve:** Content chunking, bullet-point summaries, consistent structure
#### Representation
- **Present:** Male-dominated discussion
- **Improve:** Diverse developer perspectives, varied use case examples
### โ
Logical Validity
#### Strong reasoning
- **Security necessity:** Well-articulated supply chain attack scenarios with concrete examples
- **Workflow efficiency:** Clear demonstration of manual process friction and automated solutions
- **Enterprise needs:** Logical connection between WordPress maturity and tooling requirements
#### Fallacies
- **Appeal to novelty:** Implies newer package management is inherently better without fully addressing existing tool limitations
- **False dichotomy:** Presents WPM vs current methods without exploring hybrid approaches
#### Tone of voice
Professional and technical with collaborative undertones. Demonstrates genuine problem-solving intent rather than competitive positioning.
### ๐ก๏ธ DARVO Analysis
No DARVO patterns detected. Discussion focuses on technical solutions rather than interpersonal dynamics.
## ๐ฏ Conclusion
WPM addresses legitimate gaps in WordPress package management, particularly for enterprise development workflows. The security-first approach and dependency resolution features solve real problems that existing tools handle incompletely.
Success will depend on ecosystem adoptionโboth from plugin vendors implementing WPM integration and developers incorporating it into their workflows. The tool's enterprise focus may limit initial adoption but could drive broader WordPress tooling modernization if it proves successful in that niche.
For WordPress professionals managing complex deployments, WPM deserves evaluation as a potential workflow improvement, especially where security and dependency management are primary concerns.
---
## Full Transcript
[00:01] All right. Hi everybody. Here we are.<br>[00:03] We're here. We're here and I'm joined by<br>[00:06] a special guest, a friend,<br>[00:08] um, Love, the Love as he likes to go by.<br>[00:12] Uh, we are here to talk about something<br>[00:14] that Loveh talk told talked to me about<br>[00:17] when I was in India at for word camp um,<br>[00:20] Asia. That's the word camp and it is<br>[00:22] called WPM.O.<br>[00:24] So um, Love Cesh, why don't you tell us<br>[00:27] about it?<br>[00:28] >> Okay. So<br>[00:31] um I just<br>[00:33] uh like bring the attention of Ryan that<br>[00:35] I have built something. I was just<br>[00:37] gathering feedbacks from hopes around WC<br>[00:40] issue. So I shared uh something I<br>[00:43] created. It's called WPM. It's like npm<br>[00:46] but it's for WordPress. So it's a<br>[00:49] package manager and also a registry. So,<br>[00:52] I talked about it with Ryan at WCAC and<br>[00:55] he asked me whether I want to come on<br>[00:57] this live streaming and I said yes and<br>[01:00] here we are.<br>[01:02] >> Nice. Yeah, that's that's literally the<br>[01:04] step by step of how you got here. That's<br>[01:06] fantastic. Um I just dropped the link u<br>[01:09] in in in chat. I don't know why Bales of<br>[01:11] Fate is showing up there, but um we I<br>[01:14] dropped WPM.so into the chat. So, go go<br>[01:18] go and check that out. But let me ask<br>[01:19] you, so what what what what does this<br>[01:21] thing do? Tell me what this does. Tell<br>[01:23] me why I should care about it and<br>[01:25] pretend like I've never seen it before.<br>[01:28] >> Okay. So, um let's not talk about uh<br>[01:31] WordPress here. Let's talk about uh uh I<br>[01:35] think everyone have played around React<br>[01:39] since Gutenberg is in React and when you<br>[01:41] go to set up blocks, what is the first<br>[01:44] thing that you do? So maybe the first<br>[01:46] thing that you do is you<br>[01:49] uh run a command something like npmx<br>[01:51] create WordPress block or something like<br>[01:53] this something like that and it<br>[01:55] bootstraps the uh like a block scaffold<br>[01:59] on your<br>[02:00] >> in your folder is what you're talking<br>[02:02] about.<br>[02:02] >> Yeah. Now now imagine that think about<br>[02:05] it for a moment that how it's happening<br>[02:08] in that particular ecosystem and do we<br>[02:11] have any similar tooling in WordPress<br>[02:12] ecosystem or not. So in JavaScript<br>[02:16] ecosystem you have like package manager<br>[02:19] a task runner everything combined in one<br>[02:21] tool and it's called npm. Now there are<br>[02:24] faster alternatives to npm as well in<br>[02:26] case folks are using maybe pnpm or bun.<br>[02:29] So these are like like package manager.<br>[02:31] So what they just do is that you<br>[02:34] distribute your package. So so the core<br>[02:36] idea is you build something and now you<br>[02:38] want that okay I want to distribute it<br>[02:40] to other people so that they can just<br>[02:41] download it and use it easily.<br>[02:44] So they distributed some a place called<br>[02:46] registry. You will send your package to<br>[02:48] a registry. And now npm cli will just<br>[02:51] download it from anywhere else. So the<br>[02:53] ecosystem is like very seamless. You can<br>[02:56] download for example any npm package. So<br>[02:59] I can like remind you any package that<br>[03:01] starts with at the rate WordPress is npm<br>[03:04] package for WordPress. You can just<br>[03:05] download it anytime anywhere without any<br>[03:08] problem. you just don't have to worry<br>[03:11] about like u wiring up in a like manual<br>[03:15] way in your CI/CD you don't do that<br>[03:17] there is like enough mature tooling<br>[03:19] around that but if you want same sort of<br>[03:21] experience in WordPress then how will<br>[03:25] you do it do you have the required tools<br>[03:28] also when it comes to like distributing<br>[03:32] your things there is like very popular<br>[03:35] thing we are using I think for more than<br>[03:38] 18 or 20 years that is called<br>[03:39] WordPress.org plug-in and theme<br>[03:42] distribution. But the thing is that it's<br>[03:44] for it's mainly for public plug-in and<br>[03:46] themes and you have to get approvals to<br>[03:50] register your plug-in and from there and<br>[03:51] then you can start distributing them.<br>[03:54] But again, it works seamlessly with the<br>[03:56] WordPress dashboard itself. For example,<br>[03:58] the plugins and themes pages uh in the<br>[04:01] WordPress admin. But what about uh the<br>[04:05] people that are managing their WordPress<br>[04:07] as code? When I say WordPress as code,<br>[04:10] it means that you push everything to<br>[04:13] your server including plug-in and themes<br>[04:15] as code rather than downloading plug-in<br>[04:17] and themes from the WordPress dashboard.<br>[04:20] So<br>[04:20] >> okay<br>[04:21] >> then uh like few years back someone<br>[04:23] created WP package list. So what<br>[04:26] basically that was is that<br>[04:28] >> someone created a composer layer on top<br>[04:30] of WordPress.org. Now you can download<br>[04:32] the those packages using composer tool.<br>[04:34] So composer is another package manager<br>[04:37] just like npm but it's for PHP<br>[04:39] ecosystem.<br>[04:41] But now again the problem is that you<br>[04:43] can easily handle your plug-in and<br>[04:46] themes that are published on<br>[04:48] WordPress.org.<br>[04:50] But what about plug-in and themes that<br>[04:51] are not on WordPress or they are like a<br>[04:54] scattered somewhere maybe on GitHub,<br>[04:56] GitLab. Uh many of many plug-in and<br>[04:58] themes are private. So every vendors<br>[05:01] give you like their own API to download<br>[05:04] that plug-in or theme and you have to<br>[05:06] wire up those API maybe in your<br>[05:08] automation script or something like that<br>[05:10] to download the chips then unpack it. So<br>[05:12] there is like a whole gap when we talk<br>[05:15] about tooling in WordPress ecosystem. So<br>[05:18] I I I basically mostly work on<br>[05:20] enterprise WordPress. Uh and that<br>[05:24] consist of like very strict processes<br>[05:25] how we do things. For example, we just<br>[05:27] can't go to a WordPress site, go to the<br>[05:30] dashboard and just install a plug-in or<br>[05:32] theme we want to. We just can't do it<br>[05:34] that way because many of our clients are<br>[05:36] on WordPress VIP. WordPress VIP wouldn't<br>[05:39] allow that because there are like lot of<br>[05:42] uh security considerations there and<br>[05:44] other things. So, generally what people<br>[05:47] do is most of the time they just<br>[05:48] download the plug-in either from<br>[05:50] WordPress.org or maybe from a premium<br>[05:54] vendor. they will just unzip it in their<br>[05:56] git repo commit and push it and now we<br>[05:58] are all done. But the problems comes<br>[06:01] when you have to update that particular<br>[06:03] plug-in and themes and suppose that your<br>[06:06] plug-in and theme has thousand of files.<br>[06:08] Now you have to unpack that and commit<br>[06:10] that you're basically what you are just<br>[06:12] doing is you're bloating your git repo<br>[06:15] >> and again<br>[06:16] >> that makes sense. I can see a lot of<br>[06:17] people like<br>[06:18] >> having worked in agency land my myself I<br>[06:22] know exactly what that's like and you<br>[06:23] know the files that you're downloading<br>[06:25] from.org or for example,<br>[06:26] >> yeah,<br>[06:27] >> may not have the source files and<br>[06:29] especially because we we live in a world<br>[06:30] that's that's, you know, JavaScript<br>[06:32] first now. Uh, you know, you might just<br>[06:34] be parsing through like, you know,<br>[06:36] obuscated minified JavaScript trying to<br>[06:38] search for security issues and I know I<br>[06:40] know VIP is not a big fan of doing that.<br>[06:42] So,<br>[06:42] >> yeah.<br>[06:43] >> Uh, cool. Okay. Awesome. Yeah. So that<br>[06:45] is a so so the first question that comes<br>[06:49] to mind<br>[06:50] >> and and and and the first comment in<br>[06:52] chat was like so like composer and that<br>[06:54] was before you started talking about<br>[06:55] composer and wp packages and stuff. So<br>[06:57] >> what so we have npm and we have have<br>[06:59] have composer we've had those since the<br>[07:02] you know the dawn of time and with wp<br>[07:05] packages I can you actually well with<br>[07:08] composer you you can actually check out<br>[07:11] github git repositories I believe. Yeah.<br>[07:14] >> Yeah, you can. Yeah.<br>[07:16] >> Yeah. And so how does how does WPM<br>[07:21] bridge the gap between npm and composer<br>[07:24] and and and or or does it is is is that<br>[07:27] the is that the point of it? Um<br>[07:31] >> yeah. So I just use npm as like<br>[07:34] terminology to talk about that what WPM<br>[07:36] is actually. So we can like forget about<br>[07:38] npm here because it's the package<br>[07:40] manager for JavaScript and it won't help<br>[07:43] us much when it comes to distributing<br>[07:45] >> it doesn't handle any of the WordPress<br>[07:47] JavaScript stuff.<br>[07:48] >> Yeah. Yeah. It it just handles like<br>[07:52] JavaScript packages that you want to<br>[07:54] install but WordPress uh like plug-in<br>[07:56] and themes are mostly PHP code wired up<br>[07:59] in a different way. So we we should omit<br>[08:03] like npm from this scenario here. Now<br>[08:04] coming to composer actually the first<br>[08:08] thing is that composer was not built for<br>[08:12] handling such use cases. While composer<br>[08:15] have those features for example you can<br>[08:18] uh wire up uh like jip jip there or<br>[08:22] maybe a g repo there or or maybe some<br>[08:26] jip.<br>[08:27] uh disk URL there it can handle those<br>[08:30] but neither composer<br>[08:33] was built in such a way that they were<br>[08:35] keeping WP specific nonsense in their<br>[08:38] mind while they were building composer<br>[08:40] so composer don't treat WordPress<br>[08:42] plug-in or themes as like uh what should<br>[08:45] I say like first class citizens and now<br>[08:49] when it comes to WordPress WordPress.org<br>[08:52] or distribution mechanism wasn't built<br>[08:54] in such a way that it can talk to<br>[08:56] composer as for first uh class citizen.<br>[09:01] Ah, okay. So, this is<br>[09:03] >> Yeah,<br>[09:04] >> I I'm seeing. Okay. So, I think<br>[09:07] >> I think and I think I'm probably<br>[09:10] my mind is probably going in the same<br>[09:12] direction as as users. So, this is lit.<br>[09:16] Let let me back up. My brain is not<br>[09:18] functioning. I can't talk. So, this is<br>[09:20] like a first like a WordPress first.<br>[09:22] It's not a replacement for composer. Let<br>[09:25] me just ask that question. Sorry. Is it<br>[09:27] intended as a replacement for composer<br>[09:28] or just as as a as a replacement for<br>[09:31] composer plus WP packagist?<br>[09:33] >> So it's a replacement for composer in<br>[09:36] like uh different terms. For example,<br>[09:40] let's say how you want to manage your uh<br>[09:44] WordPress dependencies. The question<br>[09:46] number one is that because composer can<br>[09:47] manage. Now at this moment uh I can like<br>[09:52] say that folks who are managing or using<br>[09:55] composer to manage WordPress plug-in and<br>[09:57] themes I can say that composer isn't<br>[10:00] like handling single responsibility<br>[10:02] rather it's handling two you are<br>[10:04] managing your PHP packages and then you<br>[10:06] are managing your WordPress packages as<br>[10:08] well.<br>[10:09] >> Okay.<br>[10:09] >> So that is thing number one. Now second<br>[10:11] thing is when we then comes is uh like<br>[10:14] uh how are your<br>[10:18] WordPress plug-in and themes packaged in<br>[10:20] such a way that it can leverage all the<br>[10:22] toolings that composer exposed or<br>[10:25] exposes. For example, composer exposes<br>[10:27] something called uh like boundary<br>[10:30] configuration. You can save you can<br>[10:32] shape uh win files with your plug-in and<br>[10:35] themes and it will just wire them up and<br>[10:38] you can run those binary as tools.<br>[10:40] Another thing is does your does you<br>[10:42] write your plug-in and themes in such a<br>[10:44] way that it can wrap another<br>[10:46] dependencies. For example, let's let<br>[10:48] let's talk about WooCommerce.<br>[10:50] WooCommerce have like thousands of<br>[10:52] extensions that doesn't run without<br>[10:54] WooCommerce. Add those thousands of<br>[10:57] WooCommerce extension built in such a<br>[11:00] way that they can be distributed with<br>[11:01] composer and when you download any of<br>[11:04] those extensions can composer determine<br>[11:07] that whether it should download<br>[11:08] WordPress with it or sorry not WordPress<br>[11:10] whether it should download WooCommerce<br>[11:12] with it or not. So it's not one package<br>[11:14] composer now have to download composer<br>[11:16] have the ideal responsibility of<br>[11:18] downloading two packages. one is the<br>[11:20] extension and another is the wcommerce<br>[11:22] package<br>[11:24] because this is how your dependency tree<br>[11:26] is going to be look like<br>[11:29] >> and there there are like many other<br>[11:30] nonsense maybe I can't think of you at<br>[11:33] this time<br>[11:35] >> yeah sorry and I I don't I I don't want<br>[11:38] you feeling like we're grilling you like<br>[11:40] hey what why is this thing any good<br>[11:42] right um yeah so there's a couple the so<br>[11:44] there is a question in chat from Kev XB<br>[11:46] hello Kev<br>[11:49] Um,<br>[11:50] and it it it goes like this. Uh, the<br>[11:53] question, sorry I have to find my window<br>[11:55] now. The questions in it. Uh, can you<br>[11:57] I'm just going to highlight the message.<br>[11:59] Can you add PHP dependencies, other<br>[12:01] plugins as dependencies or run post<br>[12:03] install scripts<br>[12:05] >> uh in WPM? Yes. So WPM is only for<br>[12:08] WordPress. It will download any<br>[12:10] WordPress related plug-in or theme and<br>[12:13] it will run life cycle scripts. But it<br>[12:16] will run life cycle scripts that are<br>[12:19] declared in your root wpm.json. It will<br>[12:22] not run any life cycle script that is<br>[12:24] defined in your like packages that are<br>[12:26] going to be downloaded and that is due<br>[12:28] to security measures and that thing is<br>[12:31] like now being removed from many package<br>[12:33] managers like by default in WordPress in<br>[12:36] JavaScript ecosystem PNPM blocks that<br>[12:39] because that brings lot of security<br>[12:41] issues running arbitrary codes from such<br>[12:44] code that you just can't believe that<br>[12:46] what they are going to run and also<br>[12:48] inherently<br>[12:50] uh WordPress plug-in and themes doesn't<br>[12:53] requires<br>[12:55] uh post install scripts from different<br>[12:57] packages because by default WordPress<br>[12:59] plug-in and themes are like<br>[13:01] self-contained,<br>[13:03] >> right?<br>[13:04] >> Yeah.<br>[13:04] >> Okay. So,<br>[13:07] okay. So I think<br>[13:10] so this this is so th this is meant to<br>[13:12] run<br>[13:14] if I'm understanding correctly and<br>[13:16] please correct me if I'm wrong but it<br>[13:17] sounds to me that that that this this<br>[13:19] could run easily with with composer as<br>[13:22] well. So if if if you had a project that<br>[13:24] downloaded a number of PHP libraries<br>[13:27] that you wanted to to use in a theme for<br>[13:29] example that you were creating or a<br>[13:31] plugin that you were creating for a<br>[13:33] client<br>[13:33] >> but then you also wanted to manage five<br>[13:35] or six plugins. Let's say it's a<br>[13:36] WooCommerce, like to use your example.<br>[13:38] It's a it's a Woo Commerce site that's<br>[13:41] got a custom theme and maybe a c a<br>[13:44] couple of custom extensions. And so you<br>[13:45] you're using Composer to get the PHP<br>[13:48] libraries that you want to use in your<br>[13:49] theme and whatever. And then you use WPM<br>[13:53] to download the the core um uh<br>[13:56] WooCommerce plugin, any other extensions<br>[13:58] and stuff like that. And that all runs<br>[14:00] sort of seamlessly.<br>[14:02] >> Yeah. Um, and<br>[14:05] okay. And so, so there the there there<br>[14:09] is a kind of a spicy question from<br>[14:11] thrown of error. I guess I guess the<br>[14:12] easiest way to ask is what problem does<br>[14:14] this solve? And it sounds to me that the<br>[14:16] problem it solves is managing WordPress<br>[14:18] and theme and installations, updates at<br>[14:20] a code level. Like so this is not<br>[14:23] something that like someone who just<br>[14:25] wants to go download a plugin and then<br>[14:27] update it manually and you know this is<br>[14:30] not for those folks. This is for people<br>[14:32] that are building an entire<br>[14:35] um<br>[14:38] microcosm I guess. So like like so your<br>[14:41] your project has got four themes and 15<br>[14:43] plugins and all this stuff and you want<br>[14:45] to manage it all in source control and<br>[14:46] you want to make sure that you have<br>[14:47] versions and all all of that stuff. I<br>[14:50] think that's the problem that this<br>[14:52] solves is the ability to<br>[14:53] >> so so this is the thing like if if I say<br>[14:57] that uh this is the thing that composer<br>[14:59] can also handle right so WPM is like you<br>[15:03] don't have to think it like that someone<br>[15:05] is asking me that replace something that<br>[15:07] composer is already doing for me rather<br>[15:10] WPM here is to fill the ecosystem gap<br>[15:14] now let me explain what I like really<br>[15:17] meant uh from this So uh any folk like<br>[15:21] who manages like big enterprise websites<br>[15:25] so they they must know that uh when they<br>[15:29] think about plugins it's just not that<br>[15:31] they are using all the public plugins<br>[15:33] that are available on WP packages or the<br>[15:36] new uh WordPress WordPress packages<br>[15:39] registry called WP packages it all the<br>[15:43] plug-in and themes are not available the<br>[15:44] things comes when you have to manage<br>[15:48] private plug plug-in and theme as well.<br>[15:50] So for example, let's say there is a<br>[15:52] project. It's possible that you are<br>[15:55] using 10 plugins, right? But out of<br>[15:58] those 10 plugins, the question is that<br>[16:01] how much plugins are private that are<br>[16:03] easily downloadable using composure and<br>[16:05] how many plugins and themes are uh no<br>[16:09] sorry how many plug-in and themes are<br>[16:10] like public that you can easily download<br>[16:12] using composure without any issues and<br>[16:14] how many plug-in and themes are private<br>[16:17] that you have to download using multiple<br>[16:19] ways. So for example in WordPress<br>[16:22] ecosystem when it comes to distributing<br>[16:25] premium plug-in and theme there is no<br>[16:27] spec compliant thing and when I say spec<br>[16:31] compliant thing it means that there is<br>[16:33] no single way by adhering which every<br>[16:36] vendor is distributing their packages.<br>[16:38] So for example that Yoast I I'm just<br>[16:42] taking names here that it might be<br>[16:43] possible that Yoast gives you a composer<br>[16:46] API gravity forms give you a composer<br>[16:48] API but then again there are like<br>[16:52] vendors that don't provide you composer<br>[16:54] API they just give you GIFs you can<br>[16:56] download GIFs from their uh from log to<br>[17:00] their dashboard just download GIFs and<br>[17:03] that is when the problem comes so now<br>[17:05] now the thing is that for many of the<br>[17:08] vendors you can download those packages<br>[17:10] uh using composure and now for some of<br>[17:13] the vendors you can just don't do that<br>[17:15] because you have to download manually<br>[17:17] using their dashboard. Now in those<br>[17:18] particular scenarios the auto sorry the<br>[17:22] workflow is like very messy when it's<br>[17:24] come to uh respond quickly to the<br>[17:27] updates right pushing to the live<br>[17:29] product live environments so that is<br>[17:32] like very problematic that is something<br>[17:33] that I have felt in past five years and<br>[17:36] that is why I came to build something<br>[17:38] that is like centralized that is specd<br>[17:40] driven so that whenever some vendor want<br>[17:43] to distribute a plug-in or theme they<br>[17:45] can just bind to one framework that<br>[17:47] Okay, I have this meta that if I am<br>[17:50] distributing a plug-in or theme that I<br>[17:53] provide a GIF for it or a tarot for it<br>[17:55] and I provide a meta data file with it.<br>[17:58] So no matter how user is going to<br>[18:01] download this thing, they can automate<br>[18:03] their workflows in a singular way so<br>[18:06] that anyone can download these artifacts<br>[18:08] that I'm distributing. So that's the<br>[18:10] whole point. Now coming to second point<br>[18:13] is the security.<br>[18:15] So for example that uh le let's talk<br>[18:18] about uh composer repo you are using how<br>[18:22] you are so confident that whatever you<br>[18:24] are downloading from the composer repo<br>[18:26] is exactly the same that author has<br>[18:29] published there how you can<br>[18:31] cryptographically verify or like you can<br>[18:34] be confident that I'm getting the same<br>[18:36] thing and there is no supply chain<br>[18:38] attack in the middle. So what these<br>[18:42] composure repositories generally do is<br>[18:44] so there is a wordpress.org distribution<br>[18:47] system they place their mirror at this<br>[18:50] level in the middle and now you are the<br>[18:52] consumer here. So you will make request<br>[18:55] here your request will go to<br>[18:57] wordpress.org<br>[18:58] and now there is a like layer that can<br>[19:00] be compromised in a way. So how can you<br>[19:03] be sure that you are actually<br>[19:05] downloading what you requested?<br>[19:08] WPM fixes that. WPM has like very good<br>[19:11] built-in supply chain primitives that<br>[19:14] that very that actually verifies that<br>[19:16] you are downloading what you uploaded.<br>[19:19] It verifies that thing<br>[19:20] cryptographically. Now uh also I have<br>[19:23] also managed private plugins and themes<br>[19:26] using composer and trust me that is very<br>[19:29] messy. So to do that in composer first<br>[19:32] you have to find out that whether your<br>[19:34] vendor provides uh the composer API or<br>[19:37] not. If they provide then you have to<br>[19:39] add those particular entries into your<br>[19:41] composer.json's<br>[19:43] repository config and then you have to<br>[19:45] manage off.json that varies by every<br>[19:48] vendor. So for example, you are<br>[19:51] downloading or you are using premium<br>[19:53] plug-in and themes from five vendors and<br>[19:56] three of them provides composer API then<br>[19:59] you have to manage authentication or<br>[20:02] authorization for three uh of those<br>[20:05] vendors in your JSON and for rest of the<br>[20:07] two you just have to do things manually.<br>[20:11] >> Okay.<br>[20:12] >> Yeah.<br>[20:12] >> Okay. Cool. So um<br>[20:16] yeah. Okay. So let's maybe um someone in<br>[20:20] the chat is saying can we see it in<br>[20:21] action and what a what a workflow would<br>[20:23] would look like. So is there anything<br>[20:25] else like so I like we're talking about<br>[20:27] like entering all the security and all<br>[20:30] of that stuff. So so are you storing<br>[20:32] versions of these plugins?<br>[20:34] >> Yeah. So<br>[20:35] >> what I do is uh let me share a link with<br>[20:38] you.<br>[20:39] >> Sure.<br>[20:41] Uh<br>[20:43] >> you you can drop it if you're if you're<br>[20:45] in chat you can drop it in chat<br>[20:48] yourself.<br>[20:48] >> Uh I will<br>[20:50] >> or you can just you can send it to me in<br>[20:51] Google meet.<br>[20:53] >> Um I am having a hard time to find it.<br>[20:55] I'll just send it in Google meet chat.<br>[20:57] >> Sure.<br>[20:58] >> So this is uh like an automation system.<br>[21:03] What this automation system does it that<br>[21:05] every 15 minutes it will check that are<br>[21:09] there any new plug-in on themes<br>[21:11] published on the WordPress.org<br>[21:13] uh SBN repo. It will uh run a chron job<br>[21:18] every 15 minutes. It will download all<br>[21:21] those plug-in and themes. It will create<br>[21:23] a JSTD compressed tarball out of it and<br>[21:26] it will push that to the WPM registry.<br>[21:29] While pushing it, WPM registry will will<br>[21:31] verify its check sum and it will<br>[21:34] generate cryptographically verifiable<br>[21:36] signatures that will now later be uh<br>[21:39] distributed in the package manifest. Now<br>[21:42] using those signatures and using the<br>[21:46] public key that is distributed over<br>[21:48] HTTPS right now I'm planning to move<br>[21:50] that over to tough repo. You can verify<br>[21:53] whether this is the same package that<br>[21:55] was uploaded.<br>[21:57] So like uh if so also uh this project is<br>[22:02] not just for WPM in case you want to<br>[22:05] create your own mirror on top of<br>[22:07] WordPress.org in a like very secure way<br>[22:10] you can also use this project you can<br>[22:13] also create your own composer registry<br>[22:15] on top of WordPress.org using the same<br>[22:17] product that I'm using. So it's like<br>[22:20] very extendable.<br>[22:24] >> Very nice. Oh my god. I'm sorry.<br>[22:28] This cough has been dogging me for days.<br>[22:30] Okay, anyways. So, okay, cool. So, let's<br>[22:34] let's let's let's dive into it. So,<br>[22:36] okay. I have set up a site. I have just<br>[22:40] a random site that I set up with studio.<br>[22:42] >> Mhm.<br>[22:43] >> So, what what do I need what do I need<br>[22:45] to do? Do I first I I'm going to need to<br>[22:47] install this, I assume. I'm going to<br>[22:49] open<br>[22:49] >> So, you can go to wpm.so.<br>[22:52] based on your operating system. You will<br>[22:55] get a install command<br>[22:57] >> and you can just run<br>[22:58] >> that.<br>[22:59] >> All right. And so does this this will<br>[23:01] install it globally? I I I assume.<br>[23:04] >> Yeah.<br>[23:05] >> Okay. It's downloading.<br>[23:07] >> I just hope it works on Mac.<br>[23:10] >> Me too.<br>[23:12] >> Yeah.<br>[23:12] >> Okay. So, all right. So,<br>[23:14] >> now you can just uh reload your shell<br>[23:17] once. You can run you can basically<br>[23:21] >> run the command above the<br>[23:23] >> WPM help that is printed in the<br>[23:27] information<br>[23:28] >> right<br>[23:30] uh<br>[23:30] >> it's it's it's execute exec bing dish<br>[23:36] >> there we go wpm oh I spelled it wrong<br>[23:38] wpm-help<br>[23:40] let's see what we got okay so there's a<br>[23:42] lot of stuff in here I'm just going to<br>[23:43] make this a little bit bigger<br>[23:46] auth Oh Okay. So, knit.<br>[23:49] >> Yeah.<br>[23:50] >> Okay. So, how how would you recommend<br>[23:52] having never used this before?<br>[23:55] >> So, uh there there are like few things<br>[23:57] uh whether you want to<br>[24:00] create a plug-in, create a theme or you<br>[24:02] want to like create a generic WordPress<br>[24:04] project which have a lot of plugins and<br>[24:06] themes.<br>[24:09] >> Um I don't know. So, where am I right<br>[24:12] now? I think I'm in I'm in the root of a<br>[24:14] WordPress in installation. So, should I<br>[24:17] go? So, let's say I wanted to create a<br>[24:19] plugin.<br>[24:20] >> So, I I need to see.<br>[24:21] >> So, I I I think uh I think let's just do<br>[24:25] uh let's just do WPM install and your<br>[24:28] favorite plugin of theme.<br>[24:33] >> Oh, sorry. Oh, install. Okay.<br>[24:36] >> Yeah, WPM install.<br>[24:38] >> But do I have to do that from my WP<br>[24:40] content folder?<br>[24:41] >> Uh no, no, no. Just just do it in the<br>[24:42] root. So what WPM does it that by<br>[24:46] default it will place your plug-in and<br>[24:47] themes into the WP content folder until<br>[24:50] and unless you have configured it to be<br>[24:52] somewhere else.<br>[24:53] >> Okay. So all right so I and then what do<br>[24:56] I pass? So if I want to do install<br>[24:59] uh oh no<br>[25:02] so what so what am I so if I just do<br>[25:04] install okay it's telling me oh I have<br>[25:06] to pass the name of a plugin for for<br>[25:08] example right okay well there's only one<br>[25:10] plugin that everyone should be<br>[25:12] installing it's called advanced query<br>[25:13] loop and it's by<br>[25:17] the best looking guy named Ryan on this<br>[25:19] stream<br>[25:22] install advanced query loop boom<br>[25:24] resolving okay So, let's look at let's<br>[25:28] I'm just going to open this up in Visual<br>[25:30] Studio so we can just see what's going<br>[25:33] on. What's going on? There we go. All<br>[25:35] right. So, content plugins advanced<br>[25:38] query loop. Okay. So, it installed. That<br>[25:40] was super painless. Um, all right. Demo<br>[25:44] over. We can go home.<br>[25:46] So, cool. Okay. So, that's that. So,<br>[25:48] that's great. So, how so let's say that<br>[25:50] I I I<br>[25:51] wanted to<br>[25:53] instead of pulling it from Okay. So like<br>[25:55] what would be the next thing?<br>[25:58] >> Uh so yeah<br>[25:59] >> all right actually we before we move on<br>[26:01] we do have h have a question here from<br>[26:03] thrown error. He's asking the hard<br>[26:06] questions. I'm just going to spotlight<br>[26:08] it. The question is I keep hearing<br>[26:09] securing and security. Can you give an<br>[26:11] example of why this is secure and what<br>[26:13] security measures?<br>[26:15] >> Okay so um I keep hearing secure and<br>[26:20] security. Okay. So in WordPress<br>[26:23] ecosystem,<br>[26:26] let's say you are downloading a plug-in<br>[26:29] or theme from some source, right? Let's<br>[26:33] say I am the website owner. Let's say I<br>[26:36] am the plug-in owner and you are<br>[26:38] downloading it from my website. You are<br>[26:40] downloading the plug-in or theme and now<br>[26:44] my website is hacked or compromised in<br>[26:47] some way. I don't know.<br>[26:50] And now someone what they just did is<br>[26:52] that I I people trust me right they will<br>[26:57] trust my product that okay this person<br>[26:59] have created this plug-in or theme I<br>[27:01] will just use it blindly on my system<br>[27:03] and when they downloaded this plug-in or<br>[27:06] theme now now you have some security<br>[27:08] nightmare at your end and it it could it<br>[27:12] have been prevented yes there could have<br>[27:15] been a good tooling in place to<br>[27:16] determine that what you are downloading<br>[27:19] is is integrity is like good<br>[27:24] then that problem wouldn't have happened<br>[27:26] in the first place. Right.<br>[27:28] >> Right.<br>[27:29] >> But since there is no tooling.<br>[27:31] >> Mhm.<br>[27:31] >> Mhm. No sorry carry on.<br>[27:34] >> But since there is no tooling there is<br>[27:35] no way to identify uh that whether this<br>[27:38] thing have been like tempered in transit<br>[27:41] or not. So that's the like main goal<br>[27:45] >> of security.<br>[27:47] So, so in the in the in the case that I<br>[27:50] that my my advanced query loop plugin, I<br>[27:52] decide to offer a premium version of it<br>[27:53] and I sell it through my website only.<br>[27:56] >> Um,<br>[27:57] >> this<br>[27:59] uh and my my my site is hacked. Someone<br>[28:02] replaces the archive with a flappy a<br>[28:05] Flappy Bird clone. We all know what<br>[28:07] happens when you click those links<br>[28:08] >> and uh and it gets downloaded to a<br>[28:12] client site. The world ends, right? So<br>[28:14] what so what we're saying is is WPM<br>[28:17] >> allows allows vendors<br>[28:20] >> um to subscribe to the system. I'm I'm<br>[28:23] not sure if if that's the right word but<br>[28:25] but prepared their plugins in such a way<br>[28:27] that it can be ingested by you your<br>[28:31] service and and so when you download it<br>[28:34] through uh WPM um you are like so I'm<br>[28:40] assuming WPM does that that<br>[28:43] cryptographical check for us right so so<br>[28:46] there's no possible way<br>[28:48] >> now how does okay is that accurate so is<br>[28:51] there a copy of my advance query loop<br>[28:53] plugin on your server somewhere.<br>[28:55] >> Yeah. So, um you you pushed your<br>[28:58] advanced query plug-in on your uh on on<br>[29:01] WPM, right? And let's say so it's like<br>[29:05] future proof. No one can like no user<br>[29:08] can download a temporal version now.<br>[29:11] >> Okay.<br>[29:11] >> And let's say I have to as<br>[29:13] >> as the plug-in author I I have to say,<br>[29:15] okay, I've published this to to the<br>[29:17] repo. I'm going to publish this to to<br>[29:20] WPM just the same way that you would<br>[29:22] publish to a composer package or you<br>[29:23] would you you well maybe not composer<br>[29:26] but like for npm for example when you<br>[29:29] want to publish a new version of that<br>[29:30] you you push it up to the system right<br>[29:32] >> so it's the same idea<br>[29:34] >> uh yeah sort of<br>[29:36] >> okay<br>[29:37] >> so<br>[29:38] >> okay cool<br>[29:38] >> and to explain it in simple terms<br>[29:41] >> that what happens is that uh let's say<br>[29:45] even if WPM get compromised that WPM<br>[29:49] would never install that compromised<br>[29:51] package and the reason being is that the<br>[29:55] cryptographic verification is like<br>[29:56] deterministic.<br>[29:58] You can't fake public key for a private<br>[30:01] key that is used to sign particular<br>[30:02] metadata for a package. So even if they<br>[30:05] let's say they changed the uh let's say<br>[30:10] let's say they changed the contents of<br>[30:12] her artifact they changed somehow the<br>[30:15] they were able to change the even the<br>[30:17] manifest but they can't have access to<br>[30:19] private key because it's hosted in HSM<br>[30:22] backed hardware somewhere in the AWS KMS<br>[30:25] data centers. So,<br>[30:27] >> so they just can't hack it. And if you<br>[30:29] can't hack up private key to generate<br>[30:31] more signatures, you you can just uh<br>[30:34] fake this.<br>[30:36] >> Okay. So, the long and short of it is<br>[30:39] it's it's once it's in the system of the<br>[30:43] WPM system, it's next to impossible to<br>[30:45] to fake it. Now,<br>[30:46] >> can<br>[30:49] >> that's got me think. So, let's say that<br>[30:50] I didn't realize that there was<br>[30:52] something wrong with the zip and I<br>[30:55] >> published it. Um<br>[30:57] there's nothing stopping that but I<br>[31:00] guess that's just like that that's user<br>[31:01] error.<br>[31:03] >> Yeah. Yeah.<br>[31:04] >> That's my problem. Right.<br>[31:05] >> So what what what can be stopped is<br>[31:07] let's say somehow someone was able to<br>[31:10] get your right tokens uh right and<br>[31:13] someone tries to uh<br>[31:17] publish a package using that particular<br>[31:21] token. that won't be possible because I<br>[31:23] will be bringing publisher uh<br>[31:27] uh mechanism to the WPM. So in that<br>[31:31] particular scenario what happens is that<br>[31:34] you will connect WPM and your GitHub<br>[31:36] repo basically the source from where you<br>[31:39] publish your uh plug-in or theme right<br>[31:43] so what happen is that currently it's<br>[31:45] supported on GitHub and GitLab so let's<br>[31:47] say your repo is on GitHub GitHub and<br>[31:49] GitLab you will connect<br>[31:51] uh your GitHub repo to WPM something<br>[31:54] using something called like OIDC<br>[31:56] verification.<br>[31:58] So now when you will publish that<br>[32:00] particular package that can only be<br>[32:01] published from your GitHub repo<br>[32:05] and uh when you will initiate the<br>[32:07] publish chain like very shortlived write<br>[32:10] token will be generated and that will be<br>[32:12] used to publish that particular package.<br>[32:14] So even your right uh token is like uh<br>[32:19] compromised in some way uh end user just<br>[32:22] can't publish anything to WPM because it<br>[32:25] will verify that how the last version of<br>[32:28] the plug-in uh was published was it<br>[32:31] using OIDC was it using manually then it<br>[32:34] will check that if OIDC is connected is<br>[32:36] it being published from the legit repo<br>[32:39] that is configured in the WBM dashboard<br>[32:41] and it will just reject the push.<br>[32:44] >> Okay. So it sounds it sounds like<br>[32:45] there's a a number of layers of security<br>[32:49] here. Throw it to your does that sort of<br>[32:51] answer your questions?<br>[32:52] >> Also uh there is one more thing that end<br>[32:55] user can attest that from which source<br>[32:58] this uh plug-in was created from. So it<br>[33:02] is something called material of bill<br>[33:04] that we put it in a test station that<br>[33:07] you can verify that it can that can be<br>[33:09] used to prove that where this plug-in<br>[33:11] was built. For example, let's say you<br>[33:13] build your plug-in in GitHub actions.<br>[33:15] Then it will push the information like<br>[33:17] that it was built in GitHub actions.<br>[33:19] This was the uh operating system version<br>[33:23] at that time. These were the packages<br>[33:24] installed at that time. So in case the<br>[33:27] these things help you to identify let's<br>[33:29] say uh someone find a back door in the<br>[33:32] GitHub actions itself and they<br>[33:34] compromise the package in such a way. So<br>[33:36] such things can even help to identify it<br>[33:38] further than where the problem really<br>[33:40] occurred.<br>[33:42] So that are the like types of security<br>[33:45] uh uh security things that I'm trying to<br>[33:48] bring to WPM and mostly to the WordPress<br>[33:51] ecosystem so that people can be aware<br>[33:53] about it.<br>[33:54] >> Okay. So how so let's say I wanted to<br>[33:59] um opt my plugin in. So, like<br>[34:02] >> I'm assuming at this point everything<br>[34:04] that's on that's hosted is like in in<br>[34:08] the plugins re uh repo<br>[34:10] >> is is available. Um yeah, because I did<br>[34:13] I did nothing to to add my plugin to it,<br>[34:16] but it's there.<br>[34:17] >> Yeah.<br>[34:17] >> So, if I wanted to um<br>[34:21] how like if I wanted to say allow people<br>[34:25] to download the source of my plugin,<br>[34:28] >> is that something that I would do or is<br>[34:30] that just<br>[34:31] Uh you you mean download the source of<br>[34:33] your uh you mean download your uh plugin<br>[34:37] from WPM, right?<br>[34:39] >> Yeah. So like like I've I've got a<br>[34:41] repository that my advanced plugin is in<br>[34:43] and it contains all the source files<br>[34:45] which it's open source. So, like if I<br>[34:48] wanted if I wanted to<br>[34:50] >> so let's say that that you know RTMP<br>[34:52] wants to use my my plugin on a on a<br>[34:55] project but they want to be able to<br>[34:58] >> like they want to be able to to see the<br>[35:00] source files because they need to um you<br>[35:03] know<br>[35:04] >> uh get it approved by VIP or you know<br>[35:07] you want to do a uh security check<br>[35:09] internally and stuff like that. Is there<br>[35:10] a way to be to to<br>[35:12] opt into that sort of thing to say<br>[35:14] here's the entire source file but you'll<br>[35:16] have to build it basically.<br>[35:18] >> Yeah. So so there can be few things that<br>[35:20] uh you can link your GitHub profile<br>[35:22] using your you uh using I think GitHub<br>[35:25] repo field maybe in WPMJSON I I don't<br>[35:28] remember if I have even added that or<br>[35:30] not. So basically you can you can do it<br>[35:32] anywhere. Let's say just include your<br>[35:34] repo link in read me and if you will go<br>[35:37] to so let's say let's if you can go to<br>[35:40] wpm.so website I can show you that how<br>[35:42] you can see the strike is there.<br>[35:45] >> Yeah<br>[35:45] >> that would be like much better<br>[35:48] and just go to plugins<br>[35:50] or search whatever you want.<br>[35:54] >> Oh my keyboard<br>[35:55] >> and search your plugin here. Yeah,<br>[35:58] sorry. My keyboard uh<br>[36:01] disconnects if I don't type. Oh, well,<br>[36:04] there we go.<br>[36:06] Query.<br>[36:08] Oh, come on.<br>[36:10] There we go. So, I click on that one.<br>[36:16] So, you can link required metadata here.<br>[36:19] You can copy the install command from<br>[36:21] here. And literally, this is what you<br>[36:23] need to like download your plug-in. So,<br>[36:26] by the way, this information is passed<br>[36:28] from readme.txt<br>[36:30] of your plug-in.<br>[36:31] >> Oh, okay.<br>[36:32] >> Then it converted to readme.md and then<br>[36:34] it's being shown.<br>[36:36] >> So, if I download this this this<br>[36:38] tarball, this will just essentially be<br>[36:41] the the built version of my plug that<br>[36:44] I've shipped to.org. So, if I wanted to<br>[36:46] to make this um like if I wanted to say,<br>[36:50] okay, so you have that that option,<br>[36:52] which is great, but also I want someone<br>[36:55] to be able to download the actual raw<br>[36:56] source<br>[36:58] um in as is is that a possibility? So I<br>[37:03] so to download the raw source uh you can<br>[37:06] link your raw source information<br>[37:09] somewhere maybe in read me or I will<br>[37:11] give a field that will show that<br>[37:13] particular source link. Uh see that<br>[37:17] there is a homepage section there maybe<br>[37:19] it will take you to there or maybe I<br>[37:21] will add one more button here called<br>[37:23] source repo that will take you to the<br>[37:25] source.<br>[37:26] >> Yeah like so so so there is like a link<br>[37:29] to my official thing here. Yeah.<br>[37:31] >> Like, well, let me back up first. Like,<br>[37:34] does that sound like something that<br>[37:36] people would want? I feel like<br>[37:38] >> if if I'm going to be checking this<br>[37:41] checking this project out<br>[37:44] >> and and bundling it with my client theme<br>[37:46] or whatever it is, um, you know, having<br>[37:49] the the source files which which don't<br>[37:52] get included when you build it, um, you<br>[37:55] know,<br>[37:55] >> yeah, and distributed to.org. I feel<br>[37:58] like this option um would be the better<br>[38:02] one. Not but not not everyone's going to<br>[38:04] want this option. Like some people just<br>[38:05] want to install the plugins. So So<br>[38:08] >> is that a use case? Like I feel like<br>[38:09] that that would be a use case cuz like<br>[38:12] >> when I was at Tenop, you know, we used<br>[38:14] to have to do plug-in reviews all the<br>[38:15] time. client would say, "Hey, I I I want<br>[38:17] to use<br>[38:19] >> amazing a gallery slider plugin that we<br>[38:22] have to like spend hours and hours<br>[38:24] reviewing and all the JavaScript was<br>[38:25] always<br>[38:26] >> minified and stuff like that." And so<br>[38:28] like I I feel like<br>[38:30] >> um being able to provide the source<br>[38:34] version of this plugin that then, you<br>[38:35] know, in the project you would just add<br>[38:37] it to your build process or your<br>[38:39] whatever would be something that people<br>[38:41] would be into. Am I I don't know, Chad,<br>[38:43] what what do you think? Is that<br>[38:44] something that people would want? I<br>[38:46] mean, if you're I don't see why somebody<br>[38:50] would be like you can have my plugin but<br>[38:52] not the source because it's also<br>[38:54] licensed. But<br>[38:55] >> my thing process is that whoever want<br>[38:57] this level of observability<br>[39:00] most of the time they will be easily to<br>[39:02] figure out that from where the source is<br>[39:03] coming. For example, you were<br>[39:05] >> easily able to identify the rappling<br>[39:08] from the reading.<br>[39:09] >> Yeah.<br>[39:10] >> So, so they can they can just find it.<br>[39:12] Yeah. And I can also add a like<br>[39:14] dedicated field that can link to the<br>[39:16] source. Generally right most people do<br>[39:20] that to like homepage or something like<br>[39:22] that from where you will be able to get<br>[39:24] all the information<br>[39:25] >> and it's there already.<br>[39:27] >> It may not it may not even be something<br>[39:28] that that is that important.<br>[39:31] >> Um because you're right I mean like<br>[39:33] >> people will just say okay well let's go<br>[39:36] look at the repo and then they'll then<br>[39:37] they'll they'll sick uh like co-pilot on<br>[39:40] it anyways to do the review. So, so<br>[39:42] maybe that's not a big deal. Okay, cool.<br>[39:44] >> Yeah.<br>[39:45] >> Yeah.<br>[39:46] >> But I have like lot of things planned up<br>[39:48] for this if it goes well.<br>[39:50] >> One is that uh that by looking at the<br>[39:54] source right when I pushing things to<br>[39:56] WPM, I can quickly pass all the source<br>[39:59] code and find out all the custom hooks<br>[40:03] and document them on the website itself.<br>[40:05] So,<br>[40:05] >> oh that's nice.<br>[40:06] >> Yeah. So many uh ecosystem does that.<br>[40:09] For example, if someone's have worked<br>[40:10] with Go, go have like really cool<br>[40:13] implementation. They just show<br>[40:15] >> the package. So, so we can also do that<br>[40:18] here. So, not only does it become a<br>[40:21] place for like to to download plugins<br>[40:24] and find plugins, it also becomes, you<br>[40:27] know, some a bit of documentation as<br>[40:29] well, which as we all know is the last<br>[40:32] thing that any developer really wants to<br>[40:34] spend time doing is is<br>[40:36] >> especially when you have like, you know,<br>[40:38] like like my plugins got two hooks in<br>[40:40] it, I think. aren't that it's not that<br>[40:42] that big a deal to document but<br>[40:44] >> um so throw to error is asking so it<br>[40:48] this is more of a version control system<br>[40:51] and I don't think it is I think it's<br>[40:53] basically along the same lines of um and<br>[40:57] you know I'm going to answer I'm going<br>[40:58] to answer for you love cash and you tell<br>[41:00] me if I'm wrong or not uh this is not<br>[41:03] version control this is this is like a<br>[41:06] distribution control I think is what it<br>[41:09] is like the same It's npm for WordPress<br>[41:12] plugins and and and themes. That's<br>[41:14] that's the that's the oneline elevator<br>[41:17] pitch I think.<br>[41:19] >> Yeah. Yeah. Yeah. That that's correct.<br>[41:20] It's not a version control. Rather, it's<br>[41:22] a uh you can have information about all<br>[41:25] the versions that we have published<br>[41:27] here. That's one thing. But it's not uh<br>[41:30] like version control in like a strict<br>[41:32] way uh for talking about version control<br>[41:35] system like git and all that stuff.<br>[41:37] >> Right. So how so this does this ingest<br>[41:40] all the tags that are available on.org<br>[41:42] like is that how this<br>[41:44] >> Yeah. Okay.<br>[41:45] >> So all the tags are available on WPM and<br>[41:48] I do it because uh to support backward<br>[41:51] compatibility basically let's say<br>[41:53] someone is on version 1.00<br>[41:56] so they can also download<br>[41:58] >> but<br>[41:58] >> and you may also want to um you know<br>[42:01] lock to a certain version you know.<br>[42:04] >> Yeah. Yeah. and and stuff. Just put AI<br>[42:06] on the landing page and people will just<br>[42:07] put AI. Kevin says just put AI on the<br>[42:11] landing page and people will use it.<br>[42:12] There you go. You should call it<br>[42:15] wpm.so.ai<br>[42:16] and now you'll get like a thousand more<br>[42:19] >> more people jumping on. No.<br>[42:22] Okay. So, I can import things from<br>[42:25] packages that I thrown is asking a<br>[42:28] question. So, I So, can I import things<br>[42:30] from packages that I install? I don't<br>[42:33] think I I understand<br>[42:36] the question. Does that<br>[42:38] >> So I I I think I I got it. They are<br>[42:40] asking because this thing generally<br>[42:42] happens in npm. So you install packages<br>[42:45] and then you import them. But the<br>[42:47] WordPress and PHP ecosystem works in a<br>[42:50] different way. You have to activate a<br>[42:52] plug-in and then you can use their code.<br>[42:54] Like if they are exposing hooks, then<br>[42:56] you can add your functionality to those<br>[42:58] hooks. not import like you uh think in a<br>[43:02] thing or like you do in npm or in<br>[43:04] composite.<br>[43:04] >> Yeah. Okay. That's a really good<br>[43:07] distinction. So think of it as npm but<br>[43:09] just the part that manages what you are<br>[43:12] downloading not the not how you're using<br>[43:14] what you're downloading. Right. That's<br>[43:16] sort of<br>[43:17] >> Yeah. So so the same way that like<br>[43:20] composer is meant to to to download the<br>[43:23] PHP libraries that you want to use. Um,<br>[43:26] and then how you use that stuff is is<br>[43:29] secondary, but this is how you get<br>[43:30] access to it. Uh,<br>[43:34] Kevin's asking, "How did all those<br>[43:35] versions get there? Does it slurp the<br>[43:37] SVN?" That's he's talking about the<br>[43:40] Yeah, does yes.<br>[43:41] >> Yes, Kevin.<br>[43:45] >> So, I I I can like explain it a little<br>[43:47] bit more. So what happens is that like I<br>[43:49] mentioned before that every 15 minutes a<br>[43:52] chron will check the state of SPN repo<br>[43:56] since the last time it was scrapped and<br>[43:59] it will find the difference and then it<br>[44:01] will try to figure out that what<br>[44:03] packages have been upload in that<br>[44:05] particular time frame and then it will<br>[44:06] migrate. So you can go to WP2 WPM repo.<br>[44:11] Uh Ryan will share the link and you can<br>[44:14] go to actions and you can see like lot<br>[44:16] of jobs there that are updating the uh<br>[44:20] reply.<br>[44:22] >> Yeah. So in the GitHub one GitHub<br>[44:25] workflows in here.<br>[44:27] >> Yeah. You can go to actions.<br>[44:30] >> Oh sorry<br>[44:32] >> on the on the actions tab itself.<br>[44:34] >> Oh actions tab. Yeah. I'll I'll learn<br>[44:38] >> on on the top on the right hand side.<br>[44:41] >> So these are the like migrate jobs<br>[44:42] happening every 15 minutes.<br>[44:45] >> Let's take a look here. So oh mine I I<br>[44:50] Okay.<br>[44:59] >> Oh, okay. Cool. So this So So what does<br>[45:02] this do? Does it just um does it just<br>[45:06] kind of like get the latest ones that<br>[45:08] have been updated or is like this this<br>[45:10] must run on some kind of b because I I<br>[45:12] know how many plugins get submitted<br>[45:14] every day to the plug-in repository. So<br>[45:17] this thing must be running constantly.<br>[45:19] >> Yeah, it's it's running every 15<br>[45:21] minutes. Okay,<br>[45:23] >> it founds the difference that let's say<br>[45:25] your plug-in have 100 versions<br>[45:27] >> and it's published then it will try to<br>[45:29] find the diff that what versions are<br>[45:31] already there on WPM and what versions<br>[45:33] are remaining<br>[45:34] >> and then it will push those remaining<br>[45:36] versions to it.<br>[45:37] >> Oh, nice. So like it starts with most<br>[45:39] recent and then kind of works it way<br>[45:40] down I'd imagine something like that.<br>[45:41] Okay, cool. Yeah. So yeah, um just as a<br>[45:45] as a as an aside, I think the plug-in<br>[45:48] team is getting something in the the<br>[45:49] like four or 500 submissions a day for<br>[45:53] new plugins. That's insane. That's<br>[45:56] insane how many and so many of them and<br>[45:58] it's because of AI. So anyways, so shout<br>[46:00] out to the plug-in team who's doing a<br>[46:01] hell of a job keeping that that uh Q<br>[46:04] time as low as it is. Anyhow, um okay,<br>[46:08] cool. So, what else<br>[46:11] should I Okay, so what else can be done?<br>[46:14] So, we installed the plugin.<br>[46:15] >> Yeah.<br>[46:16] >> Cool. Now, what what what<br>[46:18] >> I want you to show me the coolest like<br>[46:20] wow feature of this right now. I put you<br>[46:22] on the spot. Show me the coolest thing<br>[46:23] you can do.<br>[46:24] >> Um, let me give you one command in chat<br>[46:27] and try install.<br>[46:29] >> All right, let's let's do it. And and if<br>[46:31] it's an RMR RF, I'm not running it. Or<br>[46:34] if it's a link to<br>[46:36] the Flappy Bird, if you're not familiar<br>[46:39] with what I'm talking about chat or look<br>[46:42] at, someone uh<br>[46:46] linked a Flappy Bird clone, Flappy Bird<br>[46:49] clone in in my chat one day and I like<br>[46:52] an idiot clicked on it and it changed<br>[46:55] me. It changed my life and I'll never be<br>[46:58] I'll never be be the same. Okay. So,<br>[47:01] this is a this is the command that you<br>[47:03] sent me. WPM install Dynopac for<br>[47:06] Elementor.<br>[47:08] >> Yeah.<br>[47:08] >> What? Well, first it's not Gutenberg, so<br>[47:12] I'm a little bit annoyed, but that's<br>[47:14] fine. What do I What do I So, what's<br>[47:16] this going to do? Or should we just run<br>[47:18] it and see what happens?<br>[47:19] >> Yeah, you you just run it and see.<br>[47:21] >> Okay, here we go. Are you ready? I'm<br>[47:23] going to zoom it in. Actually, before I<br>[47:25] I do that, I'm going to I'm just going<br>[47:27] to clear it out so we can see it. Here<br>[47:28] we go. Install a dino pack for element.<br>[47:30] Bang.<br>[47:33] What's it doing? Okay,<br>[47:35] now what? It did it.<br>[47:38] >> So if you will notice that it just<br>[47:40] didn't install nanop for elemental<br>[47:42] rather it also installed elemental with<br>[47:44] itself.<br>[47:45] >> Oh, so it just figured that out.<br>[47:46] >> Yeah. And now if you will if you will do<br>[47:49] wpmls<br>[47:53] >> what? Sorry, what was the command?<br>[47:55] >> WPM ls list<br>[47:56] >> ls. Yeah.<br>[47:59] >> Oh. Oh, that's cool.<br>[48:02] >> Now it will show you that<br>[48:04] >> how many dependencies you are using and<br>[48:07] why element exists there in the first<br>[48:09] place.<br>[48:10] >> So in composer<br>[48:12] >> in your WordPress dashboard I I doubt if<br>[48:15] you will be able to figure it out in<br>[48:16] such a way.<br>[48:18] >> That's really nice. So this is showing<br>[48:20] me all the plugins. So, how does this<br>[48:22] So, like if I were to do WPM install uh<br>[48:26] blockbase, which is a theme,<br>[48:29] right? I think it's<br>[48:31] >> I just hope it's there.<br>[48:33] >> It is. There you go. WPM ls.<br>[48:37] Okay. So, it doesn't show me the themes.<br>[48:39] So, do I have to specify if I want to<br>[48:41] see themes and and plugins like like<br>[48:43] themes? Oh, here's a question. Oh my<br>[48:46] god, so many things. Okay, let me I have<br>[48:49] I have 10 questions. So, let me just<br>[48:50] start with the first one. Um, if I<br>[48:52] wanted it to show me all the installed<br>[48:54] themes, is there is there something that<br>[48:56] I have to do for that?<br>[48:57] >> Yeah, that would be a cool feature and I<br>[48:59] would love if you can create a issue on<br>[49:01] CLA repo.<br>[49:02] >> Sure. Yeah. Yeah. Yeah. Okay. So, that's<br>[49:05] the first thing. The second the the the<br>[49:07] second part of that is it would be<br>[49:09] amazing if you could show child themes<br>[49:12] in the same hierarchal uh structure<br>[49:14] which I I don't know if I said that word<br>[49:16] correctly. Yeah, that that<br>[49:19] >> Yeah, because that that would be very<br>[49:20] cool. Or you just run ls and it says<br>[49:23] plugins blah blah blah blah themes blah<br>[49:24] blah blah blah shows you what<br>[49:27] >> it should also show you what's does it<br>[49:28] know what's active? Does it have access<br>[49:30] to the database or is it just more file<br>[49:32] structures?<br>[49:32] >> No, it it it's just uh uh FS only. No<br>[49:37] access to your WordPress installation.<br>[49:39] >> Well, that's good to know.<br>[49:41] >> Um Okay, cool. So, it will just show you<br>[49:43] what you have installed, not necessarily<br>[49:44] if if it's running or active or not. And<br>[49:46] that's that's cool.<br>[49:48] >> That's that's the thing for your uh like<br>[49:50] WordPress dashboard to figure out.<br>[49:52] That's why it exists to show.<br>[49:54] >> Yeah. Yeah. No, I I think I think it's<br>[49:56] better. Personally, I think it it would<br>[49:58] feel a bit icky if uh and icky is the<br>[50:00] technical term, by the way. It would<br>[50:02] feel a bit icky if um if this tool had<br>[50:05] man had access to the database because I<br>[50:07] don't know why I would ever need to.<br>[50:08] >> Yeah. Um<br>[50:11] okay.<br>[50:12] >> Okay. So one more cool feature coming<br>[50:14] your way. Mhm.<br>[50:15] >> So let's say now you don't have just<br>[50:17] three or four packages here rather you<br>[50:19] have like 10 or 20 packages here<br>[50:22] >> and you spotted a plug-in or theme that<br>[50:25] you don't remembering installing and you<br>[50:28] are questioning yourself that why it<br>[50:29] exists here then you can just simply<br>[50:32] type WPMY and then plugin of theme<br>[50:36] >> WPMY WPM<br>[50:39] sorry PM Y and then say what Blockbase<br>[50:44] maybe.<br>[50:45] >> Yeah.<br>[50:45] >> Wait, it did list Blockbase. Hold on.<br>[50:48] Maybe that's a plugin. Let me check.<br>[50:52] Just let me check that.<br>[50:54] >> Ideally, you should have copied<br>[50:55] elementor because element is something<br>[50:57] that you have you don't you haven't<br>[50:59] installed yourself and installed by<br>[51:02] package.<br>[51:02] >> Let me get that over here. So, let's<br>[51:05] just see plugins. Install plugins. Is<br>[51:07] there a blockbased plugin? No, there<br>[51:08] isn't. Okay. So,<br>[51:13] okay, they're not, but that's fine. I'm<br>[51:15] just going to go in the themes. So, it<br>[51:17] did install Black Oh, interesting. So,<br>[51:19] it did install Blockbase, which is a<br>[51:21] theme, and it's actually showing it in<br>[51:23] the list already, but it wasn't showing<br>[51:25] it up here.<br>[51:26] >> Oh,<br>[51:29] that's okay. That's cool. Um, so if if I<br>[51:33] say why block base, it'll tell me why.<br>[51:37] Or Elementor is probably a better one,<br>[51:39] right? Yeah.<br>[51:40] >> Okay.<br>[51:44] Okay. So, it's unclear to me what that<br>[51:47] means. I I know what it means because of<br>[51:48] what we're demoing, but yeah, it's a<br>[51:50] little unclear to me<br>[51:52] >> that you say why Elementor and it's just<br>[51:54] showing me.<br>[51:56] >> Yeah. So, let's say you got tempted by<br>[51:58] some extension online and you just<br>[52:01] installed it, but now you just installed<br>[52:03] it and you just forgot. Now you're<br>[52:05] coming to your website and seeing that<br>[52:06] why element exists here and then you can<br>[52:10] just simply check then now you can<br>[52:11] figure out okay my project requires<br>[52:13] dynopac for element and that packages<br>[52:15] requires element. So that's the<br>[52:17] hierarchy.<br>[52:19] >> Yeah. Yeah.<br>[52:23] >> Also one more thing that you can<br>[52:26] >> you can install a specific version of<br>[52:28] your plug-in and themes. You just have<br>[52:30] to do WPM install package at the rate<br>[52:33] version.<br>[52:35] >> So if I wanted to install version one of<br>[52:37] advanced query loop,<br>[52:39] uh will this override anything? It's<br>[52:41] already there.<br>[52:42] >> It it will replace the existing button<br>[52:44] with the<br>[52:45] >> do I have to do is it like that or said<br>[52:46] that do you use the at or<br>[52:50] >> add the add? Yeah, between you have to<br>[52:52] add<br>[52:53] >> Okay.<br>[52:55] Should should there be a space or no<br>[52:57] space?<br>[52:57] >> No space. no space. Okay. So, it's the<br>[53:00] same way that you would install. So,<br>[53:01] it's the same syntax as npm, which is<br>[53:03] nice.<br>[53:03] >> Yeah. Yeah.<br>[53:04] >> Okay. Okay. Cool. All right. Uh,<br>[53:10] okay. So, there's<br>[53:12] throw new error with the spicy. So, what<br>[53:15] won't WPI do what you're asking?<br>[53:18] >> Uh, WP CLI will only install what's<br>[53:22] there on.org if I'm not wrong.<br>[53:26] Also, it will just download the JIP. It<br>[53:28] will don't give you a metadata and all<br>[53:30] the information that we are doing here.<br>[53:31] >> Yeah. And it it does not handle<br>[53:33] dependencies.<br>[53:34] >> Yeah, it don't uh I'm not sure about<br>[53:36] that. Uh if it will handle or not,<br>[53:40] >> but I don't know. And this is something<br>[53:43] that Well, we can test it right now. We<br>[53:45] can test it right now. Um so if I if I<br>[53:49] go in here and I go into into iTerm in<br>[53:51] here and I say WP, I should have WPCLI<br>[53:54] installed, right? So if I go WP,<br>[54:00] let me zoom that in. Sorry.<br>[54:01] >> What I know is that if you will install<br>[54:04] a<br>[54:05] plug-in using uh WPCLI, it will uh<br>[54:09] verify the MD5<br>[54:11] hash. But MD5 you shouldn't really use<br>[54:14] it because it's not collision free.<br>[54:17] >> Okay, so hold on. So we go WP plugin<br>[54:23] plugin, right? Yeah, WP plugin install.<br>[54:26] >> I think it would be either install or<br>[54:28] download. I think<br>[54:31] >> yeah, you need a database connection.<br>[54:35] >> You know, it should I I I don't know why<br>[54:37] this this is this is for this site. So,<br>[54:39] I don't know what's going on here. Like<br>[54:42] uh I mean it will install plugins. I<br>[54:45] think this Yeah. Okay. So, whatever for<br>[54:46] whatever reason,<br>[54:48] >> I keep losing my database connection in<br>[54:50] here, which is super fun.<br>[54:53] WP plugin install<br>[54:56] um what's it called?<br>[54:59] What was the name of that plugin? Dino<br>[55:01] for Elementor. Dina's what's it called?<br>[55:04] >> Yeah. Dino pack for you. Maybe this<br>[55:07] >> problem<br>[55:08] back for Elementor, right?<br>[55:12] >> Yeah.<br>[55:13] >> So, if I install Okay, so I can't do it<br>[55:15] here, which is super annoying. Um<br>[55:18] I I don't know why that's happening. Do<br>[55:20] I have to enable WP PCLI on this? Come<br>[55:22] on. Come on. Y'all,<br>[55:30] that's super annoying.<br>[55:33] Try Let me try it on a different site.<br>[55:35] Uh, let me try it on my badge press<br>[55:37] site. Sure, why not? Let's just see. So,<br>[55:39] I go into iTerm and I go WP plugin<br>[55:45] install Dino Packac. I spell it right<br>[55:49] for Elementor. So, what I'm trying to<br>[55:52] test here is if it will um<br>[55:57] if it will handle the dependencies of<br>[55:59] this plug-in requiring Elementor. Okay,<br>[56:02] I give up. Studio, what's your problem?<br>[56:07] What is your problem, Studio? Um,<br>[56:16] okay. I don't have any way to test this<br>[56:17] right now, but I'm pretty sure I'm<br>[56:20] almost positive and I I will look into<br>[56:22] it that WPCLI will not look in in the<br>[56:25] requires header and say, "Oh, you have<br>[56:28] to download this this plug-in as well."<br>[56:30] So, that's something that that that WPM<br>[56:32] does that I believe WPCLI doesn't.<br>[56:34] >> So, so what uh so if folks are asking<br>[56:38] for that what it unlocks that WP CLA<br>[56:42] doesn't? So, let me answer that<br>[56:44] question. For example, let's say you are<br>[56:46] a plug-in author, right? Every plug-in,<br>[56:48] every complex plug-in have some sort of<br>[56:51] helper plug-in that help you to debug it<br>[56:52] in a better way. For example, Jetpack<br>[56:55] has such extensions that can help you<br>[56:57] debug your uh site in a like different<br>[57:00] manner and that are like development<br>[57:02] only, right? So, in those particular<br>[57:04] cases, you can ship your particular<br>[57:07] plug-in or theme with development only<br>[57:11] uh dependencies, right? Now if user is<br>[57:15] in development environment they can run<br>[57:17] your plug-in alongside with your<br>[57:20] development only plug-in or theme and in<br>[57:23] production when you run it in your<br>[57:24] pipeline you can just<br>[57:27] uh just ignore downloading the dev<br>[57:31] dependencies I call it or plugin and<br>[57:33] themes requires in the development<br>[57:35] environment only. So if you will just do<br>[57:39] uh just let me share one thing.<br>[57:42] Waiting on<br>[57:44] I will give you two commands.<br>[57:49] Okay. One is this.<br>[57:57] Okay. I'm just going to clear my the<br>[57:58] console here so we can see it. So the<br>[58:00] first one is I have a feeling I know<br>[58:02] exact exactly what that's going to do.<br>[58:04] >> So I'm just going to run that. Okay.<br>[58:05] Guys, now we've got query monitor<br>[58:10] and<br>[58:12] >> so if you will you will check your<br>[58:14] WPM.json it will add the query monitor<br>[58:17] into the development dependencies.<br>[58:19] >> So those are only meant to be in<br>[58:22] development environment. These plugins<br>[58:25] don't need to sit in your like<br>[58:28] production<br>[58:29] >> right<br>[58:29] >> and being just sitting ideal there. You<br>[58:32] just don't install them or something<br>[58:34] like that.<br>[58:34] >> Right. Oh okay. Okay. And and then so<br>[58:35] you just you it's WPM install node which<br>[58:38] is<br>[58:39] >> Yeah. And if you will just do WPM<br>[58:41] install node node dependency will be<br>[58:43] there. You will just have uh dependency<br>[58:47] that are strictly required by your<br>[58:49] production. You see it removed the<br>[58:52] parameter now and you have only<br>[58:54] production ready.<br>[58:55] >> So if I just do WPM install again. Yeah.<br>[58:58] So this is I mean this is pretty<br>[58:59] straightforward. This is pretty great.<br>[59:01] >> So this also improve your life in not<br>[59:04] just in like while working locally but<br>[59:06] in your CI/CD as well. Currently what uh<br>[59:10] mostly people do is they just uh commit<br>[59:13] uh the plug-in in their git repo because<br>[59:16] they have to use it and it will just sit<br>[59:19] ideal in your production environment but<br>[59:22] you would just won't enable it. So that<br>[59:24] sort of things happens I have seen it.<br>[59:28] So this is particular case for query<br>[59:30] monitor but it can be with like any uh<br>[59:33] like plug-in or theme. For example,<br>[59:35] let's say you are building a product and<br>[59:38] your product have some sort of let's say<br>[59:40] QA extra plugins that you want to<br>[59:42] distribute only in a dev environment. So<br>[59:45] currently it's a problem because you<br>[59:48] have to you don't have to distribute one<br>[59:50] plug-in rather you have to distribute<br>[59:52] two plugins that hey download my plug-in<br>[59:54] and download like beta tester plug-in or<br>[59:56] QA plug-in or testing plug-in with WPM<br>[60:00] you just have to distribute single thing<br>[60:01] and<br>[60:03] that extra thing will be just shipped<br>[60:04] within development environment<br>[60:07] >> right okay so um thro is asking are you<br>[60:12] not but are you not slurping fromorg the<br>[60:15] Yes. But this is not meant like<br>[60:19] I think I think I think the disconnect<br>[60:21] here is is is that it's not when he I<br>[60:24] don't believe Cush is trying to to<br>[60:28] um replace that mechanism for<br>[60:31] distribution in in.org. What this what<br>[60:33] this is doing what I'm seeing is that<br>[60:35] this is a simplification of dealing with<br>[60:39] uh plugins and themes in a production in<br>[60:41] a in a like a large development in<br>[60:44] environment. you like if if if if<br>[60:48] actually this is a question I I'm gonna<br>[60:50] say this and you tell me if I'm like I<br>[60:53] feel like if you weren't dealing with<br>[60:56] any plugins that were not uh private or<br>[60:59] themes that were private, you could<br>[61:03] >> just use composer and wp packages to do<br>[61:05] some of these things as well.<br>[61:07] >> Okay. Um because you're a composer, you<br>[61:10] you're able to uh define all the plugins<br>[61:13] that you want. They're all available on<br>[61:15] on WP uh WP packages. That doesn't like<br>[61:20] that would work fine.<br>[61:21] >> Yeah.<br>[61:22] >> And you would get to the same point. But<br>[61:24] what WPM does is it gives you a little<br>[61:26] bit more nice ease like quality of life<br>[61:30] things like I'm going to install a<br>[61:32] plugin that requires another plugin.<br>[61:34] It's just going to install those plugins<br>[61:35] for me and it's going to add them. Oh.<br>[61:37] Oh, you know what I I'm I'm not I I'm<br>[61:39] noticing is that it didn't install<br>[61:41] Elementor as a dependency.<br>[61:45] Is that something that I I would imagine<br>[61:48] that if I wanted to ship this that I I<br>[61:51] would need that. But anyways, the idea<br>[61:53] is that when I installed Dynopac for<br>[61:55] Elementor, Elementor got installed as<br>[61:57] well. That's not something that that<br>[62:00] composer<br>[62:01] will do automatically when you do<br>[62:03] install things, right? I I I guess<br>[62:05] unless the packages file indicates that<br>[62:08] somehow, but um yeah. Does that make<br>[62:11] sense? Am I making sense?<br>[62:14] >> Yeah, sort of. So, so the thing is that<br>[62:16] how you want to<br>[62:17] >> sort of best answer ever. Hello.<br>[62:19] >> Yeah. So, actually see that what<br>[62:21] generally composer is doing for you is<br>[62:24] that it just downloads the jip from.org<br>[62:28] to your local machine right and it<br>[62:31] maintains a manifest that okay this<br>[62:33] project uses this much plug-in and<br>[62:34] themes. Next time someone runs WPA sorry<br>[62:37] composer installed I will download the<br>[62:39] JIP of this particular plug-in in themes<br>[62:41] and I will unjip it in the current<br>[62:43] working environment. That's the only<br>[62:45] thing right that composer is doing.<br>[62:47] >> So so if I ask you that you you can just<br>[62:51] write a 10 line B script<br>[62:54] right add plug-in and themes that you<br>[62:57] want to download and just run bash and<br>[63:00] that script name. What's the difference<br>[63:01] between composer and that bash script?<br>[63:04] basically<br>[63:05] >> nothing. And that's that's my point is<br>[63:08] is that<br>[63:09] >> um<br>[63:10] >> you're not replacing composer with this<br>[63:13] like your intent is is is is to make<br>[63:16] working with themes and plugins easier.<br>[63:19] >> Yeah. So my intent is that when when<br>[63:21] people say that composer is the package<br>[63:24] manager of WordPress, my simple take is<br>[63:26] that it's not because compos sorry<br>[63:29] because package manager just don't<br>[63:32] download the artifacts from somewhere<br>[63:34] from some upstream to your local<br>[63:36] machine. It does like 100 things in<br>[63:38] between. It verifies many things. It uh<br>[63:41] resolves a dependency. It give you<br>[63:43] information that why this thing exist in<br>[63:46] first place. It works based on an<br>[63:48] environment that you are using it in dev<br>[63:50] environment, you are using it in CI, you<br>[63:52] are using even using it in lab<br>[63:54] environment. It provides you tooling to<br>[63:56] do many things. For example, it helps<br>[63:58] you to verify uh the check some of the<br>[64:01] things that you have downloaded. It<br>[64:03] helps you to audit the plug-in and<br>[64:06] themes for any security issues. So for<br>[64:08] example people whoever you are using<br>[64:10] like npm they must have noticed when you<br>[64:13] do npm install in the end npm shows you<br>[64:15] that 14 packages are in compromised<br>[64:19] state or something like that. It tells<br>[64:20] you that what what packages are like<br>[64:23] having any sort of security issues,<br>[64:26] right? So, so this is the like job of<br>[64:28] package manager when you do with<br>[64:30] dependencies that they take care of<br>[64:33] dependency management end to end not<br>[64:35] just download something from upstream to<br>[64:37] your local because you can just simply<br>[64:39] achieve it with a batch script or like<br>[64:41] anything right<br>[64:43] >> and<br>[64:43] >> I think that's a really good point<br>[64:44] >> and and on top of that it gives you a<br>[64:46] like streamlined experience. So for<br>[64:49] example when you have like you if most<br>[64:52] of you don't know<br>[64:54] you can use your own npm registry you<br>[64:58] can use npm registry on github packages<br>[65:01] you can use npm registry on on AWS you<br>[65:05] can use github sorry npm registry on<br>[65:07] google cloud now why these solutions<br>[65:10] exist is that for enterprise many times<br>[65:13] what happens is that they just don't<br>[65:15] trust the reliability of external<br>[65:17] registries or security state of external<br>[65:20] registries. So they just bring in their<br>[65:22] own registry. They manage everything or<br>[65:24] in-house things there and they just use<br>[65:27] npm tool because the thing is this<br>[65:28] compliant you are building things in<br>[65:30] such a way that npm understands npm<br>[65:33] understand the language you can now<br>[65:35] build anything you just type you just<br>[65:37] attach your registry with npm you can<br>[65:39] just download it. So that is the like<br>[65:41] sort of vision I have with the WordPress<br>[65:43] ecosystem.<br>[65:45] So people can just have like their own<br>[65:47] they can build own solution they can<br>[65:49] plug in many things in the existing<br>[65:51] ecosystem they can build things in a<br>[65:53] like spec compliant way so that anyone<br>[65:57] can use it without like writing lot of<br>[65:59] automations manually rather they just<br>[66:02] plug and play with existing tooling.<br>[66:06] >> Very cool.<br>[66:07] >> Very cool. I think um I don't know I<br>[66:10] like it. I think it's fun. like it's<br>[66:12] help<br>[66:12] >> also WP without WPM it's without like a<br>[66:16] native package manager there are like<br>[66:18] this is not possible to bring many<br>[66:20] things to WordPress ecosystem for<br>[66:22] example that for many things you can use<br>[66:27] uh existing tool let's say how you<br>[66:29] update your dependencies today<br>[66:32] uh in many packages dependabot can<br>[66:35] download your composer packages even<br>[66:37] WordPress themes and plugins but what<br>[66:40] about the private ones<br>[66:41] that is that are even not there on the<br>[66:44] composer how you will download them. So<br>[66:46] there is a gap now you have to find out<br>[66:48] manually that okay this package have now<br>[66:50] update available or you can even figure<br>[66:52] out from WordPress dashboard right how<br>[66:55] you will know that a package has some<br>[66:58] malicious code in previous version right<br>[67:01] so so there are like lot of sort of<br>[67:03] things that needs to be here to make<br>[67:06] life easy at least for developers that<br>[67:08] is what I think I want same ecosystem as<br>[67:11] npm in the WordPress that is like you<br>[67:14] can put it<br>[67:17] Yeah, I mean I think I I mean it seems<br>[67:20] like an it seems very straightforward.<br>[67:22] It's easy to share this stuff.<br>[67:24] >> Um<br>[67:27] >> yeah, I mean I don't know if I I don't<br>[67:29] see any other question. I think I think<br>[67:31] throw new errors actually jumped off<br>[67:33] stream but um he had a lot of questions.<br>[67:35] But so let me ask you this. If somebody<br>[67:36] wants to help um how how can they if if<br>[67:40] they want to do they just head on over<br>[67:42] to the the the the the CLI repo or<br>[67:46] >> Yeah, they they can go to the CLI repo.<br>[67:49] They can just download it, try it. So<br>[67:51] see you just uh taught me a good thing<br>[67:54] just a while back that add support for<br>[67:56] themes and plugins, right? That what<br>[67:58] WPMLS theme WPMS LS plugins, right? So<br>[68:01] that is the like sort of feedback that<br>[68:03] I'm looking for. Now you can just create<br>[68:04] a issue. So I can work on it. If you are<br>[68:06] like technically proficient, you can<br>[68:08] just raise a PR. It would be like very<br>[68:10] helpful. You can give me ideas that what<br>[68:12] can actually what we are missing in our<br>[68:16] daily workflows and we can have it. So<br>[68:19] there are like a number of things you<br>[68:20] can suggest you can do. You can just<br>[68:24] help me like other people help in open<br>[68:27] source ecosystem and open source<br>[68:28] projects.<br>[68:30] That can be anything like fine-tuning<br>[68:33] dogs, adding more things to do, uh<br>[68:36] raising PRs, fixing bugs, any any sort<br>[68:39] of things you want.<br>[68:41] >> Cool. Oh, something's going on. Sorry, I<br>[68:44] tried to drop the link in there and it's<br>[68:46] only going to YouTube. I don't know<br>[68:47] what's what's going on. Do you have the<br>[68:49] stream open there? I'm just wondering<br>[68:51] like did you see my last thing? I don't<br>[68:54] know what's going on here, but there it<br>[68:56] is. Looks like it's going in there. I<br>[68:59] don't know what's going on. Anyways,<br>[69:00] maybe my reream chats chat's just going<br>[69:03] weird on me.<br>[69:04] >> I can see the CLA repo.<br>[69:06] >> Okay, cool. So, if you're interested in<br>[69:08] uh helping out, that's the place to go.<br>[69:10] I'm going to open up an issue after<br>[69:12] we're done here about adding themes and<br>[69:15] um into the ls command. Uh I did notice<br>[69:18] something as well.<br>[69:21] Um so, when we when we ran the install<br>[69:24] Dynopac for Elementor, it installed<br>[69:26] Elementor, but it didn't add it to the<br>[69:28] dependencies. Now will it handle will<br>[69:31] will it resolve these dependencies on<br>[69:33] install but on its own<br>[69:35] >> that's why a lock file exists there that<br>[69:37] locks the element to a particular<br>[69:39] version.<br>[69:40] >> Oh okay. So if I were to say if I were<br>[69:43] to just delete all these plugins for<br>[69:46] example.<br>[69:47] >> So you just can do rmrf WP content and<br>[69:50] just run WPM install again. It will<br>[69:53] >> uh bring everything back. Yeah. Let's<br>[69:56] Let's I love I love RMR RF.<br>[70:01] Here we go. Uh is this going to yell at<br>[70:04] me? Okay. So, then I go npm. No, sorry.<br>[70:06] W Let me clear this so chat can can see<br>[70:09] it properly. And then just go WPM<br>[70:14] in Oh god. Come on. Right. Install.<br>[70:18] Okay. So, it installed everything that<br>[70:20] it needed. Okay. So, it doesn't need to<br>[70:24] Let me just Sorry. Let me get this open.<br>[70:26] So here plugins. Plugins. Okay. So okay<br>[70:30] it interesting. So this is it. This is<br>[70:32] like interactively.<br>[70:34] Um I I guess that's the question. It it<br>[70:36] will figure out if any of these plugins<br>[70:38] have dependencies. It will just<br>[70:40] automatically install those<br>[70:41] dependencies. Now is that that's<br>[70:43] triggered by the readme file?<br>[70:46] >> No.<br>[70:46] >> I imagine in here.<br>[70:49] So um so let's say first time you will<br>[70:52] install a dependency right?<br>[70:55] >> Yes. So<br>[70:57] >> first time uh it will so see what<br>[70:59] happens is that when I publish any new<br>[71:02] plugin to the WPM registry it will parse<br>[71:05] your readme.txt and main plug-in file<br>[71:08] >> and it will take a look at the request<br>[71:10] plugins. Yeah that's the exact field.<br>[71:12] >> Okay.<br>[71:13] >> And it will add that as<br>[71:14] >> dependence. That's exactly what it's<br>[71:15] doing. So anytime you install a plugin<br>[71:17] it just automatically scans that. So is<br>[71:19] that more or less efficient? This is a<br>[71:21] random question. Then just once it's<br>[71:24] determined it, it just adds like is it<br>[71:28] more efficient? I don't know. You you<br>[71:30] tell me. I I know that uh this is<br>[71:32] written and I I want to say I think you<br>[71:33] told me.<br>[71:34] >> So you should see the WPM.json inside<br>[71:36] Dynopac for Elementor and it will make<br>[71:38] things easy for me<br>[71:42] in Danop for element.<br>[71:44] >> Oh, right there. Okay.<br>[71:45] >> Here it is.<br>[71:46] >> That's where this is coming from.<br>[71:47] >> Yeah.<br>[71:48] >> Yeah. Okay. And so is is this something<br>[71:50] that has been shipped with Dino pack for<br>[71:52] Elementor?<br>[71:53] >> No.<br>[71:53] >> Ah,<br>[71:54] >> I do it in automation.<br>[71:56] >> So this is<br>[71:58] >> Oh, I there's there's one in there too.<br>[72:01] >> Yeah.<br>[72:02] >> Oh,<br>[72:02] >> every every package will have it.<br>[72:04] >> So this is<br>[72:05] >> this is the like meta data of the<br>[72:07] plug-in.<br>[72:09] You will find everything<br>[72:10] >> interesting<br>[72:11] >> platform PHPWP like what platforms it<br>[72:14] supports and uh tags homepage everything<br>[72:18] it will add there.<br>[72:21] >> Okay.<br>[72:21] >> And from this metadata<br>[72:24] >> and from this metadata WPM CLI resolves<br>[72:27] that what it needs to install.<br>[72:30] >> And so are what at which at what point<br>[72:33] is this created? Is this created when<br>[72:36] you're running npm WPM install and it<br>[72:39] installs advance? No. Okay.<br>[72:40] >> It's it's created at the time when it<br>[72:42] downloads the text from SVN in the<br>[72:46] GitHub action.<br>[72:46] >> Oh, so so this is so you're adding this<br>[72:50] into the zip I guess or whatever.<br>[72:53] >> Yeah.<br>[72:53] >> Um on on the server side. Okay. So<br>[72:56] that's how it's handling it. So it is<br>[72:57] just as a so we don't need to store that<br>[72:59] at the project level. We just need to<br>[73:02] restore that this is the thing we<br>[73:03] actually need and it handles um<br>[73:07] >> uh yeah uh okay couple of questions one<br>[73:11] is from Kevin um how will it make money<br>[73:15] >> so my idea is to uh to make it<br>[73:18] sustainable is that registry also<br>[73:20] supports private plug-in and themes so<br>[73:24] instead so currently what happens is<br>[73:26] that let's say you are uh authoring a<br>[73:28] premium plug-in or theme you will have<br>[73:30] to set up your own infra to distribute<br>[73:31] that, right?<br>[73:33] >> Mhm.<br>[73:33] >> So instead of setting up your own infra,<br>[73:37] publish your private plug-in or theme on<br>[73:39] WPM for even less than<br>[73:42] >> it would take you to set up your own<br>[73:43] infra and then in in you know like<br>[73:46] better way how it will help ecosystem is<br>[73:49] that from a single place you can<br>[73:50] download all the private all the public<br>[73:53] plug-in.<br>[73:55] So this is the like so this is that<br>[73:57] that's why I keep the registry so that<br>[73:59] people can add private public and with<br>[74:03] any sort of visibility they can just<br>[74:04] push it there and you just don't have to<br>[74:07] manage multiple authentication systems<br>[74:09] and all that to download your um private<br>[74:12] and public managed uh plug-in in themes<br>[74:15] just so so you must agree with me that<br>[74:17] it was very fast when you run WPM<br>[74:20] install and the plug-in name right<br>[74:23] >> yeah it was very fast and and you can<br>[74:25] like add 20 plugins or themes name<br>[74:28] there. It will just install them in less<br>[74:30] than a second. Now imagine that in that<br>[74:34] particular list five plugins are private<br>[74:36] and five plugins are uh public and and<br>[74:40] feel like what type of developer<br>[74:41] experience you will get out of it.<br>[74:43] Right? So, so even to test it, I can<br>[74:47] like give you a very big list to test<br>[74:50] its capability.<br>[74:54] >> Just<br>[74:54] >> um just while you're doing that, Ali<br>[74:56] man, Ali Ma'am is uh saying, "Is this an<br>[74:59] interview?" Uh I guess it's an<br>[75:00] interview. It's with my man Love Cashar<br>[75:03] here and we are talking about his WPM.Oo<br>[75:06] um product. So, uh you can scroll back<br>[75:09] in chat and see what's what we're<br>[75:11] talking about. like it's more of a like<br>[75:13] open source project.<br>[75:15] >> I small Yeah. No, no work involved. Let<br>[75:18] me uh Okay. So, this is what you're So,<br>[75:20] this is installing.<br>[75:21] >> Yeah.<br>[75:22] >> One, two, three, four, five, six, seven,<br>[75:26] eight plugins. Looks like eight eight<br>[75:28] plugins. So, let's see how fast that can<br>[75:30] go. And the market set.<br>[75:34] >> That was lightning fast. That was really<br>[75:37] fast. And now imagine that out of these<br>[75:39] eight plugins, four are public and four<br>[75:41] are private. Then this is the sort of DX<br>[75:44] that we reserve like at least as a<br>[75:46] developer instead of setting up 10 types<br>[75:49] of automation to download private stuff<br>[75:51] from 10 different servers.<br>[75:54] >> Yeah, this is cool. Um<br>[75:58] I don't know if chat wants to answer the<br>[76:01] the question. It's a it's a WordPress<br>[76:04] package manager wpm.so. Go and check it<br>[76:07] out. I'll drop the link and you can go<br>[76:08] read about this. Um,<br>[76:12] where is it? Oh, I've lost the link.<br>[76:14] Have I lost the link?<br>[76:17] M.S.O.<br>[76:20] There it is. Go. You can go have a read<br>[76:23] there. Um,<br>[76:28] cool. Anyways, uh, awesome. Okay. Well,<br>[76:30] yeah, like I think you're right. I think<br>[76:32] that like the the development experience<br>[76:34] should it shouldn't matter where these<br>[76:35] things are hosted.<br>[76:37] >> Like I because if you're just like<br>[76:39] setting up a project and going to work<br>[76:40] on it, you don't why would I care what<br>[76:42] whether this is a private repo or<br>[76:45] publicly hosted on.org or both or<br>[76:47] whatever like it doesn't matter. So I<br>[76:49] think I think I think you're right. Just<br>[76:51] like a nice just install. There it is.<br>[76:53] Now now go do your work.<br>[76:55] >> Also very fast. One one great thing<br>[76:57] about this is that since this is specd<br>[77:00] driven everything is in like in a<br>[77:02] deterministic way it's universal that<br>[77:05] with WPM you will have a manifest file<br>[77:07] and then you will have a tarboard. So<br>[77:09] you can integrate with it with like any<br>[77:11] tool you want. For example I am seeing a<br>[77:14] comment in pitch that<br>[77:17] uh getting this into playground would be<br>[77:19] cool. So yes to playground team that<br>[77:22] whether they want to integrate it<br>[77:25] >> and see I am sharing one more link with<br>[77:27] you if you can please open it on your<br>[77:29] screen.<br>[77:29] >> Yeah sure.<br>[77:30] >> So playground team can just<br>[77:34] uh like get whatever information they<br>[77:37] need about a package from the registry<br>[77:39] and they can just integrate into their<br>[77:41] own system because like there are no<br>[77:44] gotchas everything is in public there<br>[77:46] they can just integrate. Okay,<br>[77:49] >> this is the manifest for Jetpack plugin.<br>[77:52] >> Mhm.<br>[77:53] >> You can figure out that what things it<br>[77:55] will need like what WP version this<br>[77:58] plug-in will require, what PHP version<br>[78:00] this plug-in will require and you can<br>[78:01] just spin up your own thing. You can<br>[78:03] integrate in your like studio or in your<br>[78:06] playground whatever you like.<br>[78:07] >> Yeah. Yeah. Yeah. Yeah. I mean I don't<br>[78:09] see why like playground does it have<br>[78:11] command line? Um, so Playground does<br>[78:14] have<br>[78:15] it does have WP CLI in it, which would<br>[78:18] mean that there would be some sort of<br>[78:19] command line interface. So I I don't see<br>[78:22] why it wouldn't be a possibility. It's<br>[78:24] an interesting concept though. Um,<br>[78:26] because really like you're just you just<br>[78:28] want to be able to run command line<br>[78:31] commands, command line commands, right,<br>[78:34] in playground.<br>[78:37] Here's playground. Let's let's take a<br>[78:38] look. That's not it.<br>[78:41] That's not it. I go to settings. So,<br>[78:43] let's go settings network<br>[78:47] >> on playground. I think you can add zip<br>[78:48] files as well and it will uh download.<br>[78:52] >> Yeah, you so you can you can um you can<br>[78:55] definitely uh<br>[78:58] install plugins<br>[79:00] >> um<br>[79:03] >> from<br>[79:03] >> so you have to add in I think some sort<br>[79:05] of blueprint. I'm not<br>[79:07] >> Yeah. Yeah. Well, that would be<br>[79:09] interesting. You know what why might be<br>[79:11] be super helpful for you is to generate<br>[79:13] a blueprint that demonstrated this um<br>[79:18] like just to be like hey and it works<br>[79:20] with playground too here you know blah<br>[79:22] blah blah here's your here's a blueprint<br>[79:24] showing you how to do that I I think<br>[79:25] that would be very neat because um you<br>[79:28] can use CLI so you you can actually like<br>[79:31] have it install CLI<br>[79:34] uh like WP CLI and then and then run it<br>[79:37] that way but um I'd have to look at the<br>[79:39] steps So maybe um uh Felif is probably<br>[79:42] someone that we should talk to about<br>[79:43] this um just to see what command line<br>[79:46] stuff is actually available. Uh which is<br>[79:48] kind of neat. So<br>[79:50] Oh, you can search anything from<br>[79:54] Oh yeah, cool. Oh, now you're you're<br>[79:56] just answering the questions. You don't<br>[79:58] even need me here anymore. I'm just I'm<br>[79:59] just I'm just hanging out.<br>[80:01] >> I just didn't want to interrupt you.<br>[80:03] >> No, no, no, no. Please do. Also also<br>[80:06] like one more thing that I am planning<br>[80:08] to expose a composer compatible AI as<br>[80:12] well from WPM. So it's not just like<br>[80:14] that you can only take take advantage of<br>[80:17] this WPN registry from WPM CLI even<br>[80:21] though it's preferable that you use for<br>[80:23] like all sort of security measurements<br>[80:25] and that is stuff but you in near future<br>[80:28] you will be able to use WPM registry<br>[80:30] from uh composer as well.<br>[80:33] So I I am doing so because uh it will be<br>[80:38] uh measurable faster since I will be<br>[80:40] distributing<br>[80:42] uh plug-in or themes artifacts as<br>[80:46] compress instead of jip<br>[80:50] >> which and gif has like compression<br>[80:52] ratio. So you will find like latency if<br>[80:55] you are using WPM composer API instead<br>[80:59] of the aggressive.<br>[81:02] Oh, sorry. I keep clicking on the wrong<br>[81:03] link here. Um, okay, cool.<br>[81:06] >> Um, well, this has been great, man. This<br>[81:08] is really good. I I I think this is fun.<br>[81:11] Um, I mean, I'm not building massive<br>[81:15] uh projects anymore. Um, but I can see<br>[81:18] how this is super helpful in in that<br>[81:21] case. Um,<br>[81:24] so the model that you're hoping to to<br>[81:28] implement for sustainability is<br>[81:30] basically paid um in infrastructure for<br>[81:34] folks that want to manage their their<br>[81:36] their stuff. But is there also like if<br>[81:38] someone if someone just loved what you<br>[81:39] were doing and wanted to donate is like<br>[81:41] do do you have a<br>[81:43] like is there a a can they get can they<br>[81:46] donate to your GitHub account or<br>[81:48] anything like like that? I haven't uh<br>[81:50] set the sponsorship yet.<br>[81:54] >> That's the word I was trying to Yeah.<br>[81:55] >> Yeah. I I haven't set it, but maybe I<br>[81:57] will set it up.<br>[81:59] >> Sure. Yeah, I I would. And then Yeah.<br>[82:01] Merch.<br>[82:02] Is there is there going to be a WPM<br>[82:05] shirt because I I'll wear it. I'll<br>[82:08] PM.so. Good to hear.<br>[82:09] >> Yeah. But I would appreciate if you can<br>[82:12] >> give the repo a star. It will help me to<br>[82:16] open source grants<br>[82:17] >> from like different ecosystem. I'm<br>[82:19] trying to get one from Docker so that I<br>[82:23] can publish uh images on Docker and then<br>[82:25] anyone can just pull them without<br>[82:26] limits. So, this thing will help.<br>[82:28] >> Oh, nice. Yeah. So, go and I'll drop the<br>[82:31] the link in here. So, if you're in in<br>[82:33] chat and you have a GitHub account, get<br>[82:34] over there, click on that, start it. Um,<br>[82:37] this has been great. This has been<br>[82:38] awesome, man. Well, thank you so much.<br>[82:40] Love we got about four minutes left.<br>[82:42] I feel like this is a pretty good place<br>[82:44] to kind of wrap it up, but uh does<br>[82:46] anyone in chat have any questions that<br>[82:49] they want to ask? Um<br>[82:53] and I have a couple of things, but I<br>[82:56] will not just because I'm constantly<br>[83:00] self-promoting, but<br>[83:04] excuse me. Oh my god. No. No. Okay. So,<br>[83:08] let me I'm just going to do a little<br>[83:10] back scroll here. So, I think we've got<br>[83:11] everything. We've answered all the<br>[83:13] questions, but<br>[83:15] um is are when will we see you next? Are<br>[83:19] are you going to be are are are you<br>[83:20] coming to work camp Europe by any<br>[83:22] chance?<br>[83:23] >> Uh no, but I wanted the opportunity.<br>[83:26] >> No.<br>[83:26] >> Yeah.<br>[83:27] >> Okay. Well, I guess we'll have to see<br>[83:28] you online until we don't. But um it was<br>[83:32] great hanging out in<br>[83:34] >> Yeah.<br>[83:34] >> India. It was my first time in India. I<br>[83:36] I enjoyed it. Now that there's going to<br>[83:37] be a word camp India like specific<br>[83:40] fourth<br>[83:41] >> flagship it's going to be very cool. I<br>[83:43] don't know did they announce where where<br>[83:45] it is yet? Have you heard?<br>[83:47] >> I I'm not I I don't think they announced<br>[83:49] it.<br>[83:50] >> No. Okay. So that'll be interesting.<br>[83:52] >> Um so cool. So if I don't see you<br>[83:55] hopefully I'll see you at one of those<br>[83:56] ones. But um speaking of this is a<br>[83:59] really nice segue. Speaking of work<br>[84:00] camp, I'm going to be there and uh I if<br>[84:04] if anyone uh wants to grab some time<br>[84:06] with me, I have a calendarly link set<br>[84:08] up. Uh I I I dropped it in chat. We can<br>[84:11] talk about AI. We can talk about WP.so.<br>[84:13] We can talk WPM.so. I'm sorry. We should<br>[84:15] all could also talk about coming on the<br>[84:17] stream. Talk Debbie to me, which is<br>[84:20] ridiculously fun title. Uh but yeah, so<br>[84:23] if you're interested, grab grab a slot<br>[84:24] time with me and uh I'll be tweeting<br>[84:26] this out and everything before we go,<br>[84:28] but I think it's next week. I have to<br>[84:30] leave to go. I'm doing a workshop there.<br>[84:32] It's on the interactivity API. So<br>[84:34] hopefully we're there. Um<br>[84:39] I want a better plug-in search. Oh, Kev<br>[84:41] Kev's always got great ideas. Just ask<br>[84:43] Kevin and Kevin will be like, "Yeah,<br>[84:44] here's 10 ideas and here's 20 ways to do<br>[84:47] it." And he's he's a smart dude.<br>[84:50] All right, cool. Well, maybe we should<br>[84:52] wrap it up. Uh, love C. Thanks again. I<br>[84:55] don't know what time it is for you. It<br>[84:56] must be super late right now. I don't<br>[84:59] know.<br>[84:59] >> No, no, it's not that much late. It's<br>[85:01] 9:30 p.m. Yeah.<br>[85:04] >> Oh, okay. Well, yeah. So, you're nine<br>[85:06] hours ahead of me. So, that's nine and a<br>[85:08] half hours ahead of me. It's only noon<br>[85:10] here<br>[85:11] >> time. So, it's not too bad. Not too bad.<br>[85:13] But, um, thanks again for taking the<br>[85:16] time to to talk to us about WPM.So So,<br>[85:19] and uh and walking us through it. I<br>[85:21] loved it. It was fun. Um so, uh in the<br>[85:25] YouTube description, there are all the<br>[85:27] ways to get in touch with with Love Cesh<br>[85:29] and we've also um linked everything<br>[85:32] everywhere. So, if you're interested,<br>[85:33] reach out to him or me and uh you know,<br>[85:35] we can make some connections here, get<br>[85:37] some get some love happening to uh WPM.<br>[85:43] Cool. All right. Well, we're going to<br>[85:44] call it, but uh thanks for hanging out<br>[85:46] today. um everyone in chat and we will I<br>[85:50] won't be streaming next week because I<br>[85:51] will be at War Camp Europe, but then the<br>[85:53] week after<br>[85:54] >> I will be streaming and then I think I<br>[85:56] have my next guest set up. You know him<br>[85:58] and love him as Terrence. Uh he's he's<br>[86:01] he's going to come on and show us<br>[86:03] something that he built that I'm going<br>[86:04] to completely make fun of because that's<br>[86:07] how we do things anyways. Okay, but<br>[86:09] enough about that. Love kiss. Thanks so<br>[86:11] much, man. And we'll talk to you all<br>[86:13] later. Okay, we'll talk to you soon.<br>[86:15] Have a good one.
<!-- deep-read:sections end -->
๐ **Full text:** ![[Full Document Contents/Articles/Talk Devy to Me WPM With Lovekesh Kumar.md|Talk Devy to Me: WPM With Lovekesh Kumar by YouTube]]
## Highlights
- the those packages using composer tool. So composer is another package manager just like npm but it's for PHP ecosystem. ([View Highlight](https://read.readwise.io/read/01ktwhdsfxdc20rx4tdegv2ad8))
- Note: Positioning vs Composer/npm โ tradeoff is another tool + centralized registry dependency + vendor adoption
- Tags: atom/literature/h2, wpm
- >> yeah. So I just use npm as like terminology to talk about that what WPM is actually. So we can like forget about npm here because it's the package manager for JavaScript and it won't help us much when it comes to distributing >> it doesn't handle any of the WordPress JavaScript stuff. >> Yeah. Yeah. It it just handles like JavaScript packages that you want to install but WordPress uh like plug-in and themes are mostly PHP code wired up in a different way. So we we should omit ([View Highlight](https://read.readwise.io/read/01ktwhacp39cc6ea2facsn62r6))
- Tags: ๐ป ai highlighted
- terminology to talk about that what WPM is actually. So we can like forget about npm here because it's the package manager for JavaScript and it won't help ([View Highlight](https://read.readwise.io/read/01ktwhdphex27qvycsfd959ft7))
- Note: WPM = a WordPress Package Manager (Lovekesh Kumar) โ npm-style plugin/theme management for WP
- Tags: wpm, atom/literature/h1
- not for those folks. This is for people that are building an entire um microcosm I guess. So like like so your your project has got four themes and 15 plugins and all this stuff and you want to manage it all in source control and you want to make sure that you have versions and all all of that stuff. I think that's the problem that this solves is the ability to >> so so this is the thing like if if I say that uh this is the thing that composer can also handle right so WPM is like you ([View Highlight](https://read.readwise.io/read/01ktwhacr5kpp7dthmj1z0xnfy))
- Tags: ๐ป ai highlighted
- >> Oh, sorry. Oh, install. Okay. >> Yeah, WPM install. >> But do I have to do that from my WP content folder? >> Uh no, no, no. Just just do it in the root. So what WPM does it that by default it will place your plug-in and themes into the WP content folder until and unless you have configured it to be somewhere else. >> Okay. So all right so I and then what do I pass? So if I want to do install uh oh no ([View Highlight](https://read.readwise.io/read/01ktwhact7rfqbdzct7new7dz7))
- Tags: ๐ป ai highlighted