Magento Extension Developers Network (ExtDN) https://extdn.org Fri, 24 Dec 2021 00:49:49 +0000 en-US hourly 1 https://wordpress.org/?v=5.5.3 https://extdn.org/wp-content/uploads/2019/10/cropped-DN-only-trans-32x32.png Magento Extension Developers Network (ExtDN) https://extdn.org 32 32 March 11th: ExtDN Open Chat on Magento extensibility https://extdn.org/2021/03/06/march-11th-extdn-open-chat-on-magento-extensibility/ Sat, 06 Mar 2021 14:07:20 +0000 https://extdn.org/?p=2397 The landscape of Magento is changing – step by step. Microservices are being introduced (ElasticSearch, RabbitMQ). Alternative frontends like Hyva Themes, Magento PWA Studio and Vue Storefront are taking over – the keyword being “headless”, where any frontend could connect to the Magento backend system by using GraphQL.

But where do Magento extensions stand, amidst all of this change? Would you still be able to enable some kind of turn-key functionality, simply by installing an extension? Or is the future of extensions lying much more in the area of libraries (like PHP libraries with ViewModels or Vue UI components) and GraphQL endpoints, where the system integrator still needs to finetune before something useful is happening?

We don’t know. But we are ready to chat with you about this. At the first ExtDN Open Chat meetup, on March 11th 2021, the network of extension developers is opening up the doors with anyone in the Magento ecosystem, so we can have discussions, friendly conversations, brainstorms and some nice chat-chat.

Pre-register now via hopin.com/events/extdn-open-chat

]]>
Yireo: Join our ExtDN Open Chat (March 11th) https://extdn.org/2021/03/06/join-our-extdn-open-chat-meetup-march-11th/ Sat, 06 Mar 2021 13:59:46 +0000 https://extdn.org/?p=2392 The worlds current lockdown prevents us from attending conferences, while there is actually so much to debate in the current Magento ecosystem. ExtDN comes to the rescue by organizing regular meetups for anyone to attend. The first session – March 11th – will be focused upon the future of Magento extensibility. Make sure to join us!

Read the full article on yireo.com/blog/2021-02-25-extdn-open-chat-on-magento-future

]]>
New EXTDN tools announced in jetrails’ podcast ep.50 https://extdn.org/2020/11/11/new-extdn-tools-release-announced-in-jetrails-podcast-ep-50/ Wed, 11 Nov 2020 15:19:33 +0000 https://extdn.org/?p=2378 In 2019 ExtDN published Do and Dont’s of Magento Extension development to help vendors reach the highest quality standards. Our vision is that merchants can easily find trusted extensions the provide a great experience and our mission is to help push the whole ecosystem in that direction.

Today we are proud to launch tools to help you reach quality code standards and took the opportunity of one of our member’s interview to announce it in the episode 50 of Jetrail’s podcast.

]]>
Announcing the ExtDN Github ACtions for M2 https://extdn.org/2020/10/08/announcing-the-extdn-github-actions-for-m2/ Thu, 08 Oct 2020 07:52:39 +0000 https://extdn.org/?p=2359 One of the ways ExtDN is trying to advance the Magento ecosystem is through promoting good practice in extension coding standards. We are happy to announce that to support this mission we have started releasing some open source tools that can be easily embedded in any Magento 2 extension development process using Github Actions.

While there is more to a great extension using these actions we believe provide a good baseline.

All you need is a repo and then copy and paste our pre-setup Github Actions.

Magento 2 Coding Standard

Back in the early days there were many differing standards in circulation in the Magento ecosystem:

  • PSR-2 (Magento is part of PHP-FIG after all)
  • MEQP-2 (Marketplace)
  • ECG-2 (Expert consulting group)
  • Standard contained in the Magento 2 code base

Fortunately all of the above have now been replaced by the unified Magento 2 Coding Standard with the core code also adhering to it.

This Github action allows you to test your own code against this standard in an automated fashion.

Screenshot Github Action with Coding Standard

