The Imposter’s Slide

A curious thing happened during this morning’s dose of coffee & social media (the latter being an important component of my job at Magento, I promise). I read a brief piece on stoicism and then almost immediately was linked to an exchange from Eric S. Raymond to Linus Torvalds in which Mr. Raymond states the following:

…[T]he bill always comes due — the scale of the problems always increases to a point where your native talent alone doesn’t cut it any more.

The combination of these two posts has kind of rocked me to the core, and I want to discuss this openly.

Over the past few months thousands of people have seen me onstage stating, “If you are a skilled Magento 1 developer, much of your knowledge will port forward to Magento 2,” by which I mean that many of the distinct PHP framework and commerce application aspects of M1 are present in M2. Some aspects of M2 are essentially indistinguishable from their M1 implementation (e.g. the ORM), and some differ only in implementation pattern (e.g. route configuration and controller actions). While the existence of numerous code migration tools bears this out, what I was really trying to say was, “Change and modernization are part & parcel of M2, but never fear – you know what you need to know in order to make the transition!”

And yet, despite these calm assurances and my confidence in the Magento 2 code which we’ve crafted, I find myself seized by the same symptoms of unfamiliarity as I did when I expanded the Magento 1 download for the first time 7.5 years ago. The dread of self-doubt, the fear of failure, and the appearance of other’s inherent ability to master the material are once more swirling around me each time I open my editor. In other words, in Magento 1 I feel confident and capable, but in Magento 2 I am a babe in the woods. I have to wonder, is this impostor syndrome, or am I truly playing the part of expert when I have no right to? Am I struggling with something new, or am I an impostor?

I’m no stranger to Impostor Syndrome (IS); I’ve been experiencing it since I started teaching the Magento 1 Fundamentals of Development class 5 years ago. IS is a cognitive process in which one fears appearing to be a fraud by doubting or dismissing one’s abilities and accomplishments. This kind of irrational disconnect is typical of anxiety conditions and fits well with my history of anxiety disorder. The fear I experienced while teaching diminished over time once I accepted how much I knew and didn’t know, and it all but disappeared once I realized that it is okay to not know everything. In fact, for teachers, it’s essential to openly state as much! During this period I began speaking about Magento at PHP conferences, and while IS reared its head again, it wasn’t quite as strong as before, perhaps because my past experience inoculated me against it to a degree. However, in these nascent days of Magento 2, I am experiencing unrelenting symptoms of IS all over again. I want to share this experience honestly & openly with the community, because I think I see others struggling with IS as well – whether they know it or not.

For me, my fear stems from being pulled forward into modern PHP development. Consider all of the “new-to-me” technologies, workflows and tooling which are part of Magento 2 (or which at least complement its use):

  • Newer, more SOLID architecture
  • “Newer-than-PHP 5.2” language features: namespaces, generators, closures
  • Composer (or even the idea of dependency management)
  • Test coverage & TDD
  • Varnish
  • New frontend development approach & tooling (LESS, CSS mixins, Grunt, knockout.js, UI components)
  • Code generation

This is not to say that these things are new (far from it). Rather, they are new to me and – I suspect – to many developers who have kept their focus inside the aging box of whichever framework idiom pays the bills.

Unpacking this reality is important, as it creates a logical path for resolving my fear. To that end, I’ll be posting at least bi-weekly about the technologies and workflows in Magento 2 which are new to me. This is mainly an effort to help myself and hopefully many others quickly become uninhibited and effective developers in Magento 2.

You all can help me by recommending topics which you’ve struggled with, or would like to see answered canonically. Comment here, @benmarks me on Twitter, or send an email to ben@magento.com.

Magento is Everywhere, So I Am Too!


Shot yesterday (6 October 2015) leaving Meet Magento Brazil

I have one of the best jobs on the planet. I get to go all over the place talking about Magento and listening to others talk about Magento, commerce, programming, and life in general. With only a couple of weeks at my actual home in Charleston, SC from mid-August through mid-December, the end of 2015 is proving to be my busiest speaking season yet (20+ presentations across 4 continents) and I couldn’t be more excited to get out there & talk about Magento 2!

Starting in August I spoke at Meet Magento Vietnam in Hanoi. It was one of the most impressive first-time events I’ve ever attended. The venue, the crowd (five hundred strong), and the speakers (including a government minister) all contributed to a fabulous freshman effort. After a brief stay at home I spoke at New Zealand PHP Conference’s sophomore show. While more lightly attended than last year, the content was good, and it’s great to make it to the end of the Internet. I took advantage of my trip to speak at both the PHP Wellington User Group and the Auckland Magento User Group (thanks to Lero9 for hosting and Fooman for organizing).

After one day at home I headed back out for another freshman effort: Northwest PHP Conference. It was obvious that a conference veteran (Jeremy Lindblom) had organized the event, because it was professional through and through. From there I went to Hong Kong to attend one of the Rackspace::SOLVE series of events. Man, they know how to put a conference on! This was one of the most interesting speaker events I’ve done: an open discussion about commerce with my counterpart from SAP/hybris as well as a mobile application developer. Matthew Hand from Rackspace moderated, and to be honest everyone’s lucky we finished in the allotted time – we could’ve gone on forever.

With only one day at home I headed out with my wife to Meet Magento New York, where I had the honor to introduce our former president and original-bleeder-of-orange, Bob Schwartz. I got to spend a lot of time talking about Magento 2, especially with Josh & Jenna Warren, the awesome duo behind Creatuity, a pioneering Magento agency which just released THE Pintrest buyable pins integration for Magento. From there it was on to the second year of Meet Magento Romania, which was held at a five-star hotel on a hill overlooking the tech hotspot of Cluj-Napoca. This year’s event was a step up from the first MMRO last year, and that’s remarkable given how awesome that first year was. Over four hundred attendees joined the main event, with hundreds more coming in for the tech-focused Party404 at a hot nightclub in Cluj. It was great to have two of my colleagues (Bas Nawijn, our Head of Sales in EMEA and Marc Wiesler, our go-to Solutions person in the region) there to present as well. Getting shuttled around in the official event Audis wasn’t too bad, either!

And now I sit here in a lounge at the Paris airport, waiting to go to Athens for the first Meet Magento Greece. I have never been to a country which is dealing with such critical issues, and I expect to be quite humbled by the stories I will hear there. There is no doubt though that Magento impacts millions of lives all over the globe. I have to believe that this effect is quite profound for agencies, merchants, and commerce employees in Greece. If you are in Greece or proximal, why not register to support the event and the Magento community there?

Upcoming events I’m speaking/attending are below:

 

Reporting Issues on Magento 2 GitHub Repository

Hey everyone!

Late last year the Engineering team gave the Magento community an early New Year’s gift when they announced that we could accept pull requests on the Magento 2 repository. It’s been amazing to collaborate so closely and frequently with everyone. The Magento 2 product is fundamentally better because of these contributions, and we look forward to continued collaboration.

There has been so much interaction on GitHub that we feel it’s time provide some guidance on what issues should be filed there as opposed to being discussed on the community forums (which can be found HERE):

  • Specific Magento 2 bugs should be filed as issues on the Magento 2 repository, preferably with an accompanying pull request
  • Issues with installation, unknown errors, etc. should be started as threads in the forum, and then filed as bugs when enough details are known (and if appropriate)
  • Feature-based pull requests should be discussed with us beforehand (so we don’t duplicate work)

Also, in order to establish the proper rights for contributed code, we need to have every contributor sign a contributor license agreement (CLA). We’ve integrated this check into the pull request process using, and will make that available soon.

 

Magento 2 GitHub Community Team

Magento 2 offers many improvements to how we as developers will build, customize, and deploy eCommerce sites. It features a modernized architecture including improved modularity, improved testability, and enhanced scalability. One of the most significant improvements regarding Magento 2 is the way in which it is being developed, via direct collaboration and contribution with the Magento community on GitHub. While we’ve always relied on the community’s input when working on our application, this new era of collaboration has allowed us to:
  • be more transparent in our development approach and design decisions
  • incorporate more community knowledge and opinion in our codebase
  • accept & acknowledge more community-contributed code more quickly than ever before
We know from the feedback that collaboration via GitHub has been well-received, and we’re looking to expand on this. We are looking for a few developers who can commit around three hours per week to help us triage the comments, suggestions, and issues being reported. The participants will be made members of the Magento 2 repository on GitHub and will be educated by the core team on how to process community contributions.
If you are interested in this and can commit to help us make Magento 2 even better, please send me an email at ben.marks@magento.com.

Magento 2 Developer Release Candidate

What is the Magento 2 “Developer Release Candidate”?

Join Magento on March 24th at 9AM PDT for an in-depth webinar

