Magento Stack Exchange, MageStackDay: Best Practices

In light of recent passionate discussions, and in anticipation of MageStackDay #5, I have been thinking a lot about Magento StackExchange (MSE) culture. I’d like to present my thoughts as a sort of historical waypoint as well as an introduction to (or clarification of) the culture & activities which underpin this wonderful resource.

tl;dr: For me the most important bits are at the end (“What should I do?”)

Magento SE Timeline

How is something like StackExchange created and sustained?

The answer begins with open source and its ethos of open sharing of experience, knowledge, and effort. (My counterpart at Akamai, Davey Shafik, has a great presentation involving this topic, particularly on what I call the compound interest of open source’s collective effort: https://youtu.be/VS0kG3O9Ro0?t=269. The entire presentation is worth watching, but at the very least, watch the five minutes following the linked starting point.) Specifically for StackExchange, it all began with people in open source (and in general) doing what they do when they need help: asking questions. In the early days of the Internet, netizens asked questions in bulletin-board-style forums. Once the WWW came along, forum software was developed, and people asked questions in forums. Eventually, a couple of fairly sharp developers realized that general forum technology fit the domain of Q&A very well, and they created StackExchange, with the goal of providing a tool and a ruleset for content creation centered on authoritative questions and answers. (The genius of the StackExchange approach is that it allows for two dimensions of answering, by allowing for an answer to be marked as a solution by the inquirer, and also by allowing the community of users to vote on other answers which may indicate a better or more applicable solution.) From this grew the StackExchange network, the crown jewel of which is StackOverflow (SO).

How did Magento SE come to be?

The first Magento-related question on SO appeared September 2008, and from then on the body of questions and answers grew organically, reaching over 37,000 questions to date. Adoption of SO as the Q&A forum for Magento increased as more users abandoned v1 of the Magento forums, which had become overrun with spam. True to form, as more users moved to SO, more and better content appeared, creating a positive feedback loop via search engines. I myself jumped from being a moderator on our forums to being a contributing member of the SO community in July 2011, and over the next 1.5 years I spent a lot of time answering questions there. During this time, I began to notice an increase in “user” questions, that is, questions about how to use the Magento application. These questions were closed right away, which is appropriate given SO’s scope. However, I felt that these were valuable questions to ask & answer, and I further believed that there was value in having them exist alongside technical questions. A new forum home was indicated.

Therefore, in December of 2013 I proposed a Magento-dedicated SE site which would allow focused Magento technical and user questions. Initially I was warned by SE staff that they might close the proposal, ironically for the most of the reasons that I was proposing it. From the initial proposal (2012/12/27 01:22:44Z), the site went through the necessary steps to achieve public beta in just over one month, launching in late January 2013, and immediately becoming one of the highest-traffic sites in the SE network. SE decided to let it play out.

How did Magento SE evolve over time?

Over the next 1.5 years the content on Magento SE grew and grew. Many dedicated users engaged with the constant deluge of questions from users new and old, simultaneously providing and curating content, following a typical but quick trajectory for SE sites. Despite our efforts however, the site remained in public beta. We began to look at the core metrics for beta sites: questions per day, percent answered, number of users, question/answer ratio, and daily traffic. We were constantly deficient in two of these: percent answered and question/answer ratio. A concerted effort was needed to improve the site’s stats, and by extension improve the content itself. This is what inspired Anna Völkl and Sander Mangel to create #MageStackDay, an event dedicated to “cleaning up” content with the hope of graduating MSE from its beta state. The first MageStackDay was quite successful, so a followup event was planned & executed a few months later. These efforts helped the MSE site to graduate to a full-fledged SE network site, opening it up for elected moderators, custom design, and other features.

Why do we still need MageStackDay?

The purpose of MageStackDay remains as it always has: to benefit MSE and the broader Magento community through focused collaboration. That said, the collective effort is only beneficial when the actions are obey and honor the chief tenet of Stack Exchange when it comes to content, which is to help it be better rather than to obliterate it altogether. While MageStackDay uses SE metrics to both inform and track progress, it’s essential to realize that these metrics are an indication of site quality only. It is easy to obsess over metrics rather than over material.

What should I do?

So, when engaging in today’s MageStackDay activities, or when participating on MSE in general, consider the following guidelines by to which I hold myself:

  • Prefer existing content over creating new content. Suggest edits, propose duplicates, and avoid adding answers which offer no new information.
  • Upvote good content liberally, but do so with integrity.
  • Down vote conservatively & comment when you do. Downvotes should be reserved for egregiously wrong answers.
  • Comment with kindness and consideration of quality. Comments are the spice of life.
  • Be helpful & courteous to new users. MSE culture is high-context & different from most forums; people need an introduction!

When it comes to content and conduct on MSE, think of the main tenet of the Hippocratic Oath: primum non nocere, or, do no harm. Perhaps we shall call it the Stackocritic Oath.

Okay gang, we’re starting soon. Happy Stacking!


PS: Congrats to Marius for cracking 100k Internet points on Magento SE. Quite an accomplishment!

PSS: Magento SE now has more Magento-focused questions than StackOverflow: 39,000 vs 38,000!

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.