Saya ingin berbagi pengalaman dalam mengembangkan aplikasi desktop untuk kolektor open source.
Berdasarkan sifat kegiatan utama saya, saya mengembangkan perangkat lunak untuk sistem tertanam dan jarang bersinggungan dengan pengguna akhir. Karena itu, kita akan berbicara tentang fitur yang saya temui ketika mengembangkan aplikasi non-komersial untuk berbagai pengguna, yang menjadi penemuan bagi saya.

Deskripsi
OpenNumismat, seperti namanya, dimaksudkan terutama untuk menjelaskan koleksi koin. Tetapi juga cocok untuk jenis pengumpulan lainnya - perangko, kartu, lencana, dan hal-hal yang lebih eksotis.
Aplikasi ini ditulis dalam Python, database menggunakan SQLite untuk menyimpan data, PyQt digunakan untuk antarmuka, akses ke data dan banyak lagi, Jinja2 digunakan untuk menghasilkan laporan, Matplotlib digunakan untuk membangun grafik statistik. Terlepas dari skeptisisme awal saya, ini ternyata cukup untuk memastikan kinerja yang dapat diterima - beberapa ribu rekaman dengan gambar diproses tanpa rem yang terlihat.
Karena semua komponen adalah lintas-platform, OpenNumismat juga memiliki rakitan untuk Windows, Linux (Debian / Ubuntu), macOS.
Ada juga versi Android yang saat ini ditinggalkan. Itu telah digantikan oleh PWA (Progressive Web App), yang memungkinkan Anda untuk melihat koleksi Anda di browser apa pun - SQLite.js digunakan. Ternyata jauh lebih mudah untuk mengembangkan PWA untuk membuat aplikasi Android asli yang memiliki kemampuan serupa. Selain itu, segera tersedia di semua platform.
Pesaing
Sekarang ada banyak aplikasi untuk kolektor dan, khususnya, ahli numismatis. Sebagian besar dari mereka "terlihat seperti seseorang yang mendapatkan Firefox versi pertama dan menggunakannya."
Di AS, banyak yang menggunakan perangkat lunak komersial, yang keuntungannya tidak diragukan adalah ketersediaan basis data koin siap pakai yang ada. Pengguna hanya dapat menandai koin yang tersedia dan memasukkan informasi pembelian - harga, tanggal, dll.
Fitur serupa disediakan oleh aplikasi seluler (sebagian besar untuk Android) dan layanan web. OpenNumismat lebih fokus pada pembuatan katalog koleksi uniknya sendiri, daripada βmenutup lubang di album yang sudah selesai,β seperti yang dikatakan oleh beberapa ahli numismatis.
Tetapi pesaing utamanya adalah Microsoft. Sebagian besar kolektor menggunakan Excel meskipun faktanya itu tidak berfungsi baik dengan gambar. Beberapa juga menggunakan Access atau 1C dan membuat database koleksi mereka sendiri dengan semua yang mereka butuhkan. Tapi itu masih membutuhkan persiapan.
Untuk menarik pengguna, impor dari alternatif paling populer diterapkan.
Sedangkan untuk Linux dan macOS, praktis tidak ada analog untuk platform ini.
Manfaat keterbukaan
Keuntungan utama dari kode sumber terbuka adalah kemampuan untuk menggunakan layanan pihak ketiga untuk distribusi, terjemahan, pelacakan bug secara gratis. Tarik permintaan, saya menyesal, hanya ada tiga.
Tanpa diduga bagi saya, keuntungan lain adalah peluang potensial untuk meyakinkan skeptis terhadap keamanan program - mereka mengatakan di forum bahwa mereka memeriksa kode dengan grep dan tidak ada kecurigaan.
Lingkungan yang digunakan
Awalnya, Google Code dipilih untuk distribusi OpenNumismat, yang menyediakan pelacakan bug yang nyaman, wiki multibahasa untuk dokumentasi, mengunduh binari dan, tentu saja, repositori git. Tetapi mulai tahun 2013, Google Code mulai mati. Untuk pindah, pilihannya adalah antara SourceForge dan GitHub. Kedua layanan menyediakan kemampuan untuk membuat situs proyek (dokumentasi dari wiki harus diulang di halaman statis situs), tetapi mengunduh binari dari SourceForge terlihat menakutkan bagi pengguna yang tidak siap. Karena itu, pilihan ada pada GitHub.
Pelacak bug GitHub memerlukan registrasi, yang tidak begitu nyaman bagi pengguna yang jauh dari pemrograman. Oleh karena itu, diputuskan untuk menggunakan layanan pihak ketiga.
Idea.Informer (Reformal untuk pemirsa berbahasa Rusia) ditemukan - layanan yang gratis dan nyaman, tetapi saat ini tidak berkembang dan ini menyebabkan sejumlah kesulitan (Idea.Informer berhenti mengirim surat dan tidak mendukung SSL).
Awalnya, OpenNumismat mendukung bahasa Inggris dan Rusia. Tetapi setahun setelah rilis pertama dari Venezuela, sebuah proposal diterima untuk diterjemahkan ke dalam bahasa Spanyol. Kemudian datang tawaran terjemahan ke bahasa lain. Awalnya, terjemahan dilakukan menggunakan alat Qt Linguist. Demi kenyamanan sukarelawan, layanan online kini digunakan yang menyediakan infrastruktur yang nyaman untuk proyek-proyek terbuka. OpenNumismat saat ini diterjemahkan ke dalam 15 bahasa.
Untuk mempromosikan OpenNumismat, saya harus mempelajari beberapa trik CEO. Jadi menggunakan markup semantik, saya bisa mempromosikan dan meningkatkan tampilan situs aplikasi di mesin pencari.
Masalah Versi Perpustakaan
Untuk versi Windows, PyQt versi 5.5.1 saat ini digunakan. Beralih ke versi yang lebih baru rumit dengan mengganti Qt WebKit dengan Qt WebEngine, yang masih tidak tahu cara melihat pratinjau halaman yang dicetak yang digunakan untuk bekerja dengan laporan.
Diperlukan transisi untuk menggunakan Qt Charts untuk membuat grafik statistik, tetapi tidak tersedia dalam versi yang digunakan. Tentu saja, Anda bisa mengumpulkannya secara terpisah, tetapi tangan Anda tidak meraihnya. Oleh karena itu, untuk statistik, paket Python Matplotlib digunakan.
Juga, versi terbaru Python tidak mendukung Windows XP, yang masih digunakan oleh sejumlah kecil pengguna.
Versi Linux umumnya dapat menggunakan kombinasi versi PyQt, Python, Matplotlib. Oleh karena itu, statistik mungkin tidak berfungsi pada beberapa konfigurasi, pada yang lain, melihat laporan terbatas.
Ada dua opsi untuk membangun di macOS: gunakan bangunan Python resmi dengan paket yang diperlukan, atau MacPorts. Di versi pertama, masalah yang dijelaskan dengan laporan muncul, proses pembuatan tidak dapat sepenuhnya dikonfigurasi, di kedua ada masalah dengan Matplotlib, tetapi MacPorts memiliki versi PyQt dengan Qt WebKit. Saat ini menggunakan opsi MacPorts.
Saya juga ingin mencatat bahwa SQLite tidak mendukung karakter non-ASCII. Hal ini menyebabkan masalah ketika menyortir pengguna menggunakan huruf dimana simbol selain Latin dan Rusia digunakan (misalnya, Ukraina dan Katalan - pengguna negara-negara ini secara khusus memperhatikan masalah). Mentransfer pengurutan dari query SQL ke Qt tidak hanya menyelesaikan masalah, tetapi juga meningkatkan kinerja.
Umpan balik
Umpan balik dan umpan balik adalah bagian pekerjaan yang paling menyenangkan. Yang terbaik dari semuanya, OpenNumismat telah diterima oleh komunitas numismat Spanyol. Rusia mengejutkan saya dengan ulasan seperti: "Program menunggu koleksi untuk mengisi sebanyak mungkin, dan kemudian melaporkan DI MANA KEBUTUHAN." Tampaknya takut akan "peretas Rusia." Seringkali Anda harus membuat alasan untuk skeptis yang bahkan tidak akan menggunakan OpenNumismat - ini kadang membuat frustasi.
Banyak pengguna menulis hanya untuk berterima kasih, menawarkan ide-ide baru, meminta bantuan untuk memahami aplikasi. Sebagian besar dari mereka menggambarkan kesalahan dan masalah dalam aplikasi, yang pasti sering muncul, karena pengembangan dan pengujian dilakukan oleh satu orang.
Pertanyaan paling umum adalah "Saya punya versi demo tentang cara mendapatkan yang lengkap". Ini disebabkan oleh fakta bahwa pertama kali Anda membuka basis data demo yang disebut demo. Ternyata ini sangat membingungkan bagi pengguna baru.
Cukup sering, mereka mengusulkan menambahkan fungsionalitas yang sangat spesifik yang mungkin berguna bagi pengguna individu, tetapi bagi sebagian besar itu tampaknya sama sekali tidak perlu dan rumit. Atau itu mengubah logika dasar organisasi data. Kita harus menolak tawaran semacam itu atau, lebih sering, mengabaikan pesan itu.
Kadang-kadang saya mendapatkan pesan kesalahan yang tidak bisa saya reproduksi. Jika kontak dengan pengguna dibuat, maka masalah biasanya diselesaikan setelah beberapa korespondensi dan percobaan bersama. Terkadang tidak mungkin untuk menghubungi, dan kesalahan tetap tidak diperbaiki dan, mungkin, tidak lagi diperhatikan.
Juga, surat datang dari pencipta situs numismatik dan katalog elektronik yang mencoba untuk merevolusi, tetapi sejauh ini tidak ada kemajuan nyata.
Kesimpulan
Pembangunan telah berlangsung selama lebih dari 6 tahun. Banyak yang telah dicapai, tetapi aplikasi ini masih jauh dari sempurna. Ada banyak ide yang ingin saya terapkan.
Mendapatkan umpan balik positif tentu baik dan saya ingin membuat alat yang sangat berguna bagi pengguna. Dan karena saya sendiri adalah pengguna aktif OpenNumismat, saya tidak akan berhenti di situ.