The Magento 2 Dev Release Candidate (RC) is one of the development milestones which we announced almost a year ago at Imagine 2014 along with the Magento 2 Developer Beta and Merchant Beta. Dev RC represents the following:

  • A completed platform architecture in which there will likely be no major architectural shifts between now and the general release in Q4 of 2015
  • Incorporation of feedback from the awesome Developer Beta participants around the world (including feedback from two separate in-person developer forums with participants from four continents)
  • On-time completion of the Developer Beta period

As an interested developer, what should I do now?

If you are already involved in the discussions on GitHub, Twitter, email, etc. please continue to play with each release and provide your feedback, features, and fixes! If you aren’t, well… time’s a-wasting! The production versions of Magento 2 will be released this year. There is no better time than right now to install Magento 2, explore the improved architecture, and even contribute to the codebase. That’s right; just because the Dev RC is here doesn’t mean that we no longer need developer feedback. In fact, we expect to receive more feedback, because now is the time to start porting Magento 1.x extensions and custom code. Doing this will put you ahead of the curve for when Magento 2 becomes generally available (GA), and it may even result in you helping to improve the Magento 2 core.

What is Magento doing between now and Merchant Beta?

The developer community doesn’t get to have all the fun! Now we (Magento) get focus on porting our own code into the Magento 2 idiom, much as we did for the Magento_Customer module for Developer Beta. In addition to this, we will continue to incorporate community feedback and contributions, and we’ll be spending a substantial amount of time on performance enhancements – something which will proceed up to and after GA. Prior to GA expect to see new, exciting changes to checkout and admin UX.

Continue to connect with us:

Via GitHub: https://github.com/magento/magento2
Via Magento Forums: http://community.magento.com/
On the Developer Hub: http://www.magento.com/developers/magento2

New Magento Forums Online!

(reblogged from my post on the Magento blog)

The best aspect of the thriving Magento ecosystem of merchants, developers, partners and freelancers is the incredible collaboration and sharing of ideas and experiences from around the world. The Magento Forum has been an important gathering place and resource for the community, but it has not kept pace with our demands, particularly around controlling spam. We’ve implemented a fabulous new technology and we are pleased to report that we are launching a new Magento forum today; open to all users globally, with the following new functionality:

Open Community

The newly launched Magento forum is an open, free-form community that includes members with wide-ranging technical skill levels and broad regional/global eCommerce experiences. Any merchant, small or large, or any developer, junior or experienced, can connect with the diverse Magento user base to share ideas, get support, and learn from other’s experiences. While other options such as StackExchange continue to be good sources of technical information, this new forum is the only Magento-managed community resource, which serves merchants and developers alike.

Enhanced Features

Accessing the new forum is easy, as it is seamlessly integrated with your magento.com account. The new forum features dedicated spam fighting tools and is monitored by experienced moderators. Enhanced features such as the ability to vote on answers as well as to choose one “accepted solution” for a given question will help forum members find the best solutions now and in the future. There are also several sub-forums dedicated to non-English languages, which ensures that this is a great resource for regional and global eCommerce information.

Community Contribution

While this forum is a great resource for all Magento users to share their experiences and support each other, the success of the forum depends on active participation from the community. It is your opportunity to give back to the community and share your expertise and insights.

Join the forum today and contribute to the dynamic community that is Magento!

On a personal note, I’d like to recognize the tremendous effort of Piotr Kaminski (@piotrekkaminski). In addition to his product management duties, Piotr coordinated with several teams internally and externally over several months to bring the new, improved Magento forums online. It’s a privilege to work with someone like Piotr who embodies the best of the Magento community and works so hard for the benefit of all.

Surviving Anxiety, or, How I re-met Adam Culp Today

tl;dr: Read Adam Culp’s post on how anxiety damn near killed him*

I just read an amazing post about someone surviving anxiety, and it’s from a very unexpected place: Adam Culp’s blog. Adam is many things: sharp developer, Zend consultant and developer relations personality, and PHP Sunshine organizer. Adam is also an avid runner. From the first time I met him I was impressed by his appearance of effectiveness, togetherness, and health. He might be surprised to know that this is how I “see” him, but I suspect I’m not the only one. I personally draw inspiration from him anytime I’m out for a run myself (literally I think about my projection of Adam and measure myself against that; I should also mention that I am inspired to run for health and enjoyment by my colleague Vinai Kopp and by my wife Tracey). My running is teaching me two things. One is to “push through” – to go beyond a point when I want to give up short of a goal. The other is to pay attention and take a break when I need it lest I end up hurting myself.