Create a new file .github/workflows/coding-standard.yml then copy the following content

name: ExtDN M2 Coding Standard
on: [push, pull_request]

jobs:
  static:
    name: M2 Coding Standard
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: extdn/github-actions-m2/magento-coding-standard@master

once this is pushed to Github you are all set and any new code pushes and pull request will run through Magento’s coding standard check.

Magento 2 PHPStan

PHPStan is a static code analysis tool that understands more of your code than the Php_CodeSniffer that the Magento 2 Coding Standard above is based on, thanks in large parts being Php 7+ and having access to the underlying code syntax tree.

This allows PHPStan to catch a wide range of issues without the need to write explicit tests for it. Issues that show up in PHPStan include calling inexistent classes, methods, wrong parameter counts, etc.

Adobe has recently introduced PHPStan to the Magento core code checks. This Github action extracts this check to be run standalone against your code.

Screenshot Github Action with PHPStan

To use it create a new file .github/workflows/phpstan.yml with the following content:

name: ExtDN M2 PhpStan
on: [push, pull_request]

jobs:
  phpstan:
    name: M2 PhpStan
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: extdn/github-actions-m2/magento-phpstan@master
        with:
          composer_name: foo/magento2-foobar

Magento 2 Mess Detector

This action extracts the Magento 2 mess detector ruleset into its own action. Usage is through creating .github/workflows/mess-detector.yml with this content:

name: ExtDN M2 Mess Detector
on: [push, pull_request]

jobs:
  phpmd:
    name: M2 Mess Detector
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: extdn/github-actions-m2/magento-mess-detector@master

Magento 2 Integration Tests

Integration tests are a great way to test that your code works well within a given Magento installation. This Github Action provides a blueprint on how to get your existing tests run as a Github action.

In your Github repository add .github/workflows/integration.yml

name: ExtDN M2 Integration Tests
on: [push, pull_request]

jobs:
  integration-tests:
    name: Magento 2 Integration Tests
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:5.7
        env:
          MYSQL_ROOT_PASSWORD: root
        ports:
          - 3306:3306
        options: --tmpfs /tmp:rw --tmpfs /var/lib/mysql:rw --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
      es:
        image: docker.io/wardenenv/elasticsearch:7.8
        ports:
          - 9200:9200
        env:
          'discovery.type': single-node
          'xpack.security.enabled': false
          ES_JAVA_OPTS: "-Xms64m -Xmx512m"
        options: --health-cmd="curl localhost:9200/_cluster/health?wait_for_status=yellow&timeout=60s" --health-interval=10s --health-timeout=5s --health-retries=3
    steps:
      - uses: actions/checkout@v2
      - name: M2 Integration Tests with Magento 2 (Php7.4)
        uses: extdn/github-actions-m2/magento-integration-tests/7.4@master
        with:
          module_name: Foo_Bar
          composer_name: foo/magento2-foobar
          ce_version: '2.4.0'

Magento 2 Performance Profiling

Thanks to our ExtDN supporter Blackfire.io we have been able to work on a performance test for extensions.

The test we have come up with for the initial release is meant as a way to flag extensions that have obvious performance implications. The test runs a performance profile of the category page before and after installing an extension. We excluded the block level cache and fullpage cache to get a true representation of what happens at the application level. The profiles are then compared and will fail if memory consumption, execution time or number of sql queries goes up substantially (more than 25%).

Why the category page? For the initial implementation we picked a page that historically has been one that exhibits performance issues often. What might look like a small delay on a single product can be substantial if the category page loads a lot of products.

Why 25% as a default threshold? In our testing so far we have seen a variation of around 5-10% on the before and after snapshots without any code changes. Setting the threshold to 25% provides a bit of headroom for an extension to add something to the category page. We want to catch the outliers here.

In your GitHub repository add the below as .github/workflows/performance.yml

name: ExtDN M2 Performance Testing
on: [push, pull_request]

