拡張機能のインストールと結果
拡張可能なシステムを持つというアイデアは素晴らしいですが、開発者が知っているように、それほど単純ではありません。多くのことが失敗する可能性があります(そして、残念ながら失敗します)。
概要
拡張機能のインストールが原因である可能性のある問題のリストから始めます。それから、私は私の主要なポイントを作り、私が個人的にそれらすべてから結論を述べ、最後に解決策を提案します。(これはおそらく、事前に謝罪するまで長くなります。できる限り少なく書き、トピックをカバーするようにします。)
始めに、拡張機能のインストールに起因する一般的な問題のリストを以下に示します。
セキュリティ
Magento Connectで拡張機能が受け入れられるまで、コードのレビューは行われません。結果として、多くの拡張機能には脆弱性が含まれています。経験の浅い開発者や怠け者の開発者、脆弱なサードパーティコードの使用、悪意のある有害なコードを含む拡張機能など、多くの理由があります。リモートコード実行、SQLインジェクション、およびダウンタイムが現実です。その結果、顧客データ、支払い資格情報、収益、時間、信頼が失われます。
性能
拡張機能は1つのサイトまたは開発者インスタンスで正常に機能しますが、別のカタログまたは顧客ベースでは、深刻なパフォーマンスの問題を引き起こす可能性があります。エンティティの非効率的なロード、最適化されていないSQL結合、多数のAjaxリクエスト、多数の属性オプションまたは属性など、さまざまな具体的な理由があります。すべてのマーチャントコールが開発者に伝えるように、パフォーマンスが重要です。これには商人の収入がかかります。
対立
2つの拡張機能でさえ、ベストプラクティスを使用して開発された場合でも、競合する可能性があります。これは、Magentoフレームワークが構成XMLをマージする方法が主な原因です。最良の場合、これらの競合はスタックトレースまたは空白の画面で表示されます。最悪の場合、サイトは奇妙でデバッグが困難な動作を禁止します。マーチャントは、開発者の助けなしに問題を解決し、競合する拡張機能を共存させることはできません。これには時間とお金がかかります。
アップグレード性
セキュリティ上の理由がある場合のみ、アップグレードしないという選択肢はありません。拡張機能は、個々のコードベースとして、およびMagentoフレームワークの一部として、維持する必要があります。拡張機能が使用されていて、元の開発者が拡張機能の維持を継続しない場合、他の開発者が引き継ぐ必要があります。開発者がいないと、多くの場合、商人がアップグレードできなくなり、サイトの速度が低下し、セキュリティの問題が悪用され、収益が失われます。
拡張性
既存のサイトに新しい機能を追加すると、システム内の各拡張機能が技術的な負債を追加するため、ますます複雑になり、したがって高価になります。全体的な負債は、個々の拡張子よりもはるかに大きくなります。これは、複合された複雑さ自体がそれぞれの拡張子よりも大きいためです。新しい機能や変更を簡単に試すことができないと、販売者は多くの収益を失います。
アンインストール
拡張機能をアンインストールすると、Magentoで次のことが破損します。
- アンインストールされた拡張機能のクラスを参照するデータベースレコード(インデクサーや属性バックエンドモデルなど)。ベストプラクティスに従う拡張機能でさえ、この傾向があります。
- コアコードを上書きする拡張機能をアンインストールすると、Magentoは元のファイルを失います。もちろん、これは拡張機能がベストプラクティスに従っていない場合にのみ発生しますが、多くの拡張機能が悪いことは事実です。
もちろん、サイトの破損には費用がかかります。
Magento Connect
上記の問題のリストを考えると、一体どのようにして、開発者以外が拡張機能をインストールし、それが特定のサイトで機能するかどうかを評価することができますか?
クリーンアンインストールは保証されていないため、破損したインストールを修復することさえできません。唯一のオプションは、事前に完全なバックアップを作成し、何か問題が発生した場合は手動でロールバックすることです。非技術者でもできますか?私の経験では、いいえ。
すべてが正常に見えると仮定しましょう。商人はすべてが大丈夫だと知っていますか?
セキュリティはどうですか?パフォーマンスの問題はどうですか?アップグレードの問題はどうですか?開発者以外がこれらのことを評価する方法
はありません。
Magento Connectが通信するメッセージは、Magentoを開発者なしでインストールすることで、Magentoストアを簡単に拡張できることです。そのようなことを誰かに伝えることは、売り込みの際に便利かもしれませんが、それは単に真実ではありません。
私が主に経験しているのは、コミュニケーションにおいて、開発者の必要性が単に暗示され、伝えられないことです。結果として、多くの店主は拡張機能をインストールして店を壊します。それにはお金、時間、神経、そしてMagentoと開発者の評判がかかります。
クラスには明示的なインターフェイスが必要です。Magentoの開発者の要件も明示的に伝えられると良いと思います。
結論
これは、壊れたサイトを修正することで一部のMagento開発者に収入がもたらされたとしても、エコシステムにとってまったく良くありません。同じお金を使って、商人の顧客に真の価値を生み出すことができます。
Twitterでは、商人は大人であり、拡張機能をインストールするかどうかを自分で決めることができると誰かが言いました。同意しません。商人が同時に開発者でない場合、彼は自分で決めることはできません。
Magento Connectを使えば、技術に詳しくない人でも簡単に自分の足で撃つことはできません。
個人的には、拡張機能のためにMagentoのインストールがめちゃくちゃになるのを見てうんざりしています。混乱を一掃するだけのものを作成することを好みます。
欠陥のあるアイデアをこれ以上サポートしたくないので、Magento Connectから拡張機能を削除することを考えています。
解決
私の意見では、解決策は簡単で安価です。商用または無料の新しいExtension Marketplaceを作成することではありません。これは技術的な問題ではなく、コミュニケーションに関するものです。
Magento Connectが開発者リソースであると述べ、その拡張機能をインストール前に確認し、開発者だけが拡張機能をインストールする必要がある場合、これは問題ではありません。まだ拡張機能をインストールする販売者は、リスクを知ってそうします。
そのため、Magentoをよりマーチャントフレンドリーにするための3つの簡単な手順を次に示します。
- Magento管理インターフェイス(ダウンローダーなど)を介して拡張機能をインストールするオプションを削除します。
- Magento Connectで、拡張機能をダウンロード、確認、インストールすることは開発者の仕事であると明確かつ目に見える形で述べてください。
- サイトにインストールする拡張機能の完全なレビューを行うように開発者を教育します。
最後の言葉
拡張機能の共有が大好きです。オープンソースが大好きです。Magento開発者コミュニティは素晴らしいと思います!!
拡張機能を確認することは、学ぶための素晴らしい方法です。Magento Connectは悪くはありませんが、技術に詳しくない人々に向けたメッセージです。
各Magentoサイトはアプリケーションです。それはユニークであり、ユニークな開発努力として扱われる必要があります。
拡張機能が有用であることはエコシステムの一般的なコンセンサスである必要がありますが、拡張機能をインストールするよりも頻繁にコードを作成または変更する必要がないため、開発者が必要になります。
編集:私は私のブログにいくつかのあまり技術的な背景情報を投稿しました。