Imagine my surprise to read Adam’s post in which he talks about being at the helm of a failing business, smoking packs of cigarettes each day, and succumbing to hospital-grade anxiety attacks. As someone who spent most of my early years plagued by anxiety attacks, I was left in shock and in tears reading his post today. My idol of programming & health has been through an amazing transformation from someone I suspect wouldn’t recognize. It’s always good to have one’s assumptions challenged – there’s a lot to be learned in those moments.

I encourage everyone to read Adam’s brief, powerful post. Even if you are not dealing with crushing anxiety, it’s certain that you know someone who is. It’s a terrible thing to experience, and it’s a wonderful thing to be past, though I’m always worried that it’s waiting for me in the wings – one never fully recovers from it, I suspect.

A tip of the hat to the supremely wonderful Cal Evans for tweeting the post.

*Didn’t really damn near kill him, but that’s the feeling. If he’d kept going on the same way though it might have.

Magento 2 Issues Up For Grabs!

The doors on the Mighty Orange Towers continue to open up. You’ll notice a new tag at the Magento 2 repo on GitHub: up for grabsThis tag is Magento’s marker for tasks with which we want community help! (Teaser: this is part of a bigger initiative around community collaboration, but more on that later.)

There are currently three issues marked as “up for grabs”:

So, check ’em out (ha!) and get cracking. If you are planning on working on any of these issues, it might be wise to drop a comment on the issue’s discussion thread to coordinate with other community members. No need to duplicate efforts!

By the way: the up for grabs tag connects the Magento 2 repo with up-for-grabs.net, a great initiative by Keith Dahlby (@dahlbyk) to encourage involvement of the open source community with open source projects. Give it a look, it’s a great idea!

– benmarks

Magento + PayPal Update & Feedback Request

tl;dr: We want your feedback on Magento + PayPal integration. Comment here, email me, or chat over at /r/Magento.


It’s no secret that PayPal has been, is, and continues to be an important part of Magento’s value to eBay Enterprise. The benefit extends to the merchants which provide PayPal payment methods to their customers, as there are plenty of data which demonstrate improved conversion rates with the Express Checkout shortcut in addition to a mosaic of other benefits when various PayPal methods and options are added to the mix

So, the benefits are real. From my past experience as a full time developer though I recall a couple of pain points. For example, PayPal’s various payment methods had unclear naming conventions as well as uncertain regional and functional limitations. It was therefore hard to know which PayPal payment method(s) to recommend for clients. I also recall some pain points with the integration itself (especially when IPN was involved). There are several discussions online which indicate that integration difficulties exist for others as well.

I’m happy to report that the landscape for both PayPal as well as the Magento + PayPal integration has been improving. Within the last year and a half PayPal has stepped up their game in terms of internal tech, account provisioning, and ease of sandbox testing. (Sidebar: PayPal even has a Head of Open Source and an entire suite of open source libraries. Add Braintree to the mix, and it’s clear that developers are a focus for the new PayPal.) And as a member of Magento’s Small Business team, I can also share that there is dedicated, ongoing effort to understand and resolve integration issues. This effort along with effort from Magento’s Product team have resulted in improvements to Magento’s integration as well as improvements among various third-party checkout integrations in order to fix and optimize Magento’s PayPal checkout flow.

However, we want to ensure that we understand any lingering issues as well as issues which were resolved by an upgrade. We’re also eager to hear about any Magento + PayPal success stories. So, please share your Magento + PayPal experiences with me via email, leave a comment on this post, or chat over at Reddit on /r/MagentoThe experiences which you all share with me will directly affect Magento’s success now and in the future. I will likely keep emails and comments internal to eBay, so feel free to get deep but please don’t post credentials or anything sensitive. I may not be able to send a personal response to everyone, but please know that all of your messages will be used for the benefit of Magento and PayPal. Also, we may follow up with you to get more information about your experience.

 

Contributing to Magento 2

Opening Up

Magento 2 Engineering Lead Max Yekaterynenko announced last week that the we would soon accept public pull requests on the Magento 2 GitHub repository. I’m delighted to share that the first pull requests have been now been merged! Tobias Zander has the honor of being the first community member with a merged pull request (PR) – one which cleans up a funny copy-paste error. I also had a PR merged to correct a misspelling of a certain name in the core code. While these first two merged PRs offer purely cosmetic improvements (and allowed us a final test of the new contribution model), they represent a new, exciting reality for Magento development: the community now has the ability to contribute directly to the Magento 2 codebase, and this collaboration takes place in full view of everyone – just as one would expect of an open source software.

How does it work?

Contributions to the Magento 2 codebase are done via GitHub using the fork & pull model. This contribution model has contributors maintaining their own copy of the forked codebase (which can easily be synced with the main copy). The forked repository is then used to submit a request to the base repository to “pull” a set of changes (hence the phrase “pull request”). The excellent GitHub interface has a GUI for doing all of this and even includes a discussion panel for each PR which allows everyone to see the reason why a PR is or is not merged as well as the ability to add to the discussion. GitHub also has a very good primer on pull requests under their help site.

Contributing to Magento 2 on GitHub

As mentioned, there are two essential actions in order to submit a contribution. First, fork the magento/magento2 repository under your own free GitHub account (or collaborate with someone else who has done this). Once you have a forked repository to use, you can create PRs based on changes made to that fork.

Forking a repository on GitHub is easy:

  1. Create or log in to your free account on GitHub
  2. Navigate to the Magento 2 repository on GitHub
  3. Click the “Fork” button at the top right:
    Screen Shot 2014-12-23 at 6.45.01 PM
  4. Clone the repo into your development environment, get the app installed, and start playing!

Creating a pull request is also easy:

  1. First, check the existing PRs and make sure you aren’t duplicating others’ work!
  2. Create a feature branch for your changes and push those changes to the copy of your repository at GitHub (this is the best way to organize and even update your PR)
  3. In your repository, click the pull request icon at the right, and then click the green “New Pull Request” button:
    Screen Shot 2014-12-23 at 8.43.57 PM
  4. Ensure that the “base” (the left side) is set to magento:develop and the “head” (the right side) is set to the appropriate branch/commit/etc.:
    Screen Shot 2014-12-23 at 8.53.30 PM
  5. Review the changes, then click the green “Create pull request” button, fill out the form, and click the “Create pull request” button again to submit the PR – that’s it!

As a reminder: remember to make your magento/magento2 pull request to the “develop” branch. I forgot to do this with my first PR and now I can never visit Kiev ;-)!

After submitting your PR you can head over to the magento/magento2 repository’s Pull Requests panel to see you PR along with the others. Your PR will undergo automated testing, and assuming it passes, will be up for consideration by the core team for inclusion in the Magento 2 core.

Additional notes about contributions:

  • Contributions must adhere to Magento coding standards
  • PRs must be accompanied by a description of their purpose
  • PRs which include new logic or new features must be submitted along with unit/integration test coverage (we will be releasing more information on writing test coverage in the near future)
  • For large features or changes, please open an issue here and discuss first. This may prevent duplicate or unnecessary effort, and it may gain you some additional contributors.
  • PRs which include new features must be submitted along with a proposed documentation update as well (see below)

Contributions to documentation

Magento 2 documentation is also available for update on GitHub via the same fork & pull model. In fact, it’s easy to create and propose changes or additions to the documentation by using GitHub’s built-in editor – no need to download the forked repository to work on it. For more information, see my buddy Bradburn Young’s recent guest post on Alan Kent’s blog. The big thing: make pull requests to the develop branch, just like you would for the Magento 2 codebase.

A note about Magento 2 development environments

If you’ve been a Magento developer for a little while, please note that there are a number of architectural and environmental differences between Magento 2 and Magento 1.x – including higher minimum versions for PHP and MySQL – which may require a new development environment configuration in order to work with Magento 2. If you need to continue supporting an incompatible development environment for current / legacy projects, virtualization is a popular, maintainable, and increasingly simple option to have a separate execution environment for Magento 2. There are several resources which have information to get you up and running with virtualization:

I will certainly add to this list as time goes on; feel free to comment with links to other resources which you find helpful – and let me know about any resources which are less than helpful as well so we can work with the authors to get them corrected.

We’ve been working hard to get Magento 2 ready for contribution, and there has been a lot of excitement internally to see this become a reality. Now it is up to the community to make the most of our open source contribution model. The Magento 2 Developer Beta closes in a few short months, and Q4 of 2015 will be here before we know it as well. Everyone’s involvement along the way is critical to making sure that Magento 2 is the best successor to Magento 1.x, one which will serve us well in the years to come. Onward and upward!