Yesterday I released a post asking community opinions about which underlying framework people thought Magento 2 should be built on. I thought I would give a little insight into how this and other feedback is used within Magento. (This post is related to the core product, not Connect or magento.com.)
Within Magento there are the typical product development functions:
- Product Management – deciding what functionality to include when.
- User Experience design – thinks about merchant and customer flows through the site.
- Developers (including architects) designing and implementing code.
- Quality Assurance.
- Technical Documentation writers.
- Agile Program Management Office (APMO) – coaches, audits, and drives process.
Other groups with Magento include consulting, customer support, partner programs, training, marketing, and sales. (I have probably missed some here.) While these teams do not directly contribute to Magento 2 product development, they do however provide feedback that influences the product. For example the support organization is a great source of information on problem areas in the product; the consulting team provides information from customer deployments; sales provides information on product gaps; and so forth. This information all feeds into the backlog.
So who makes the decisions of what product features make it into in Magento? Ultimately it is the Product Managers, but we also use a radical internal strategy. We talk to each other! While the product organization owns the final decisions of what goes in and what does not, there are frequent conversations with relevant teams about ideas, external feedback, effort estimations, technical perspectives, etc that feed into the various decisions.
Sources of Input
Here are some of the sources of information that feed into product decisions.
- The Product Managers are in frequent contact with various external parties via presentations and catch ups.
- The Product Managers are frequently at conferences listening and discussing. At several recent conferences they held “buy a feature” game where participants were given “Magento money” to invest into features they wanted to see in the product.
- Marketing conduct periodic market surveys.
- Ideas also arrive from other groups such as the consulting group, sales, and partner programs.
- eBay Enterprise also has projects that involve Magento and provide feedback on their needs.
- Being a technical product, Engineering have opinions on direction based on their experience.
So where do I personally fit in? My role within Magento is that of Chief Architect, but I am the first to acknowledge that I have less history in Magento than many others around me in the Engineering organization and externally. So my role is frequently more to review and align the ideas and plans put forward by others. Luckily there is great depth within the team and a great community with numerous experts that have been happy to help.
So what external sources do I personally use?
- I talk/email a number of individuals recognized in the community as experts in particular domains. I will often ask them direct questions to get their opinions.
- Magento holds a few meetings a year where we invite a number of external parties in a room together to review plans and discuss options. Getting multiple people in a room we find helps drive decisions faster as the various parties can discuss in person and put forward different points of views. These are invitation only events because we need to control the attendance list, and because we want to ensure we get a spread of representatives from different areas of the community. (Sorry Phil, they are not really “secret Dr Evil meetings” – MageTalk Episode 12.)
- I read through online sources, mainly twitter and the Magento 2 GitHub repository. I don’t read it all, but I do my best. GitHub in particular is a great way for the community to provide concrete feedback on Magento 2. We use the meetings above, but we also use GitHub issues as the online way to listen and discuss topics with the greater community. If you have some feedback, please share it! They all get read.
- I have also been writing blog posts. Originally these started purely as sharing information. However I have been starting to use them more to also collect information asking for comments or voting on polls.
My Blog Posts and Polls
In terms of sharing more information via blog posts, I believe this has been valuable to the community based on some feedback (thanks!), and so I plan to continue this. In terms of collecting feedback some topics I have got lots of feedback on, and others I have got almost no feedback.
Here are some examples of how I use the data back from blog posts:
- I watch how many people read my blog posts. This gives me information on how much people care about a topic. The framework blog post from yesterday is one of the most popular posts to date, around the same level of interest as my Magento 2 Goals post (my first blog post on Magento 2). My original Magento 2 Goals blog post I believe was popular because people were craving for Magento 2 news early on and it was a very generic post (easily consumable by merchants and developers). My readership of any blog post since rarely gets back close to that level. The Framework blog post is more technical, but attracting a lot of interest. So this tells me this is an area people may care about.
- The actual votes are of course interesting as well. Sometimes the voting is really too low to be reliable. (5 votes is just not enough to trust the results.) Successes to date include on how long to give extension developers between the last release candidate and the final official release (a few weeks) and which platform should Magento 2 build on (a more complex discussed further below).
One point I would like to expand upon here however is the processes that go behind polls. I will be quite up front and say I often ask questions with an expectation of what the answer will be based on other inputs. The poll however is useful as confirmation against a wider sample. To avoid bias, I may avoid giving out the full story on where we are up to. I know this can come across as “Oh my goodness, why is Alan asking that! Shouldn’t he know the answer already?” I also have to bite my lips at times around some of the community comments I see – I would rather see the conversation run to see where it ends up.
So far I think the team has been pretty good in predicting the likely results, but there definitely have been exceptions. So don’t think the polls are a rubber stamp on decisions already made – they make a difference.
Here are some example questions that the recent platform poll can help with. Remember that the current plan of record is to remain on Zend Framework 1.
- Investigating other options takes effort. If the poll results were other than expected that could result in deeper investigations than otherwise planned.
- The plan for Magento 2.0 (the first release) is not to move from Zend Framework 1, but if a problem came up such as ZF1 not being supported on PHP 7 then it would be better to move now.
- The setup tool uses libraries from Symfony and ZF2. It works, but has caused some confusion “Are they using ZF2 or Symfony? Can’t they make up their minds?”
- Now we are further into the project, we know more about work estimates than earlier.
Let’s look at yesterday’s platform vote in a bit more detail. Before holding the poll I had already talked to various people over a period of time. The expected outcome was for Symfony to win the poll, if only because of mind share. Symfony has a more active community right now. Zend Framework 2 was predicted to come in second as the logical successor from Zend Framework 1. And this is how the votes are panning out so far (right now they are at 37% Symfony, 21% ZF2, 14% ZF1).
It is also expected that general votes will dominate in votes over expert voices. That is fine – it just needs to be taken into account. That is, we know a larger number of votes for a topic does not necessarily make it right. An expert may know some detail saying why an approach will not work that the majority of voters do not understand. Only looking at the votes and ignoring individual voices and arguments would be dangerous. But it can also be dangerous looking only at the opinions of a minority of experts. The trick is to get multiple sources of data from which to make decisions, and then more deeply investigate situations where the data diverges.
My main reason for this particular post is really to say “don’t panic”. I really appreciate every bit of feedback I can get when I ask questions to the community. But don’t think the team does not have a plan or opinions. Don’t assume just because we ask questions that we don’t have our own answers already. These decisions have been reached using a range of inputs. However it is always useful to get as unbiased feedback as possible, so I may ask some questions without revealing what my personal opinion on the matter is.
So next time I do a post asking questions, remember I read and value every bit of feedback. Please share your opinion! But don’t confuse myself asking questions on my private blog with the Magento team not having its own strategy or opinions. The community feedback is one of multiple sources of input that is valued and used when forming or reviewing decisions. Ultimately, the responsibility lies with the team to decide what to include or not include, and we know that most decisions made will likely have people disagree. That is our job. I still appreciate people going to the effort of providing feedback, even if we don’t end up following it.