كيفية كتابة معلومات OSS

كيفية كتابة معلومات OSS

مرحباً. أنا zm soft، الذي سجّل في برنامج المطورين في العام الماضي (نهاية عام 2023) وبدأ في إصدار التطبيقات. كما نخطط لإصدار تطبيق استقطاب المختبرين للمطورين لاجتياز الاختبار المغلق على متجر Play، لذا يُرجى الاطلاع عليه إذا أردت.

معلومات OSS التي كثيراً ما يُغفل عنها

هل تكتبون معلومات OSS عند إنشاء التطبيقات؟ عند تطوير التطبيقات، يهتم كثير من المطورين بكتابة سياسة الخصوصية، لكنهم كثيراً ما يتجاهلون معلومات البرامج مفتوحة المصدر (OSS). ومع ذلك، فإن معلومات ترخيص OSS قد تكون مطلوبة قانونياً عرضها، وذلك حسب البرنامج المستخدم.

على وجه الخصوص، نظراً لأن سياسة الخصوصية كثيراً ما تُشار إليها في مراجعات Google Play، يُولي معظم المطورين اهتماماً كافياً بهذا الجانب. في المقابل، نادراً ما تُشار إلى معلومات ترخيص OSS في المراجعات المماثلة، مما يجعل عدداً من المطورين لا يلتزمون بها. وقد لاحظت شخصياً كثيراً من التطبيقات التي تفتقر إلى معلومات OSS أثناء استخدامها بوصفي مختبراً.

صعوبة التوافق مع عرض OSS

عند تطبيق توافق OSS في تطبيقاتي، كنت أُنشئ عرضاً لعرض النصوص داخل التطبيق، وأُدرج فيه معلومات OSS جنباً إلى جنب مع سياسة الخصوصية. اعتمدتُ أسلوباً يقوم على وضع ملفات نصية لكل OSS في مجلد محدد، مما يُتيح عرضها تلقائياً في العرض. التنفيذ الفعلي كان كالتالي: ضعِ النصوص في مجلد _assets/oss_، ثم اقرأها فقط، وبعدها اعرضها في أي View مناسب لإتمام التوافق.

        fun readLicenseTexts(): Map<String,String>{
            var map : MutableMap <String,String> = mutableMapOf()
            val fileList = assetManager.list("oss")
            if (fileList != null) {
                for (file in fileList) {
                    map.put(file.replace(".txt",""), readTextAssets("oss/$file"))
                }
            }
            return map
        }

ومع ذلك، مع تقدم التطوير، أصبح صيانة هذه الطريقة أمراً عسيراً. إضافة OSS تميل إلى التأجيل، وعند تطوير تطبيقات متعددة، قد يُنسى تحديث معلومات OSS.

منقذ التوافق مع OSS

أريد أن أُوكل الأمور المرهقة إلى شخص آخر. لذلك قررت استخدام مكتبة لعرضها. حتى الآن لا توجد مشاكل وأصبحت الأمور أسهل بكثير. وبصراحة، كان يجب أن أستخدمها في وقت أبكر. المكتبة التي جربتها هي AboutLibraries.

طريقة الاستخدام بسيطة جداً. جزء التنفيذ يكاد يقتصر على ما يلي:

        val fragment = LibsBuilder()
            .supportFragment()
        val transaction = activity.supportFragmentManager.beginTransaction()
        transaction.add(R.id.libsFragment, fragment)
        transaction.commit()

بما أنه يكتمل في Fragment، يكفي إيجاد مكان مناسب وعرضه لإتمام توافق OSS تقريباً.

تصميم جميل رغم سهولة التطبيق

إليك كيف تبدو الشاشة عند عرضها فعلياً.

アプリ内に表示された OSS ライブラリ情報画面

أصبح المظهر جيداً جداً بالنظر إلى أنه أُنشئ بسرعة. المحتوى أيضاً لم يكن فيه أي مشكلة. رائع جداً.

مزيد من التفاصيل حول طريقة الاستخدام الفعلية

بالطبع، هناك بعض الأمور الإضافية التي يجب القيام بها فعلياً، لذا سأذكرها. لكن لا يعدو الأمر سوى استيراد المكتبة. عدِّل build.gradle عبر إضافة مواصفات aboutlibraries في plugins وdependencies. حدِّد الإصدار حسب الحاجة.

plugins {
    id ("com.mikepenz.aboutlibraries.plugin")
}

dependencies {
    implementation ("com.mikepenz:aboutlibraries:10.10.0")
}

مكتبات أخرى

لم أستخدمها شخصياً، لكن يبدو أن هناك مكتبات أخرى كثيرة لعرض تراخيص OSS. إليك بعض الأكثر شهرة:

  1. OSS Licenses Plugin - إضافة Gradle مقدمة من Google، تجمع تلقائياً معلومات ترخيص المكتبات مفتوحة المصدر المستخدمة أثناء عملية بناء التطبيق، وتُنشئ نشاطاً لعرضها.
  2. LicenseAdapter - محوّل بسيط لعرض معلومات ترخيص المكتبات مفتوحة المصدر في قائمة.
  3. LicensesDialog - مكتبة تُتيح إنشاء مربع حوار بسهولة لعرض معلومات ترخيص المكتبات مفتوحة المصدر داخل التطبيق.

يبدو أن جميعها تحظى بسمعة جيدة وسهلة الاستخدام. استخدم ما يناسب احتياجاتك وتقدّم في تطوير التطبيق بثقة.