The "Update" button for the billing address field is completely counterintuitive and bad user design. Customers do not expect to need to (and should not have to) hit an "Update" button for their billing address to take on an order. We've taken hundreds of calls from customers who don't understand why their billing address is incorrect on their order. It would be much more intuitive if, when the checkbox for "My billing and shipping address are the same" is unchecked, address validation on the billing address ran when the customer clicked the "Place Order" button. Conversion rates go down for every step you put between a customer and hitting the "Place Order" button. This counterintuitive "Update" button step undoubtedly has a negative effect on conversion rates and should be fixed.
... View more
See more ideas labeled with:
Broadly speaking, there is a few different ways of expressing application state in such a way that it's useful debugging: Logs (implemented in M2 with the excellent psr/log interface) Time series data (also known as metrics). Things like Data Dog, Promethiums, Sensu and so on. Traces; primarily expressed by opentracing.io, but also Zipkin, Lightstep This feature request is to track the implementation of #2; the expression of time series data in the application, as well as the export of this data via whatever mechanism might be setup to receive it. Time series data exposed by an application can provide extremely rapid feedback on an applications performance. This information can be used for a number of useful processes such as: Allowing infrastructure to make decisions around whether to modify the applications runtime environment Debugging the application performance during runtime Alerting when an application violates it's SLO Note: I am doing some work on this with PHP more generally tracked on github. Best place to contrib beyond core support is there. There is currently no simple way to express such time series data in Magento. There are several efforts that have been done to implement this in a third party, vendor specific way including: https://github.com/sitewards/magento-prometheus https://github.com/magento-hackathon/Hackathon_Datadog https://newrelic.com/partner/magento https://github.com/janpapenbrock/magento-statsd However, these suffer form a few drawbacks. In particular, There is no standard API (such as the psr/log api) that can be invoked in third party extensions reliably It locks the users into a hosting infrastructure; undesirable for the continuity of the project. Additionally, there are various metrics that would prove extremely useful when debugging Magento: Cache hit rates (https://github.com/magento/magento2/issues/11151) Cron metrics, such as last execution per job, queue length etc. Indexer status (expressed as 1 or 0) Cache enabled status (expressed as 1 or 0) Cache invalidations issued Orders in various states (processing, shipped etc) Customer logins (aggregate, not per customers) HTTP status codes However, the utilities aren't limited to the above. In particular, third party code often has reason to express it's health (such as the code developed by an agency) to ensure custom logic is functioning correctly, and that a feature is delivering sufficient value to jusify it's cost. General Background It is suggested the implementer have some experience implementing and using application instrumentation. There is a body of knowledge in this area that is immense of it's own right, and not a task that is so simple. Beyond that, the goal of the work should be to checkpoint the data, but defer all processing to the implementing time series databases. It should also have minimal impact on performance. Lastly, high cardinarily data can be expressed through logs or traces, and is perhaps not something that is easily expressed by time series metrics (though honeycomb et. al would beg to differ) Primitives The open source monitoring package Prometheus expresses the primitives: counter gauge histograma summary The author has implemented this in several places, and has found uses for counter and gauge in a repeated way, as well as a limited use for histogram. To begin, the implementation of "guage" and "counter" would be amply sufficient to justify the majority of cases. This is supported by both Prometheus and DataDog, and it's presumed the majority of time series databases. Non Goals It should not be a goal of this work to implement the metrics view in Magento. This can be approached as a separate task, but the primary intent of this work is to express time series data in such a way it can be consumed by third party services. It should not be a goal of this work to track the time associated with the time series data. The sampling is left to the third party application implementations. It should not be a goal of this work to instrument third party applications (redis). They have their own implementations, and should be considered separate services. It's unclear whether instrumenting the PHP runtime itself would be beneficial, though this can likely be handled in the bespoke cases it's required by third party utilisation of the above library. Interface Ideally there should be an interface similar to the psr/log exposed that allows the checkpointing of metrics. Something like: <?php
class Foo
{
private $oMetricRegistry;
/**
* Dependencies automagically wired by DI
*/
public function __construct(
// Singleton injected that stores the metrics. Invariably a global, persists towards the end of the request
\Magento\Framework\Metrics $oMetricRegistry
) {
$this->oMetricRegistry;
// Ensure the metric exists. This operation is an idempotent "create if not exists" type operation.
$this->oMetricRegistry->register(
// metric identifier
'vendor_extension_foo_thing',
// metric type. Can be one of "count" or "gauge"; potentially "histogram".
'count',
// label keys. Labels are mechanisms to slice time series data, supported by both data dog and prometheus
[
'attribute'
]
);
}
public function doThing()
{
// An operation changing the state of the metric. In this case, an increment -- it's a count.
$this->oMetricRegistry->increment(
// The metric identifier
'vendor_extension_foo_thing',
// The label values.
['value']
);
}
} This would allow an extremely simple API to quickly expose the data for ingestion into time series. Storage Ideally, the storage engine should be pluggable, but implement: APCu In Memory (or "null" when considering parity with psr/log) Redis MySQL This would cater the wide range of hosting constraints that Magento can operate with, with a predisposition for not changing exising behaviour (checkpoint to memory but flush at the end of each request) Exposition There are various ways that the data may be exposed. It's suggested the core team deliberately not support any mechanim (except perhaps a native admin panel one, expressed as separate work). Instead, rely on third party / community vendors to provide the required libraries, similar to psr/log. Broader PHP community involvement It is the authors hope that this conversation is extended to the broader PHP community, perhasp through the involvement in FIG. A single interface for time series data would have ramifications for the langauge more generally. Future Work Once implemented, Magento's introspectability could be extended further by implementing traces. Related Reading: http://www.brendangregg.com/usemethod.html https://prometheus.io/docs/introduction/overview/ https://github.com/DataDog/php-datadogstatsd https://github.com/Jimdo/prometheus_client_php
... View more
See more ideas labeled with:
It would be helpful if Magento supported the direct integration of Google Analytcs 4. As is currently possible under Stores-> Sales -> Google Api for GTM and Universal Analytics.
... View more
See more ideas labeled with:
Feature request from paales, posted on GitHub Jul 31, 2016
I just added 19 products to my category. The frontend doesn't show any products. It would be really helpful to give a hint why a product isn't visible on the shop. (After being a Magento developer for years, I still struggle with such a basic thing..)
In an effort to improve the usability of the system and greatly improve the merchant experience, context aware hints are crucial. Explain what is going on and how should the merchant fix their 'mistakes'.
The idea is to add a visibility-helper-icon to product grids so that it is clear why products aren't shown and suggestions how to fix this.
With this, we can collapse the Visibility, Status and maybe Websites column into one 'Visibility Helper' column (or just an icon behind the name of the product). The visibility helper icon will have a popover with additional information why this is happening:
Not visible:
Icon: http://fontawesome.io/icon/eye-slash/
Product isn't visible anywhere //one or more applicable
Product is disabled [Enable Product]
Inventory is set to 0 [Set inventory] //when the setting is enabled
Product is set to Not Visible Individually and isn't part of a composite product [Make visible]
Product is set to Catalog but isn't connected to a visible category
Limited
The product has limited visibility
Product is set to Not Visible Individually but part of a composite product.
Product is set to Search [Set Catalog Search]
OR Product is set to Catalog, Search but isn't attached to a visible category. [Add Category]
Product is set to Visibility: Catalog but isn't connected to a visible category [Assign to Category]
Visible
Conditions:
The above conditions don't match
Tooltip:
Gives a link to the category and product view page.
Questions:
How are we going to handle store view / website specific values without having huge popovers?
Might it be a good idea to include salable information as well?
... View more
We need an alternative to the customer email login which is phone number login. It may not sound useful in Western countries but in China, it's necessary. Chinese people only use this login method with Taobao (taobao.com), Tmall (tmall.com) or JD (jd.com), they are used to it. Without this basic option, Magento 2 will never make it in China.
... View more
See more ideas labeled with:
Status:
Investigating
Submitted on
08-30-2016
01:12 PM
Submitted by
apiuser
on
08-30-2016
01:12 PM
Feature request from paales, posted on GitHub Nov 17, 2014
In the light of the new Postgres 9.4 features: indexed JSONB, wouldn't it be awesome if Magento supported it.
JSONB (brought into mainline in 9.4) -> Ideal replacement for flat tables, performance is on par (or better) than MongoDB.
Flexible full-text search (brought into mainline in 8.2) -> Ideal for a simple search when SOLR is too much
Multiple replication options to suit your environment and requirements
Uses multi-version concurrency control, so concurrent performance rocks
Fully ACID compliant (innodb is as well)
Well-documented
Strong access-control framework
Materialized Views
There are probably a 1000 more features that I can't think of, but I think you get the point. I understand Magento would like to support MySQL as well because it is more entry level and Magento has some abstract resource methods which should support other databases, but in practice Magento currently only supports MySQL. Better official support and feature integration would be awesome.
... View more
Status:
Investigating
Submitted on
08-30-2016
01:10 PM
Submitted by
apiuser
on
08-30-2016
01:10 PM
Feature request from cfcnn, posted on GitHub Oct 21, 2015
About produt images. When delete a product at the backend, the related product images are not deleted automatically, so that those useless images still occupy storage. Will Magento2 delete products and product images together?
If 3 images for each product, 500KB for each image, there are 1,000 deleted products, and the 3,000 images are not deleted together with products, they waste 1.4GB storage; If there are 10,000 items, that's 14GB... Magento users have to pay for that storage. And more and more time when backup or transfer website.
1,000 items × 3 images × 500 KB/image=1.4GB
10,000 items × 3 images × 500 KB/image=14GB
The default customer registeration verification of Magento is too simple, it's unable to reject robot registration, it's a problem for world magento users, a number of robot registration makes database very large. And they leave batch comments with ad links automatically by soft, or send spam ad emails to other people through " Email to Friend".
Could magento2 add a google verification ReCaptcha to identify human or robot? ( as follows)
... View more
Feature request from paales, posted on GitHub Jun 21, 2016
Currently using 2.1-rc3.
There is no API available for product option swatches. It makes sense if we are able to use the ProductAttributeOptionManagementInterface to add new swatch texts to products.
Maybe to have better separation of concerns we could have a ProductAttributeOptionSwatchManagementInterface to add swatch information to an existing option.
... View more
It would be great to be able to manually control the order of static assets added via XML, for example if you are loading 5 CSS files you can set the order they load in. At the moment this is out of a developers control, there are workarounds such as a adding an attribute but this still isn't very useful.There are extensions that add the ability to use so this is possible. Some useful links/discussions: - https://github.com/magento/magento2/issues/1821 - https://github.com/magento/magento2/issues/8406 - https://magento.stackexchange.com/questions/94769/what-is-the-proper-way-of-positioning-ordering-css-files-in-magento-2 - https://github.com/quickshiftin/mage2-ordered-assets I have heard this mentioned several times, in this instance a third party module is adding some CSS which is loading before the custom CSS therefore overwriting it.
... View more
See more ideas labeled with:
The current Adobe Live Search implementation doesn't currently support adding translations. The only current way to add translations to the Search Popover "View All" and "Suggestions" labeling is to use CSS (as provided as a temp solution by the Adobe Support team). This is not an accessible friendly approach. The desire would be to replace the text within the label. Being able to translate within the i18n CSV files where most translations are defined would be best.
... View more
See more ideas labeled with:
Status:
Investigating
Submitted on
08-30-2016
01:11 PM
Submitted by
apiuser
on
08-30-2016
01:11 PM
Feature request from markoshust, posted on GitHub Jul 29, 2015
This doesn't exist in M1 but I believe it should be in M2. There are times when shipments are created by accident, or the customer calls to cancel their order. In those circumstances the shipment should be able to be deleted or canceled.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:28 PM
Submitted by
apiuser
on
08-30-2016
12:28 PM
Feature request from hostep, posted on GitHub Jun 26, 2016
Steps to reproduce
Install Magento 2.1.0 using composer but use the --no-dev flag
Look at the dev/ directory in the filesystem
Expected result
The dev/ directory should be empty or non-existing
Actual result
The dev/ directory exists and contains a bunch of development stuff
Discussion
In an effort to try to find the best options of deploying a Magento 2 installation to a production server, I keep discovering issues which aren't ideal.
As a best practise, we use composer install --no-dev --prefer-dist --optimize-autoloader on a production server when deploying. I would expect that no development dependencies gets installed because of this, but this is not true.
This isn't only about the /dev directory, but also for example about the lib/web/css/docs/ directory.
The last one for example causes the setup:static-content:deploy command to compile a less file which has absolutely no purpose of existing on a production server while it takes multiple seconds to compile this file, per locale, per theme.
In a very quick test, I discovered that when removing the above directories before executing setup:di:compile and setup:static-content:deploy makes those two run about 58 seconds faster (on my local machine) then without removing those directories.
Here is a list of files/directories which I believe shouldn't get deployed to a production server:
.htaccess.sample
.php_cs
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
COPYING.txt
Gruntfile.js.sample
ISSUE_TEMPLATE.md
LICENSE.txt
LICENSE_AFL.txt
nginx.conf.sample
package.json.sample
php.ini.sample
dev/
lib/web/css/docs/
phpserver/
...
(the license files, I'm not sure about)
I think most of these files are getting into place because of the mapping in the composer.json file of the magento2-base module.
It would be great if those mappings can get split of into a mapping for development purposes and one for all environments.
My suggestion would be to add a map-dev to the extra section in the composer.json similar as the normal map section and update the magento-composer-installer project to support this and only install the map-dev files when you run composer without the --no-dev flag.
This is all theoretically, I haven't tested this properly, but let me know what you think.
I know that in your deploy scripts, you can simply delete the files you don't want after composer install --no-dev has run, but I think it makes sense to automate this, because not everyone will notice these issues.
Slightly related issues:
https://github.com/magento/magento2/issues/4245
https://github.com/magento/magento2/issues/4162
https://github.com/magento/magento2/issues/2561
... View more
Status:
Investigating
Submitted on
08-30-2016
12:02 PM
Submitted by
apiuser
on
08-30-2016
12:02 PM
Feature request from MonteShaffer, posted on GitHub Jan 18, 2016
I am swimming around the code for magento-backend (within Model and App), trying to figure out how in the world I would hook into Magento2 authentication for creating my own Duo Two Factor Support.
isLoggedIn ??
Sentry Human Element developed one for the OLD CE 1.9
http://www.human-element.com/sentry-two-factor-authentication-documentation/
And if you look at their code, they are really using a library from the DUO website itself...
https://github.com/duosecurity/duo_php
Certainly other authenticators (like Google) could easily be introduced.
Of note, there needs to be some backend-manually recovery if the DUO fails.... some file in the folder structure with a force bypass.
e.g.,
bypass-duo = true;
So the admin tool would have a toggle (enable/disable DUO, just for backend), and if DUO is enabled in the system, but this text file is true, it would disable, allowing admins into the system.
An example of Wordpress plugin ...
https://wordpress.org/plugins/duo-wordpress/
This increases security tremendously.
Anyway, I believe this should be a core feature (as a system->configuration->option), so I am proposing this as a feature.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:01 PM
Submitted by
apiuser
on
08-30-2016
12:01 PM
Feature request from mage2pro, posted on GitHub Feb 04, 2016
https://mage2.pro/t/462
... View more
Feature request from markoshust, posted on GitHub Oct 13, 2015
Grunt has a very slow building process. Gulp should replace Grunt as the recommended method for building static assets.
This would also be a good time to decouple PHP calls from the nodejs build process. Any PHP calls from nodejs should be moved to ./bin/magento so node/js code is kept node/js only, and PHP scripts are only called from PHP. This will help streamline the deployment process.
... View more
Feature request from Vinai, posted on GitHub Jul 30, 2016
Whenever I try to use a custom or core UI component the experience is frustrating, time consuming and painful.
It would be great to see the components either made simpler (to use and understand how they work) or to be replaced with something simpler altogether :tada:.
There is so much JS "magic" and conventions and poor documentation I find the developer experience severely lacking. Much of the XML is bonkers to read and write. So much of it seems to be "just do X and it will work" without information on WHY and HOW to debug if something does not work.
The combination of a ton of PHP, XML and JS makes for a very tricky debugging process. It is very hard to properly write tests in small steps. Much of it is "add ALL the required code or NOTHING will work".
Seemingly simply things become bloated tasks.
Preconditions
This applies to any version of Magento 2 from beta up to the latest version on github.
Steps to reproduce
Try to use UI components, either custom ones or core ones, without using extensive copy&paste and actively avoiding the urge to even think the question "Why?".
Expected result
The system should be simple to use AND understand.
Actual result
Hours wasted slogging through code and documentation, trying to understand WTF I got wrong and I find myself questioning some of my life choices.
... View more
Allow a customer-level setting that enables/hides payment methods. For example, I have a small number of customers who cannot be removed from their price group, but who I want to force into Proforma Invoicing rather than Creditcard. By linking the payment method to the price group, I have to double up the number of price groups, one for normal people and one for those with bad credit etc.
... View more
Feature request from sunilit42, posted on GitHub May 30, 2016
Hello,
I am login as customer and i have 5 address in my account.
I am on checkout page now, i want to edit shipping address on checkout page but there is no functionality for same.
... View more
Feature request from Asitis, posted on GitHub Jun 10, 2016
Would it be possible to make the import/export function also available for all the static pages and blocks? Nowadays webshops are barely just products, but also consist of a lot of static content, but migrating it is a real headache. It is doable by exporting/importing database tables but it's a hassle to set all the correct storeviews, ID's and pages. Plus in a combination of static blocks tied to widgets in a certain theme, this is horrific.
It would be nice to see some WordPress functionality here, if you export stuff from WordPress and import it in another you get a screen with all the variables (like author and such) and you can select to create that author, or adding that content to another existing author. The same could be in Magento;
How it could work
If you import Pages and/or Blocks, it could be mapped to all storeview by default, or (like WordPress) show the option to add the missing storeviews or add them to an exisiting.
Adding Widgets would ask for input about which theme, storeview and block it would be assigned to, or leave the block open (and import is as inactive) to add the blocks at a later stage after the import
... View more
Hi, Is there any plan to include Store pickup feature in Magento Community Edition? If yes, then in which version is it planned to release and also what is the date of release. I am waiting for this feature since long....
... View more
See more ideas labeled with: