Wikifunctions:Ikhtisar
- Tujuan pertama Wikifunctions adalah untuk mendukung proyek-proyek Wikimedia, tetapi proyek ini akan mendukung tujuan yang lebih daripada itu, sebagaimana dengan Wikidata. Ini adalah deskripsi Wikifunctions di luar Wikipedia.
- Pernyataan misi
- Sebuah proyek Wikimedia agar semua orang bisa bekerja sama membuat dan memelihara sebuah pustaka fungsi kode untuk mendukung proyek-proyek Wikimedia dan hal-hal lainnya, yang bisa dipanggil oleh siapa saja dan digunakan kembali dalam bahasa alami ataupun bahasa pemrograman.
Wikifunctions adalah sebuah repositori kode terbuka yang semua orang bisa gunakan dan berkontribusi.
Semua halaman dalam Wikifunctions merepresentasikan sebuah fungsi. Sebuah fungsi memiliki deksripsi, daftar parameter, kasus uji, daftar implementasi dalam bahasa pemrograman yang berbeda-beda, dan metadata lainnya. Implementasinya bisa digunakan kembali dalam proyek perangkat lunak lainnya (aplikasi atau skrip pribadi), dipanggil dan dieksekusi secara daring (baik hanya dalam peramban atau dalam lingkungan awan atau buku catatan Jupyter[1] atau PAWS[2]), disusun untuk meraih fungsionalitas yang lebih rumit, ditandatangani, dianalisis atau divalidasi, dan lebih banyak lagi.
Wikifunctions adalah proyek yang sama jiwanya dengan Wikipedia, Wikidata, Wiktionary, dan lainnya, serta membolehkan kontributor dari seluruh penjuru dunia untuk membuat dan memelihara sebuah pustaka fungsi, yang dapat digunakan oleh siapa saja untuk kegunaan apa saja. Setiap fungsi dapat didukung dengan beberapa implementasi dalam bahasa pemrograman yang berbeda-beda, kasus uji, kondisi pra- dan pasca-, dokumentasi, metadata dalam bentuk perkiraan dan kompleksitas waktu jalannya untuk impelementasi yang berbeda, dll. Pengguna dapat memanggil sebuah fungsi secara langsung dari situs web, atau dari kode atau aplikasi mereka sendiri, dari antarmuka baris perintah, atau dari aplikasi lokal. Fungsi tersebut bisa dieksekusi secara lokal di peramban, di awan, atau secara lokal dan ditanamkan di dalam aplikasi pengguna.
Wikifunctions dimaksudkan untuk membuat sebuah katalog fungsi yang didefinisikan dengan baik dan dapat digunakan kembali secara luas dan juga sebuah lingkungan di mana fungsi-fungsi bisa dengan cepat digabungkan dan dieksekusi. Wikifunctions bertujuan mempermudah kehidupan para pengembang, yang bisa mengandalkan repositori ini sebagaimana sebuah pustaka eksternal, dan bagi pengguna akhir yang dapat memanggil fungsi seperlunya, dengan cara yang sekarang hanya tersedia dalam cakupan yang tidak rata melalui situs web tertentu yang sering kali ditulis dalam bentuk situs web 1990-an dengan aplet Java.
Semua fungsi bersifat murni, agar memungkinkan eksekusi kotak pasir yang aman. Juga, setiap implementasi bisa dianotasi dengan metadata dan ditandatangani secara kriptografis. Pengguna akhir bisa memilih dan mengaudit implementasi fungsi mana yang digunakan, bergantung pada sumber daya perangkat keras yang tersedia dan pengaturan jaringan kepercayaan.
Wikifunctions akan memungkinkan akses mudah ke basis pengetahuan yang besar seperti Wikidata, serta ke berkas masukan dan keluaran biner. Juga dimungkinkan untuk mengunggah sebuah gambar sebagai berkas masukan dan mengembalikan hasil analisis seperti apa yang ditampilkan di gambar, atau berapa banyak waktu berbeda yang dimiliki gambar – atau biner lainnya, sebagai contoh, dalam format yang berbeda. Ini akan disediakan kepada aliran kerja di Wikimedia Commons.
Wikifunctions melanjutkan tradisi memindahkan lebih banyak komputasi, yang biasanya dilakukan di baris perintah atau dengan aplikasi oleh pengguna komputer yang lebih pandai, ke Web dan mendemokratisasi akses ke fungsionalitas yang sebelumnya tidak tersedia. Pada saat yang sama, ini akan menaikkan produktivitas pengembang di semua tempat karena mereka bisa menggunakan sebuah pustaka kode yang besar bukannya mengandalkan menyalin dan menempel jawaban dari StackOverflow.
Tidak seperti di Wikipedia, kontributor akan lebih banyak menghabiskan waktu membuat implementasi baru untuk sebuah fungsi bukannya memperbarui fungsi yang ada. Impelementasi bisa diuji secara otomatis terhadap uji coba yang diberikan, terhadap satu sama lain, dan dianalisis lebih lanjut.
Implementasi bisa ditulis dalam berbagai bahasa pemrograman, dan akan dapat memanggil fungsi yang diimplementasikan dalam bahasa pemrograman lainnya. Mesin eksekusinya bisa beroperasi secara mulus (meskipun belum tentu dengan performa yang paling tinggi) dalam berbagai bahasa. Walaupun dalam kebanyakan kasus terdapat kenaikan performa yang besar ketika menyusun fungsi dalam satu bahasa pemrograman saja, tidak ada keharusan untuk melakukannya. Dalam kebanyakan kasus, kecepatan pengembangan dan waktu pengembang akan lebih berharga daripada siklus komputer tambahan yang dikerjakan mesin eksekusi.