4 poin oleh GN⁺ 2023-12-11 | 1 komentar | Bagikan ke WhatsApp
  • Setelah mengakhiri upaya komersialisasinya, PySimpleGUI menghapus komponen lisensi dan keamanan dari kode PySimpleGUI 5, lalu merilisnya kembali di GitHub dan PyPI sebagai PySimpleGUI 6 dengan lisensi LGPL3
  • Versi terbaru dapat diinstal dengan python -m pip install PySimpleGUI, dan versi lama 4.60.5.1, master di GitHub, maupun rilis tertentu seperti 6.1 juga bisa diinstal langsung lewat pip
  • PySimpleGUI diperkenalkan sebagai wrapper untuk pustaka GUI seperti tkinter, yang menyederhanakan SDK GUI menjadi struktur yang lebih ringkas sambil tetap menyediakan kustomisasi detail, tanpa memerlukan pengalaman pemrograman GUI sebelumnya
  • Versi 6.2 mencakup perbaikan bug Window.settings_save, output gambar inline di Multiline, psgupgrade, pemilihan node Tree secara terprogram, timer string "H:M:S" untuk Window.start_timer, pengaturan warna border Frame, dan lainnya
  • Proyek ini dipelihara tanpa menerima pull request, masa depan jangka panjangnya belum pasti, tetapi penulis menyatakan akan terus menulis kode dan merapikan ekosistem

PySimpleGUI 6 kembali menjadi open source

  • PySimpleGUI sempat mencoba komersialisasi, tetapi tidak berhasil menciptakan sumber daya yang dibutuhkan untuk mempertahankan proyek pada tingkat yang diharapkan
  • Pada Februari 2025 diumumkan penutupan PySimpleSoft dan kelanjutan dukungan hingga akhir 2025, lalu tersisa pertanyaan tentang apa yang akan dilakukan terhadap kode, dokumentasi, dan repositori setelah itu
  • Kode PySimpleGUI 5 dipublikasikan ke GitHub dan PyPI setelah komponen lisensi dan keamanan dihapus
  • Versi yang dirilis ulang menggunakan lisensi LGPL3
  • Kursus Udemy tersedia gratis untuk sementara waktu, dan kode kuponnya adalah 033334A16163C571B739

Cara instalasi

  • Instal versi terbaru v6 dari PyPI:
    • python -m pip install PySimpleGUI
  • Instal versi lama 4.60.5.1:
    • python -m pip install PySimpleGUI==4.60.5.1
  • Kode terbaru dari repositori GitHub bisa diinstal langsung:
  • Untuk menginstal rilis tertentu dari GitHub, ganti master dengan nomor rilis:
  • Setelah meng-clone atau mengunduh repositori, instalasi lokal juga dimungkinkan:
    • python -m pip install .

Peran PySimpleGUI

  • PySimpleGUI adalah wrapper untuk tkinter dan pustaka GUI lainnya
  • Ia menyederhanakan SDK GUI menjadi struktur yang lebih ringkas sambil tetap menyediakan kustomisasi detail
  • Disebutkan bahwa pengalaman pemrograman GUI sebelumnya tidak diperlukan
  • Contoh di README membangun aplikasi jendela interaktif hanya dengan Text, Input, Button, Window, event loop, window.read(), dan window.close()
  • Dokumentasi tersedia di Docs.PySimpleGUI.com

Cara pengembangan dan prospek jangka panjang

  • PySimpleGUI dijelaskan telah dikembangkan dengan cara yang lebih dekat ke produk proprietari daripada proyek open source tradisional
  • Pull request tidak diterima
  • Masa depan jangka panjangnya belum pasti, tetapi saat ini penulis menikmati menulis kode dan membantu orang lain
  • Pengalaman dengan PySimpleGUI digambarkan sebagai pengalaman “once-in-a-lifetime” karena bisa melihat hasil yang dibuat orang-orang