jobs:
  performance:
    name: M2 Performance Testing
    runs-on: ubuntu-latest
    env:
      DOCKER_COMPOSE_FILE: "./docker-compose.yml"
      EXTENSION_NAME: "Foo_Bar"
      EXTENSION_PACKAGE_NAME: "foo/magento2-foobar"

    steps:
      - uses: actions/checkout@v2
        name: Checkout files
        with:
          path: extension

      - name: Get composer cache directory
        id: composer-cache
        run: "echo \"::set-output name=dir::$(composer config cache-dir)\""
        working-directory: ./extension

      - name: Cache dependencies
        uses: actions/cache@v1
        with:
          path: ${{ steps.composer-cache.outputs.dir }}
          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
          restore-keys: ${{ runner.os }}-composer-

      - name: Prepare ExtDN performance testing
        uses: extdn/github-actions-m2/magento-performance-setup@master
        env:
          BLACKFIRE_CLIENT_ID: ${{ secrets.BLACKFIRE_CLIENT_ID }}
          BLACKFIRE_CLIENT_TOKEN: ${{ secrets.BLACKFIRE_CLIENT_TOKEN }}
          BLACKFIRE_SERVER_ID: ${{ secrets.BLACKFIRE_SERVER_ID }}
          BLACKFIRE_SERVER_TOKEN: ${{ secrets.BLACKFIRE_SERVER_TOKEN }}

      - name: Install Magento
        run: >-
          docker-compose -f ${{ env.DOCKER_COMPOSE_FILE }} exec -T php-fpm
          bash -c 'cd /var/www/html/m2 && sudo chown www-data: -R /var/www/html/m2 && ls -al && id
          && php -f bin/magento setup:install --base-url=http://magento2.test/ --backend-frontname=admin --db-host=mysql --db-name=magento_performance_tests --db-user=root --db-password=123123q --admin-user=admin@example.com --admin-password=password1 --admin-email=admin@example.com --admin-firstname=firstname --admin-lastname=lastname'
      - name: Generate Performance Fixtures
        run: >-
          docker-compose -f ${{ env.DOCKER_COMPOSE_FILE }} exec -T php-fpm
          bash -c 'cd /var/www/html/m2
          && php -f bin/magento setup:performance:generate-fixtures setup/performance-toolkit/profiles/ce/small.xml
          && php -f bin/magento cache:enable
          && php -f bin/magento cache:disable block_html full_page'
      - name: Run Blackfire
        id: blackfire-baseline
        run: docker-compose -f ${{ env.DOCKER_COMPOSE_FILE }} run blackfire-agent blackfire --json curl http://magento2.test/category-1/category-1-1.html > ${{ github.workspace }}/baseline.json
        env:
          BLACKFIRE_CLIENT_ID: ${{ secrets.BLACKFIRE_CLIENT_ID }}
          BLACKFIRE_CLIENT_TOKEN: ${{ secrets.BLACKFIRE_CLIENT_TOKEN }}
          BLACKFIRE_SERVER_ID: ${{ secrets.BLACKFIRE_SERVER_ID }}
          BLACKFIRE_SERVER_TOKEN: ${{ secrets.BLACKFIRE_SERVER_TOKEN }}

      - name: Install Extension
        run: >-
          docker-compose -f ${{ env.DOCKER_COMPOSE_FILE }} exec -e EXTENSION_BRANCH=${GITHUB_REF#refs/heads/} -T php-fpm
          bash -c 'cd /var/www/html/m2
          && php -f vendor/composer/composer/bin/composer config repo.extension path /var/www/html/extension
          && php -f vendor/composer/composer/bin/composer require ${{ env.EXTENSION_PACKAGE_NAME }}:dev-$EXTENSION_BRANCH#${{ github.sha }}
          && php -f bin/magento module:enable ${{ env.EXTENSION_NAME }}
          && php -f bin/magento setup:upgrade
          && php -f bin/magento cache:enable
          && php -f bin/magento cache:disable block_html full_page'
      - name: Run Blackfire Again
        id: blackfire-after
        run: docker-compose -f ${{ env.DOCKER_COMPOSE_FILE }} run blackfire-agent blackfire --json curl http://magento2.test/category-1/category-1-1.html > ${{ github.workspace }}/after.json
        env:
          BLACKFIRE_CLIENT_ID: ${{ secrets.BLACKFIRE_CLIENT_ID }}
          BLACKFIRE_CLIENT_TOKEN: ${{ secrets.BLACKFIRE_CLIENT_TOKEN }}
          BLACKFIRE_SERVER_ID: ${{ secrets.BLACKFIRE_SERVER_ID }}
          BLACKFIRE_SERVER_TOKEN: ${{ secrets.BLACKFIRE_SERVER_TOKEN }}

      - name: Compare Performance Results
        uses: extdn/github-actions-m2/magento-performance-compare@master

Additionally please create the following Github Secrets for this repository with the values available in your blackfire.io account:

BLACKFIRE_CLIENT_ID
BLACKFIRE_CLIENT_TOKEN
BLACKFIRE_SERVER_ID
BLACKFIRE_SERVER_TOKEN
Blackfire.io secrets in Github

Summary

We hope these actions provide you with a starting point on your testing journey towards writing quality Magento 2 extensions. Any questions or suggestions please a leave a comment in our repo here.

]]>
collab between extDN members: Onestepcheckout and TIG https://extdn.org/2020/03/12/collab-between-extdn-members-onestepcheckout-and-tig/ Thu, 12 Mar 2020 10:51:06 +0000 https://extdn.org/?p=2349 We are excited to share the success story of a Magento merchant’s migration from Magento 1 to Magento 2. This includes great collaboration between two members of ExtDN: OneStepCheckout and TIG.

Indeed, TIG PostNL extension and OneStepCheckout versions for Magento 2 presented conflicts. Both companies being part of our network helped with open and timely communications, and that was key toward find a win win win solution so in the end the merchant wins too.

Read Ergomax migration to Magento 2 Case Study here.

]]>
Meet ExtDN at Magento Live EU 2019 https://extdn.org/2019/10/10/meet-us-at-magento-live-eu-2019/ Thu, 10 Oct 2019 01:35:56 +0000 https://extdn.org/?p=2313

ONESTEPCHECKOUT

Magento Live 2019 is the biggest Magento event in Europe, on a par with the legendary Magento Imagine event in the US. We’ve been to Imagine and various European Magento events since 2010 so it makes sense to attend this one, one year after the announcement of the acquisition by Adobe.

What is very special this year is the Amsterdam location. Last year’s event was held in Barcelona where Magento has an office and where the sun always shines (except for the first day of the conference) and temperatures are mild in Autumn.

By picking Amsterdam, we feel that Magento is recognizing how strong is the Dutch market and that beats a grey and wet weather. The Netherlands is certainly our #1 market and has the highest number of Magento shops and certified Magento developers per capita. As such, one of the things we are looking forward to is to connect with our Dutch partner agencies and customers, who have been early adopters of our product for Magento 2.

Aside from the “Hallway Track” where we meet other partners, Magento friends, fellow ExtDN members, and potential customers, we are also quite excited by the speaker line up which is nicely diverse this year and promises to be pretty inspiring.

Culture wise, we don’t enjoy Stroopwaffels that much but we love our Hagelslag and will be stocking up!

Look for Eskil and Thien-Lan, you can’t miss their big button badge (best icebreaker ever)


YIREO

For many Magento fans in Europe, Magento Imagine has been out-of-reach due to travelling time and expenses. But with MagentoLive Europe, everyone in the EU gets a chance to meet up with everyone in the Magento ecosystem, including the new Adobe peeps. There are many changes coming up in the Magento ecosystem – headless, the Adobe acquisition, the refactoring to services, the shift towards enterprise. And every single change in that ecosystem is a solid reason to attend MagentoLive.

