tighten / onramp

Easing the onramp for new or non-PHP developers to become Laravel devs.
https://onramp.dev/
MIT License
157 stars 56 forks source link

Add a third path for people coming from WordPress #17

Closed mattstauffer closed 4 years ago

rorymcdaniel commented 4 years ago

This is an interesting idea to me, especially because learning how to echo out variables in WordPress templates was how I got my start in PHP. I think the general concepts of routing, controllers, models, and migrations are the things that kind of blow a new WP dev's mind when coming to Laravel. Are you thinking a dedicated list with customized content, or perhaps just a reorganization of content with specific focus that's meaningful for WordPress folk?

mattstauffer commented 4 years ago

@rorymcdaniel I think some content will be WP-specific; but I also think there are likely to be "paths" which have some modules on and others off.

Shelob9 commented 4 years ago

@mattstauffer Moving this over from #21

This is my first pass at an outline for introducing the mental model, conventions and ecosystem of Laravel to a WordPress developer that understands OOP PHP:

bgurney commented 4 years ago

Interested in this as we've done a lot with content and Laravel. Specifically working on a Laravel package for Prismic.io (headless) at the moment.

rosswintle commented 4 years ago

I just came across on-ramp after a shout out on the Laravel News podcast. I should probably point out that I made a free video course a while back for the very purpose of introducing WordPress Dev's to Laravel. See https://wptolaravel.com

It's a bit out of date (based on Laravel 5.5 maybe?) but should provide a good overview with language and concepts mapped from WordPress world into Laravel world.

Perhaps you'd consider adding this?

I'm also just generally really interested in this space of educating people with less technical knowledge. There's so much training for people already familiar with the basics, but getting started feels harder.

If you're interested I started making some command-line and dev tools videos too: https://press-ups.com/for-developers/

Happy to chat/contribute/get involved where I can.

Thanks

mattstauffer commented 4 years ago

@rosswintle That looks really great! Would you consider making those videos open to people who don't register? I'd both want a chance to look at their quality level before we link them, but I also think that's likely a big barrier to people actually choosing to consume them.

rosswintle commented 4 years ago

Thanks, Matt

There is an unlisted YouTube playlist: https://www.youtube.com/playlist?list=PLd-bswuE2ozR_5Ad_MrZOaY5VTKeaNm34

The idea of sign up was that I could email to alert people to updates if I ever made them, and in later episodes I basically try to build the course "platform" that is used in Laravel as a small project. So using the platform was an introduction to building it.

So I guess I'm happy for the playlist to be posted, but maybe people could be nudged towards the platform because there are benefits to consuming it in that way?

Perhaps I could put a couple of intro videos on the wptolaravel.com homepage to show quality (it's not exactly Laracasts - it was partly an excuse for me to practice making screencasts)

Also, I'll probably move videos to my Vimeo account at some point to avoid ads/tracking/recommendations. I can make them available publicly once they are over there and update OnRamp when I do.

mattstauffer commented 4 years ago

@rosswintle sweet, I'll check it out! I don't think I'm at all opposed to the idea of trying to get people's information, but yah, not being able to check it out at least generally would keep me from checking it out, and I'm someone with a very significant reason to want to check it out! :)

n8finch commented 4 years ago

Hey all, I'm primarily a WordPress dev, just building my first few Laravel apps, so this topic is very timely, and glad there's an issue already!

I started listing out all the differences I've come across the last month in being new and building with Laravel, and a few extra things that might not be on Josh or Ross' lists would be:

Other things, especially querying data, moving to MVC/OOP and templating have already been mentioned. I've got a list of 17 items (growing bigger the more I build 😂 ), so I'd be happy to post the full list (just don't want to muck up the comment thread here).

For resources that haven't been created yet, what format do y'all would be best? Videos, blog posts, or something else?

Also, @rosswintle would it be good to add new elements to your site and update others to get a link that can go on onramp.dev? Happy to help generate that content, just let me know.

mattstauffer commented 4 years ago

@n8finch i think the main thing I want to think about are the big concepts ("modules") that would need to be in the larger track ("Laravel for WordPress developers").

Each module can have multiple learning resources, multiple "skills", etc. so the main thing i would want to think about are what are the big pieces.. this could 100% be the place for it.

Each module will raise the question: "Does this necessitate a WordPress-specific version? Or could we make this in a way that works for everyone?"

I think listing off the big high level pieces here that WP devs have to learn ,regardless of whether they're things everyone else also would, would be a good start.

rosswintle commented 4 years ago

@n8finch Thanks - really good to have your voice in this.

Managing media is interesting and something I didn't really cover in the material I made, mostly because none of the "apps" I've made in Laravel have really used Media. And unless you're building a CMS I'm not sure there's much of a parallel. But maybe I'm wrong. In any case I think use of off-site asset management is probably an advanced topic, rather than an introductory topic. But just my opinion.

Probably the same for testing. If you're testing WordPress then I would think that you're probably sufficiently advanced that you're going to skip onramp and head to Laracasts or something.

Mix would be good to cover.

I like Matt's approach of only doing WP-specific things if it's helpful to do so.

If it's helpful to have it here my WP to Laravel "syllabus" is:

My aim is to try and give a mid-level WordPress developer enough to be able to start building a small app without needing to worry too much about what's going on under the hood. This can be learned later.

I probably (I can't remember) cover the basics of forms and validation. And I talk about basic authorization too.

I don't mention dependency injection and the service container - I don't feel like they map easily to WordPress concepts, and so they should probably be a module for everyone that's new.

And the same goes for general object-oriented PHP patterns and such like.

There's so much you could cover. If you're only got 17 items on your list you're doing well! The trick here is working out which topics are essential for onramp and which are more advanced things that they can be pointed elsewhere for.

@mattstauffer Do you have some idea of an end-goal for this. What should someone be able to do once they are "On the Ramp"? And, equally importantly, what things are you expecting them to not learn here, but to learn as a next step once they are done with onramp?

n8finch commented 4 years ago

Hey y'all, good stuff, sorry for the delay responding.

@rosswintle and @mattstauffer thanks for the feedback.

Here's the list of things I've been thinking about:

  1. From WordPress templates to blade views
  2. From WP Query to Eloquent
  3. From permalinks two routes
  4. From the media library to asset management
  5. From core tables to custom tables
  6. From WP-CLI to PHP Artisan
  7. From theme unit testing (that XML) to factories and database seeding
  8. From functions.php to models and controllers
  9. From plugins to packages
  10. From terms to relationships
  11. From custom post types to models and database
  12. From procedural programming to object oriented programming
  13. From code mix to templating and separation of concerns
  14. From WP authentication and roles to custom authentication and roles.
  15. From enqueuing to bundling
  16. General resources for each community (e.g. "Where do I go to get help? Who are the people
  17. From WPCS to PSR2

I agree, I think dependency injection and service containers is probably too much for the intermediate, but maybe those should be covered/referenced somewhere, for the next project (I know I've already come up against them.

What would the next steps be? Seeing what overlaps the most and making sure we have resources for that? I'm happy to help any way I can.

Cheers!

Shelob9 commented 4 years ago

What would the next steps be? Seeing what overlaps the most and making sure we have resources for that? I'm happy to help any way I can.

I think that everyone has a very similar list. If someone wants to take another pass at the list, we could start looking for and asking for content and links.

I can definitely help get attention from WordPress folks that do Laravel. I can help write content.

rockymontana commented 4 years ago

This is now closable @mattstauffer

mattstauffer commented 4 years ago

I'll say this is close-able once I get this into the content in the actual app :) I'll probably wait until i have it all in Nova, rather than adding the unique track information to the seeders.

If any WP folks here would be interested in taking some intermediate steps, it would:

  1. take a look at the modules page as it exists right now
  2. Figure out which modules would need to be removed for WP devs
  3. Figure out which modules would need to be shown, but modified, for WP devs
  4. Figure out which new modules we'd want to add for WP devs

Thanks!

rosswintle commented 4 years ago

Sorry I've been absent - sick kids and emergency work took over.

Here's a stab at this review as I see it:

Build a basic web site: Tough call as it depends if the audience is a WordPress "developer" who codes themes or someone who uses off-the-shelf templates/themes. My instinct is to take it out, but maybe to add a signpost to another track for people who've not built themes before. Basic Terminal & Git: A lot of WP folks aren't familiar with these, so keep it in. Local PHP Environment: Most WP folks will have this, but it may be a WP-specific environment (like Local by Flywheel) and many won't have seen things like Valet so probably worth keeping. If we can do a modified module that would be great. Beginning PHP: I'd expect most WP folks to know the basics, but again, it may be worth signposting to other more basic modules Object-Oriented Programming: Keep Laravel Basics: Keep - there's LOTS of scope for tailoring this to WP though - but see below Basic JavaScript: I think this is worth keeping, though some will be familiar already Laravel Mix: Keep Basic session-backed internal APIs: Not sure what you mean here? Deployments: This will be very different for Laravel/general PHP, so keep it. Monitoring (e.g. Bugsnag): Keep Basic Testing: Keep

Possible WP-specific modules:

Why Laravel/How it's different/Pros and cons: Some discussion of what is different and why you might use Laravel instead of WordPress Mapping the concepts: Explaining how WordPress concepts like themes and hooks map into similar concepts in Laravel. (Aside: Interesting to hear how Caleb Porzio seems to be adpoting a "hook" style approach in Livewire - find his "single file principle" podcast episode for more - and I can explain the WP hooks concept if needed)

mattstauffer commented 4 years ago

OK, so Ross suggets:

Drop:

Modify/replace/contextualize:

Add uniquely:

How does that sound?

rosswintle commented 4 years ago

@mattstauffer Can I employ you to edit all my emails? 😂

Nailed it.

How do we move forward from here? Does this need to translated into concrete actions?

mattstauffer commented 4 years ago

Haha, thanks!

So.. the big issue is right now our database seed format doesn't allow for us to define the tracks. To do that, we really need to add Nova, which I'll be doing on my stream on Friday. So.. for now... we wait.

mattstauffer commented 4 years ago

@TammyTee No rush, but have we totally solved this or do we still need to get the pages and stuff set up for the WordPress track? I'm guessing we have the tracks built out but I haven't built out the pages?

tammytee commented 4 years ago

@mattstauffer yeah, this is all good now. There is a WordPress track with all of the recommended modules discussed here. These were refined and added to Onramp with their new descriptions as a part of completing #126.

Some of them just need resources now that they're up i.e. Laravel Vs WordPress and Mapping the WordPress Concepts.

mattstauffer commented 4 years ago

Woo! Thanks @TammyTee!

Other folks on this thread, would you please help us get some resources for these? I'm working on finishing up a bit of work that will let y'all actually just suggested resources right in Nova but for now you can leave them as comments here.

rosswintle commented 4 years ago

My WP to Laravel videos cover these topics. They're out of date and I (still!) have plans to re-record them at some point, but these topics are still relevant.

The videos are on YouTube, so you can cover these two topics here:

I'm not sure the first video makes so much sense outside the "course".