Fitur dan perbaikan di versi 6.2

  • Versi 6.2 mencakup perbaikan bug Window.settings_save
  • Ditambahkan kemampuan untuk “print” gambar secara inline di elemen Multiline
  • Fitur untuk meng-upgrade ke maintenance release terbaru kembali dibenamkan ke dalam PySimpleGUI
    • Bisa menggunakan Home Window atau command line psgupgrade
    • Bisa melihat catatan rilis dan menginstal versi baru
  • Bug #5750, di mana event Graph masuk ke loop tak berujung saat menerima event write_event_value, telah diperbaiki
    • Perbaikannya dilakukan dengan membersihkan flag tombol real-time
    • Disebutkan bahwa cakupan perubahan terbatas pada conditional elemen Graph sehingga kemungkinan regresi kecil
  • Tree.update kini memiliki parameter select_node_keys, sehingga node tree bisa dipilih secara terprogram seolah-olah dipilih pengguna
  • Fitur dan parameter echo_stdout_stderr pada Multiline telah diperbaiki
    • Echo hanya dilakukan jika stdout atau stderr telah diarahkan ulang ke elemen tersebut
    • Fitur ini sendiri tidak melakukan pengalihan ulang secara langsung
  • Perbaikan #6686 menyelesaikan masalah saat tombol Calendar chooser membersihkan field yang seharusnya baru dibersihkan pada saat window.read mengembalikan nilai
  • Home Window kini menampilkan nomor versi maintenance release dan posisi tombol instalasi dipindahkan
  • Saat memanggil Window.start_timer, timer dapat ditentukan dengan string "H:M:S"
  • Ditambahkan dukungan hanya scroll horizontal untuk elemen Column yang dapat di-scroll
  • Elemen Frame kini memiliki parameter border_color, border_width_no_relief untuk mengatur warna border
    • Warna border Frame secara default menggunakan warna elemen teks jika tidak ada pengaturan terpisah
  • Bagian call reference pada dokumentasi telah diperbarui agar sesuai dengan rilis 6.2

Drag and drop dan proyek di sekitarnya

  • Drag and drop dijelaskan sebagai fitur yang sudah lama diinginkan, dan ditemukan cara untuk mengimplementasikannya di ruang kode pengguna tanpa mengubah kode PySimpleGUI
  • psgdnd adalah paket baru yang menambahkan drag and drop ke PySimpleGUI
    • Bisa diinstal dan digunakan lewat pip
    • Informasi dan contoh lebih lanjut tersedia di repositori tersebut
  • psgdnd 6.0.1 telah dirilis di PyPI dan berjalan di Windows
  • Versi 6.0.2 di GitHub mencakup perbaikan yang dibutuhkan untuk Linux
  • Status dukungan Mac masih belum diketahui
  • Repositori PSGMicroPython telah ditambahkan dengan kode untuk berinteraksi dengan mikrokontroler berbasis MicroPython
    • Berjalan pada Raspberry Pi Pico dan ESP32
    • Mungkin juga berjalan pada board lain
    • Tidak dimaksudkan sebagai proyek besar atau sangat kokoh, melainkan sebagai kode yang mungkin berguna

Prototipe PSGWeb

  • PSGWeb adalah prototipe yang menjalankan PySimpleGUI di jendela browser
  • Ia bekerja dengan sebagian besar program demo
  • Dengan menambahkan psgweb.us di depan URL aplikasi PySimpleGUI di GitHub, eksekusi dapat dicoba
  • PSGWeb dibuat sebagai bagian dari pekerjaan PSG 5 yang lebih besar, tetapi tidak pernah dirilis
  • Tidak ada rencana untuk merilis atau memperluas prototipe ini

Sikap terhadap penggunaan AI

  • Penulis menggunakan LLM untuk pencarian dan peringkasan dokumen, pencarian error, riset, dan memperoleh pengetahuan
  • Ia tidak menulis kode dengan LLM
  • Alasannya, seperti yang dijelaskan, sederhana: ia memang suka menulis kode itu sendiri
  • Dijelaskan juga bahwa proyek tidak dibuka untuk pull request karena ia ingin menulis kode sendiri alih-alih membiarkan orang lain menuliskannya
  • Soal apakah PySimpleGUI masih relevan di era AI, ia menilai cukup jika setiap hari ada orang yang menemukan, menginstal, dan setidaknya satu orang menggunakannya
  • Penulis mengatakan sulit membayangkan membuat aplikasi Windows tanpa PySimpleGUI
    • Ia menjelaskan bahwa dalam pekerjaan terbaru pada komputer breadboard 6502, ia membuat bus analyzer dengan dua Raspberry Pi Pico dan aplikasi PySimpleGUI
    • Ia mengatakan aplikasi frontend untuk mengendalikan alat di Windows dapat dibuat dengan mudah menggunakan PySimpleGUI

Sejarah proyek dan masalah pendanaan

  • PySimpleGUI bermula dari kode sekali pakai yang dibuat pada 2018 karena dibutuhkan GUI untuk prototipe media player
  • Tujuannya adalah membungkus Tkinter dengan cara yang lebih linear dan intuitif agar bisa bekerja cepat tanpa pengalaman framework GUI berorientasi objek
  • Penulis mengunggahnya ke GitHub tanpa pengalaman Python maupun open source, dan mendekatinya lebih seperti startup daripada proyek open source tradisional
  • Linimasa:
    • Juli 2018: Version 1
    • Juni 2019: Version 4
    • Januari 2020: masalah pendanaan menjadi kekhawatiran utama dan komersialisasi mulai disebutkan
    • November 2020: pengumuman kursus Udemy dan penambahan permintaan bantuan publik
    • Desember 2021: kursus diluncurkan
    • Februari 2024: peluncuran komersial Version 5
    • April 2026: Version 6
  • Announcements Issue di GitHub digunakan seperti blog yang mencatat riwayat proyek dan tumbuh menjadi lebih dari 1.700 entri
  • Agar lebih mudah dibaca, snapshot dipublikasikan pada tab dokumentasi Announcements 2018-2024
  • Bekerja penuh waktu pada open source menciptakan tekanan finansial yang langsung dan berkelanjutan
  • Sponsorship dan donasi melalui GitHub Sponsors dan Buy Me a Coffee, bahkan di puncaknya, hanya sekitar 150 dolar per bulan
  • Kursus Udemy dengan 61 pelajaran dan durasi 11,5 jam sempat menghasilkan sekitar 2.000 dolar per bulan pada awalnya, tetapi kemudian turun di bawah 100 dolar
  • Kedua cara tersebut tidak cukup untuk mempertahankan proyek dalam jangka panjang

Hasil komersialisasi dan pengalaman lisensi

  • Peluncuran produk berbayar Version 5 bukan keputusan mendadak, melainkan telah dibahas secara terbuka selama bertahun-tahun di README dan pengumuman
  • Setelah opsi lain habis pada awal 2024, versi komersial pun dirilis
  • Tujuannya adalah mempertahankan aksesibilitas, bukan membangun penghalang
  • Dari sudut pandang keberlanjutan finansial hasilnya tidak baik, tetapi dari sisi pengalaman, pembelajaran, dan relasi, hal itu tetap bernilai
  • Setelah komersialisasi, sebagian besar pengguna tidak hilang dan banyak perusahaan tetap menggunakan PySimpleGUI
  • Masalahnya adalah membuat perusahaan benar-benar membeli lisensi
  • Dipilih Hobbyist License, di mana pengguna hobi dan pelajar bisa memakai gratis sementara perusahaan harus membayar
  • Dalam praktiknya, mayoritas pengguna mengidentifikasi diri sebagai pengguna hobi
  • Puluhan ribu pengguna perusahaan terdaftar di tier gratis, dan tidak jarang perusahaan besar memiliki ratusan pengguna tetapi hanya sedikit lisensi berbayar
  • Ia menyatakan tidak menyesali keputusan untuk menyediakan opsi gratis
  • Kesimpulan pribadinya adalah bahwa ada ekspektasi budaya yang kuat bahwa alat dan pustaka Python harus gratis
  • Harga atau keluhan tidak tampak sebagai masalah inti; orang-orang tetap menggunakan PySimpleGUI tetapi tidak merasa berkewajiban membayar
  • Bahkan syarat lisensi yang jelas pun tidak selalu mengubah perilaku

Lisensi saat ini

  • Pemberitahuan hak cipta berbunyi Copyright 2018-2026 PySimpleGUI. All rights reserved.
  • Lisensi saat ini adalah LGPL3

1 komentar

 
GN⁺ 2023-12-11
Komentar Hacker News
  • Di pekerjaan, saya harus mencatat waktu kerja di Jira, tetapi saya tidak suka harus terus membuka situs webnya, dan proses mencari issue yang sedang dikerjakan, menemukan tautan pencatatan waktu, lalu menambahkan komentar juga lambat
    Saya menginginkan aplikasi desktop dengan daftar issue yang ditugaskan kepada saya serta tombol untuk menambahkan komentar/waktu kerja. Dengan Tkinter saya lama berkutat hanya untuk membuatnya terlihat bagus, tetapi setelah menemukan PySimpleGUI, saya bisa memasang hook ke API Jira dan membuat apa yang saya inginkan, dan itu menjadi proyek yang bagus untuk belajar pengembangan UI

    • Jira terasa sangat lambat secara umum sehingga tampaknya banyak orang mencoba mengakalinya dengan alat kustom
      Seorang teman juga pernah membuat klien Qt internal untuk tugas-tugas dasar Jira di salah satu tempat kerjanya, dan ketika saya dulu harus melacak pekerjaan di Jira, saya menangani berbagai perubahan lewat beberapa skrip konsol menggunakan https://github.com/go-jira/jira
    • Saat tempat kerja mengatakan mereka akan mulai menerapkan pencatatan waktu di Jira, saya langsung mulai mencari pekerjaan baru
    • Saya penasaran apakah source app ini dipublikasikan di suatu tempat. Saya sedang berpikir membuat sesuatu yang mirip minggu ini, jadi akan sangat bagus kalau ada app yang sudah jadi dan saya tinggal menunjuk instance Jira saya
    • Saya ragu ini benar-benar pembelajaran pengembangan UI. Saya kurang yakin apakah ini bisa berlanjut atau berkembang menjadi proyek yang lebih menantang
  • Framework GUI seperti ini benar-benar menarik. Pengalaman desktop native jauh lebih baik daripada gabungan webview, dan event loop PySimpleGUI yang disederhanakan serta pendekatan multi-backend menurut saya memang terasa baru
    Tetapi saya penasaran kenapa tidak lebih banyak “GUI otomatis” yang cukup diberi struktur data dan fungsi lalu otomatis membuat antarmuka yang layak untuk memanipulasinya. Jika tata letak panel vertikal/horizontal, antarmuka tab, atau popup bisa dipilih secara heuristik, itu bisa membuka banyak fungsi yang terlalu bertingkat untuk CLI namun terlalu native untuk dijadikan webapp

    • Proyek yang mungkin menarik, Gooey mengklaim bisa “mengubah hampir semua program konsol Python 3 menjadi aplikasi GUI dengan satu baris”
      https://github.com/chriskiehl/Gooey
    • Pada 2011 saya membuat generator formulir otomatis untuk web berbasis argumen fungsi, dan belakangan saya juga sempat mencoba hal serupa di toolkit GUI berbasis bahasa D
      Anda bisa mendefinisikan struct lalu memberikannya ke fungsi dialog, dan dialog akan dibuat otomatis sesuai field struct itu, lalu saat pengguna menekan OK, callback akan dipanggil. Dengan atribut yang didefinisikan pengguna, kita juga bisa menentukan widget apa yang dipakai; misalnya jika int diberi @ControlledBy!VerticalSlider(0, 100), maka alih-alih kotak input angka, ia menjadi slider 0~100. Pada fungsi menu juga bisa ditempelkan sesuatu seperti @menu("Search") Find(string text) { ... } untuk otomatis membuat menu dan dialog, dan ada juga DataControllerWidget yang memanggil callback pada setiap event perubahan. Saya sempat menulis artikel terkait beberapa tahun lalu, tetapi progresnya sangat lambat: http://dpldocs.info/this-week-in-d/Blog.Posted_2020_11_02.ht...
      Cukup menarik sampai saya ingin menghabiskan lebih banyak waktu untuknya, tetapi karena tidak saya gunakan di pekerjaan utama, saya hanya mengerjakannya sedikit-sedikit saat ingin coding di akhir pekan
    • Ada sesuatu dari puluhan tahun lalu yang cocok dengan deskripsi itu, namanya Naked Objects. Saya tidak pernah mencobanya karena tidak terlalu tertarik ke sisi Java, tetapi tampak berguna
    • Di Python, TraitsUI adalah “UI otomatis” yang cukup bagus, dan sampai sekarang masih berperan seperti itu
  • Estetika contoh-contohnya terlihat seperti diambil langsung dari era 90-an seperti [0]. Sangat cocok untuk prototipe atau alat internal bagi orang yang tidak bisa memakai CLI, tetapi saya penasaran apa yang harus dilakukan jika membutuhkan UI yang enak dilihat
    Dari sisi performa, UI native memang selalu bagus, tetapi saya selalu merasa styling di sana lebih sulit daripada di halaman web. Saya penasaran, di GUI Python apa padanan dari kumpulan styled component seperti Flutter atau SwiftUI yang bisa terlihat rapi tanpa usaha besar
    [0] https://raw.githubusercontent.com/PySimpleGUI/PySimpleGUI/ma...

    • Ini mungkin soal dikerjakan dengan baik atau tidak, tetapi menurut pengalaman saya, UI yang “distyled” justru menjadi salah satu alasan banyak software menjadi lebih buruk bagi penggunanya
      Setidaknya, gaya UI default yang disediakan sistem operasi memungkinkan orang belajar di satu aplikasi lalu memindahkan pemahaman itu ke aplikasi lain. Karena saya bukan desainer UI yang hebat, kemungkinan besar default sistem operasi lebih baik daripada apa pun yang bisa saya pikirkan. Ditambah lagi komentar dari marketing yang menakutkan seperti “software kita terlihat tua”, biaya pengembangannya pun sudah membengkak ke tingkat yang cukup memberatkan
    • Nuansa 90-an sendiri tidak masalah, tetapi ini bahkan tidak sesuai dengan tampilan sistem operasi 90-an. Latar belakang checkbox-nya salah, label judul di atas tidak sejajar, dan posisi tombol Exit juga aneh, jadi secara keseluruhan ini tampak seperti UI dengan desain buruk
      Memang ada software seperti ini pada era 90-an, tetapi ini bukan estetika 90-an yang biasanya dibicarakan orang. Banyak usaha dicurahkan ke desain UI Windows 95
    • Saya tidak paham apa masalahnya dengan tampilan 90-an. Banyak juga yang menyukainya
      Saya lebih tidak suka UI masa kini dengan ruang kosong yang lebar, tombol yang tidak terlihat seperti tombol, scrollbar yang menghilang, dan menu hamburger
    • Jika penampilan luar adalah prioritas utama, tampaknya cukup sulit mengalahkan halaman web
      Pemisahan frontend dan backend juga otomatis didapat, dan jika nanti perlu, akses jarak jauh juga memungkinkan. Jika ingin terasa seperti aplikasi native, Anda bahkan bisa cukup menaruh satu tombol “Open browser UI” di GUI kecil ala Tkinter. Jika tombol jalannya membuat token di URL, itu juga bisa melindungi dari daemon yang berjalan sebagai pengguna lain di mesin yang sama, meski saya belum pernah melihat ada yang benar-benar melakukannya seperti itu
    • Masalahnya adalah Tkinter, setidaknya di Windows, memang masih berbasis widget era 90-an. Bahkan jika tema PySimpleGUI diubah ke SystemDefaultForReal, widget Windows native punya tampilan modern, sedangkan Tkinter sama sekali tidak diperbarui sehingga terlihat janggal
  • Kelihatannya bagus. Hanya saja, karena library ini mungkin sudah cukup matang sehingga perubahan besar akan sulit, sepertinya akan lebih baik jika memakai dictionary alih-alih list. Dictionary Python modern mengingat urutan penyisipan
    Di tempat kerja lama, saya pernah membuat sesuatu yang mirip di atas PyQt dengan wrapper yang jauh lebih tipis, dan jumlah kodenya juga sangat sedikit. Perbedaan utamanya adalah pengaturan properti/signal dan penyarangan widget ditangani bersamaan. Dibanding cara mengatur properti di konstruktor, pendekatan itu punya kelebihan karena properti bisa diatur di badan definisi view, bahkan saat nama widget dibutuhkan nanti untuk mengubah teks. Seluruh API-nya hanya satu fungsi setup_view, dan itu cukup nyaman untuk cepat membuat GUI sederhana. Library ini juga terlihat seperti alternatif yang bagus, jadi terima kasih sudah membagikannya

    • Perubahan itu masuk di Python 3.7, dan sekarang sudah menjadi fitur yang lebih dari 5 tahun
      https://docs.python.org/3/whatsnew/3.7.html#summary-release-...
    • Melihat tren framework GUI belakangan ini, pemisahan layout dan data menghasilkan kode yang jauh lebih rapi
      Sebaiknya biarkan framework yang menangani data binding. Baik web maupun desktop sama-sama makin bergerak ke arah ini. Daripada mengubah widget secara langsung, properti widget seharusnya diikat ke penyimpanan data dan dirender ulang otomatis saat ada perubahan. Contoh input/output di halaman itu menunjukkan sesuatu yang mirip. Sekarang sudah tidak ada yang memakai getElementById() lagi
    • Menurut halaman GitHub, “definisi window disederhanakan dengan menggunakan list dan dictionary, tipe data inti Python yang dipahami pemula”
  • Rasanya makin mendekati kemudahan penggunaan VB6 atau Delphi/Lazarus. Jelas ada kemajuan, dan sekarang tinggal butuh GUI builder interaktif sehingga form yang dibuat bisa langsung #import dan dipakai
    Beberapa tahun lalu saya mencoba memakai WxPython bersama WxFormBuilder dan kehilangan banyak sekali waktu di proyek. Sedikit perubahan pada form saja membuat backend rusak total, dan meski saya menulis kode tipis sendiri untuk lapisan penghubung, saat tipe field diubah semuanya rusak lagi. Syukurlah, sepertinya itu tidak akan terjadi di sini

  • Dari sudut pandang pengembang aplikasi GUI Python [1], menurut saya masalah terbesar saat memakai Python untuk aplikasi desktop adalah packaging
    Alat-alat yang ada untuk membuat biner yang bisa didistribusikan sering berhenti bekerja begitu dependensinya melewati beberapa buah saja, atau butuh hack yang cukup merepotkan. Bahkan package populer pun bisa menimbulkan masalah aneh seperti hidden import yang terlewat atau file data yang tidak ikut terbawa tanpa disadari. Pemuatan modul dinamis juga kadang rusak saat dibawa keluar dari lingkungan Python biasa ke sesuatu seperti PyInstaller atau cx_freeze. Saya tidak tahu apa solusinya, tetapi mungkin Python juga butuh standar packaging executable mandiri yang hanya bergantung pada interpreter, seperti JAR di Java

    1. https://github.com/FreeLanguageTools/vocabsieve
    • Python punya zipapp yang terstandardisasi dan mirip JAR: https://peps.python.org/pep-0441/
      Dengan alat seperti shiv atau PEX, Anda bisa membuat zipapp yang menyertakan dependensi aplikasi, tetapi jika ada ekstensi biner, hasil akhirnya tetap spesifik per platform: https://github.com/linkedin/shiv#gotchas
      Untuk program Python saya, saya menyarankan pengguna menginstalnya lewat pipx: https://github.com/pypa/pipx
      Jika pengguna targetnya sedikit saja teknis, menurut saya ini pilihan terbaik. Ini membantu menghindari konflik versi dari pip install --user dan kerepotan membuat virtual environment per aplikasi secara manual, serta secara keseluruhan memberi pengalaman pengguna yang cukup baik. Jika Anda merekomendasikan pipx sebagai metode instalasi utama, cukup masuk akal untuk berharap orang-orang akan berhasil memasangnya. Program saya punya dependensi biner, tetapi tidak punya GUI
  • Secara pribadi saya lebih suka CustomTKinter. Tampilannya jauh lebih elegan, mirip tema Material, dan mendukung tema terang/gelap yang mengikuti pengaturan sistem di Windows/Linux/macOS

  • Mengejutkan bahwa di ranah pengembangan aplikasi cepat, kekosongan yang ditinggalkan VB6 masih belum benar-benar terisi oleh apa pun. Bahasanya sendiri memang tidak luar biasa, tetapi kekuatan VB6 ada pada GUI builder drag-and-drop-nya

  • Saya sedang mempertimbangkan apakah sebaiknya membungkus alat yang sudah punya antarmuka CLI yang dibuat cukup baik dengan GUI, agar bisa dipakai juga oleh orang yang tidak menggunakan desktop Linux. PySimpleGUI tampaknya bisa sangat cocok untuk kebutuhan saya.
    https://github.com/hiAndrewQuinn/finstem
    Alat saya memiliki flag CSV, TSV, dan JSON yang terdefinisi dengan baik. Saya penasaran apakah ada yang punya pengalaman membuat GUI di atas alat CLI yang sudah lengkap tanpa mengubah alat CLI yang ada, dan kesulitan apa yang sebaiknya saya antisipasi

    • Mesin catur adalah contoh referensi yang bagus. Bagian pengambilan keputusan ada di CLI, lalu dihubungkan ke GUI seperti WinBoard[0] atau Arena[1]
      Mesin dan GUI mengikuti protokol seperti WinBoard atau UCI[2], dan saling bertukar perintah teks lewat STDIN/STDOUT. Tantangan utamanya mirip dengan yang ditemui dalam multithreading, yaitu bisa muncul deadlock saat GUI dan CLI saling menunggu dan berhenti. Karena itu, kedua sisi perlu menangani I/O di thread terpisah dari “business logic” agar tetap responsif. Masalah umum lainnya adalah karakteristik pemrosesan pipe yang berbeda antar sistem operasi, jadi perlu memperhatikan flush buffer dan perbedaan API antara Linux/Mac/Windows
      [0] http://hgm.nubati.net/
      [1] http://www.playwitharena.de/
      [2] https://gist.github.com/DOBRO/2592c6dad754ba67e6dcaec8c90165...
    • Misalnya, lihat saja HandBrake. Itu kurang lebih adalah UI yang mewah untuk ffmpeg
  • Semoga ini tidak terdengar kasar, tetapi teksnya terlalu banyak. Di setiap tempat yang bisa diisi teks, ada kalimat-kalimat panjang berlanjut, dan meskipun sebagian besar konsisten, tidak ada satu pun screenshot yang relevan dalam seribu kata pertama
    Ada sesuatu yang terasa janggal. Mungkin ini karya pengembang muda yang penuh semangat, atau terasa seperti banyak teks ditambahkan untuk meyakinkan orang agar mau mencobanya. Di README bahkan ada bagian “about me” tempat penulis memperkenalkan dirinya. Coba gulir ke titik mana pun di README, baca beberapa paragraf, lalu coba ulangi apa yang baru Anda baca sebagai contohnya

    • Setiap bagian punya judul yang jelas. Jika itu bagian yang tidak Anda minati, Anda tinggal scroll sedikit. Tidak ada yang memaksa siapa pun membaca bagian “about me”
      Sebagian orang memang menikmati membaca tentang alat itu sendiri, alih-alih bersikap “bagaimana caranya saya membaca kata sesedikit mungkin lalu menjalankannya secepat mungkin”. Karena Anda memakai alat buatan orang lain secara gratis, lebih baik berhenti mengeluh dan biarkan mereka mengekspresikannya dengan cara yang mereka inginkan
    • Dugaan tentang “pengembang muda yang penuh semangat” itu keliru. Di “About Me” [1] tertulis bahwa ia menulis perangkat lunak sejak tahun 70-an, dan menghabiskan sebagian besar kariernya membangun produk di Silicon Valley
      [1] https://github.com/PySimpleGUI/PySimpleGUI#about-me-
    • Saya hanya melihat sekilas. Ini adalah alat yang dokumentasinya ditulis sendiri oleh pembuatnya, bukan MVP untuk produk yang mencoba menarik investor
      Semoga ini tidak terdengar kasar, tetapi saya jadi ingin balik bertanya apakah Anda takut pada kenyataan bahwa Anda memang harus membaca, kecuali semuanya disuapi dalam ringkasan langkah demi langkah
    • Menurut saya itu ungkapan yang cukup kasar. Terutama karena alasan banyaknya teks direduksi hanya menjadi dua kemungkinan, dan keduanya tidak terdengar terlalu baik. Selain itu, alasan-alasan itu tampaknya juga tidak benar
      Gagasan yang sama bisa disampaikan dengan kalimat seperti “untuk proyek yang bersifat visual, saya merasa deskripsi utamanya seharusnya memuat lebih banyak screenshot”, tanpa perlu menambahkan dugaan yang menghina
    • Bisa jadi masalahnya adalah proyek itu diberi nama Simple. Karena itu menanamkan prasangka ekspektasi tertentu di benak pembaca
      Jika Anda memasukkan kata seperti Smart, Open, Trusted, Secure ke dalam nama proyek, orang akan lebih mudah menunjukkan bahwa proyek itu tidak memenuhi ideal yang tersirat dalam nama tersebut. Sebaliknya, nama seperti C atau BSD tidak punya lawan kata atau implikasi seperti itu, jadi sulit mengatakan bahwa “bahasa C tidak sesuai dengan namanya”