Of Yireo (which is not a big company), Jisse Reitsma will be attending the full 2 days of MagentoLive. Jisse was thanked three times for his activities in the community with a Magento Master award (not to be confused with the Magento Bastard award that he created himself) and is active with advocating better developer practices throughout the ecosystem – through conferences, training, hackathons, blogs and tutorials. And at a major Magento event like MLEU, the fact that so many major Magento players are gathered in a single place definitely leads to productive and interesting discussions.

At MagentoLive, you will find Jisse having numerous discussions with numerous people in the community – on his topic list are MFTF, PWA Studio, React/Redux/GraphQL in general, VueStoreFront, ExtDN, extension best practices. Do grab his attention to discuss tech stuff with him. Also, he is most likely going to co-lead one of the DevExchange discussion tables on the second day of MagentoLive (October 23rd).


FIREBEAR

The second MLEU event Firebear team to attend, and the second event after Adobe’s acquisition. Coincidence? We don’t think so.

The first visit was filled with the joy of meeting partners, chatting on the future of Magento ecosystem, and discussing opportunities with ExtDN. 

This year, as a proud member of ExtDN, Firebear team will be looking forward to discussing all the major topics of interest that filled 2019, data import and export processes, and chatting some more about Magento 2 future.

Will be bringing fire, and trying to catch up with all beautiful representatives of Magento community. ‘Magento is my passion’ motto should live on.


INTEGER NET

Some events are a yearly must-have in our calendars. One of them is MagentoLive Europe, as it brings together people from all over Europe who share a profound interest in Magento. 

This year’s edition is hosted in Amsterdam in the Netherlands – what a fitting country for MagentoLive Europe! The Dutch are known for their positive attitude towards innovative solutions which is the right setting for Magento.

Our team at integer_net will be represented by four of us: Our two Magento Masters Andreas von Studnitz and Sonja Riesterer will be there, joined by Christian Philipp and Willem Wigman.

There are a lot of side-events surrounding the actual conference days, e.g. Contribution Day on Monday. These gatherings are an ideal setting to meet like-minded people.

Here’s our tip for all conference attendees: stay long enough to attend DevExchange on Wednesday afternoon. We know from last year’s experience that DevExchange provides a great opportunity to talk to peers about technical or personal topics. Each table has its own predefined theme. This year’s suggestions range from payment solutions to agency life. Non-devs are welcome, too.

If you are new to the Magento community or feel a little lost in the midst of so many people, Sonja offers to be your conference buddy at MagentoLive.


TIG

During MagentoLive Europe, Magento fans of the whole world gather in Amsterdam to talk about the latest software news. With its rich history as an international trade hub, Amsterdam is the perfect place for an e-commerce event. We’re not surprised Magento has chosen our artistic capital city for this year’s European event. 

As one of the biggest Magento enthusiasts, we’ve attended several Magento events throughout the years. Among them of course the magnificent Magento Imagine, in Las Vegas. With Magento hosting Magento Live 2019 in our backyard, it’s only logical that our team also attends MLEU. 

We’re sending our prettiest Magento specialists to attend MLEU 2019. Meet Robert, Vincent, Daan, Dennis, Mickey and Kevin on both event days. Some of our team members will only attend one day, but we will make sure there is always one TIG-er to greet you! 

Since we aren’t the once to sit still, we’re most excited about the Hands-on Lab where we hope to learn everything about the local development for Magento Commerce Cloud. Of course, we’re also excited to meet other ExtDN members and expand our network. Fair enough, beer and bitterballs are also nice! 

Fancy meeting us? We’ll see you there!


EBIZMARTS

This is a MUST ATTEND event, I’ve been to pretty much all major Magento events and let me say that the former Magento Live UK and the new Magento Live Europe are my favorites, IMHO, this is where the Magento Community seriously started rolling. This year in the Netherlands means a lot since it’s a country that breathes Magento since the very early days.

Ebizmarts POS will be present with a booth and also powering the official Event Swag store as we’ve been doing for years now at Imagine. 6 of our staff will be attending, we very much look forward to meet our old time pals, but specially hoping to meet a bunch of new friends.

And last but not least, after MLEU the party is not over, see you all at MMES!

Cheers!


]]>