Rumah >pembangunan bahagian belakang >Golang >Dari Friday Hack to Release: Refleksi tentang Mencipta dan Mengeluarkan Projek Sumber Terbuka

Dari Friday Hack to Release: Refleksi tentang Mencipta dan Mengeluarkan Projek Sumber Terbuka

王林
王林asal
2024-09-12 18:08:39653semak imbas

From Friday Hack to Release: Reflections on Creating and Releasing a Open Source Project

Dari Friday Patch Hack to Release: Refleksi tentang Mencipta dan Mengeluarkan Projek Sumber Terbuka

Ini adalah sebahagian daripada siri yang bertujuan untuk pembangun pemula dan pertengahan, mengeluarkan atau tertarik dengan mengeluarkan idea mereka sebagai Projek Sumber Terbuka.
Refleksi ini berat sebelah dan peribadi. Lebih banyak artikel dirancang. Dengan berkongsi beberapa refleksi, saya berharap dapat memberi inspirasi kepada anda untuk melakukan projek anda sendiri

  • Refleksi (ini)
  • Belajar Go lang sebagai Pembangun Java (TODO)
  • Fail Kesihatan dan Komuniti Sumber Terbuka (TODO)
  • Keselamatan Sumber Terbuka (TODO)

Keperluan

Semuanya bermula tahun lalu. Saya sekarang dan kemudian memerlukan sesuatu yang nampaknya selalu melibatkan penciptaan semula skrip Bash lama yang sama, sama ada oleh saya atau orang lain.
Keperluan keseluruhan adalah mudah, kerana ia selalunya berada pada tahap yang tinggi.
Perkara yang paling sering kami lakukan oleh pembangun adalah tentang merombak maklumat dari titik A ke titik B, bukan?

Di sini, matlamatnya adalah untuk mencerminkan sekumpulan repositori Git - kepada pembekal Git lain, ke cakera, ke format arkib, dalam apl CLI.
Saya memerlukan ini secara peribadi dan dalam peranan kerja saya. Saya telah melihat orang ramai bergelut, melaburkan banyak masa melakukan perkara ini secara manual, dan itu mengganggu saya.

Namun, ia kelihatan sentiasa kekal sebagai skrip Bash yang mudah. Selesai dengan pantas, tetapi sebaik sahaja apa-apa tambahan perlu ditambah - kes khas, pengendalian ralat, modularisasi, pembungkusan, dll. - Skrip Bash tidak sesuai untuk alat yang lebih besar, kerana kebanyakan kita akan bersetuju.

Jadi saya memutuskan untuk mencipta aplikasi CLI penuh untuknya.

Pra-Keputusan Yang Perlu Dibuat

Adakah alat sedemikian sudah wujud?

Perkara pertama yang perlu dilakukan ialah tidak mencipta semula roda.
Terdapat beberapa alat yang Sumber Terbuka dan menyelesaikan masalah ini. Sekurang-kurangnya satu ditulis dalam Go, beberapa skrip Bash dan jika mengira fungsi import seperti yang ada dalam Gitea.
Saya mencubanya, tetapi saya tidak dapat menemui mana-mana yang berfungsi sepenuhnya seperti yang saya mahukan. Dan kerana saya mempunyai idea lain tentang di mana saya ingin mengambil projek itu, saya memutuskan untuk tidak menyelam lebih dalam
mula menggunakan tampalan pada projek sedia ada.

Terdapat juga beberapa alat komersial, tetapi saya merasakan alat kecil ini adalah sesuatu yang juga harus wujud dalam bentuk Sumber Terbuka.

Kesimpulan: Terdapat tempat untuk alat CLI ini di dunia ini.

Menggodanya pada hari kerja atau dalam masa lapang Persendirian?

Kami mempunyai masa menggodam di tempat kerja pada penghujung larian pecut dan pada masa lain. Satu pendekatan ialah menggodamnya semasa kejadian ini dari semasa ke semasa, menjadikannya sesuatu yang berguna.
Saya dengan cepat memutuskan untuk melakukannya sepenuhnya dalam masa lapang peribadi saya, atas sebab berikut:

  • Peluang penggodaman di tempat kerja harus digunakan untuk cetusan pembelajaran dan kreativiti yang singkat, bukan mengukir jangka panjang projek penuh.
  • Penyelesaian itu tidak sesuai dengan perniagaan teras organisasi - ia akan sentiasa menjadi itik ganjil di sana jika ya.
  • Mengikatnya dengan kerja akan membuatkan ia berasa seperti lebih banyak kerja - Saya melakukan ini untuk keseronokan dan belajar Go dll - ia akan memberi tekanan dan tekanan kepada saya.
  • Melakukannya pada hari kerja-hackday akan mengambil masa yang lama. Beberapa jam, tersebar dalam beberapa minggu.

Kesimpulan: Saya patut melakukannya untuk keseronokan pada masa lapang saya.

Pilihan Tindanan Teknologi

Saya telah menghabiskan sebahagian besar masa saya selama bertahun-tahun di dunia Java/Kotlin, dengan beberapa projek dalam JS/TS, Python/Ruby, dan seperti setiap pembangun kanan, mencuba yang lain pada masa-masa yang lain.
Walau bagaimanapun, untuk masa yang lama, saya ingin benar-benar belajar Go dan/atau Rust. Jadi ini akan menjadi peluang untuk mendapatkan motivasi untuk menyelami bahasa baharu
Sebab saya memilih Go adalah kerana beberapa aplikasi CLI dalam dunia DevOps Sumber Terbuka ditulis di dalamnya, dan saya mahu boleh menyerahkan patch kepada projek pihak ketiga pada masa-masa tertentu. Selain itu, menulis dalam Go bermaksud satu binari dengan banyak seni bina sasaran.

Saya boleh melakukan ini di Java, contohnya, dengan Pico CLI dan GraalVM yang mana saya mempunyai tanggapan yang baik sejak percubaan awal tetapi saya memutuskan bahawa saya benar-benar mahu belajar Go.

Kesimpulan: Saya harus melakukannya dalam Go dan belajar daripada itu.

Matlamat Pembelajaran Lain

Dengan ini, saya juga ingin mendalami subjek menyampaikan projek Sumber Terbuka yang dibungkus dengan baik, mengikut kebanyakan amalan Keselamatan - kad skor, SLSA,

dan menggunakan alatan seperti GoRelease untuk mencipta binaan pelbagai jenis.

Kesimpulan: Ambil peluang untuk belajar dan mendalami topik pilihan anda.

Kekalkan Skop

Memandangkan saya merancang untuk banyak bereksperimen dan saya benar-benar baru dalam Go, saya tahu saya akan melakukan banyak kerja tidak berstruktur.
Di sini adalah penting untuk menetapkan skop - bilakah ia cukup bagus untuk keluaran alfa?
Saya pada awalnya memutuskan fungsi yang sepatutnya ada, dan walaupun menggoda untuk duduk dan memperhalusi dan mengembangkannya lagi, ini bagus.
Saya boleh duduk dengan ini untuk masa yang lama.

Kesimpulan: Lepaskan projek sebagai alpha apabila anda sama-sama malu dan bangga dengannya.

Anggaran - Sejauh Mana Sukarnya?

Mempelajari bahasa baharu ialah sebahagian kecil daripada mempelajari bahasa itu sendiri, tetapi lebih banyak lagi tentang mempelajari ekosistem dan simpulan bahasanya.
Apakah perpustakaan yang digunakan, bagaimana ia digunakan, apakah cara idiomatik untuk melakukan ini dan itu?
Saya perlu menghabiskan banyak masa untuk belajar dan menyelidik semasa projek ini, mungkin 50% daripada masa saya akan
telah menghabiskan hanya pengekodan dalam bahasa dan ekosistem yang saya tahu.

Kesimpulan: Gandakan anggaran masa anda dengan tiga apabila mempelajari susunan teras baharu dan melibatkan percubaan. Sintaks bahasa akan menjadi perkara kecil.

Proses Penciptaan

Komitmen Awal

Pelaksanaan asas dilakukan dalam sehari - ia tidak mempunyai binaan, pengendalian ralat, dokumentasi, kes tepi, kebolehselenggaraan, dsb.
Di sinilah kebanyakan penggodaman pada hari Jumaat berakhir, dan kebanyakannya tidak pernah pergi lebih jauh.

Tetapi seperti yang diketahui oleh semua pembangun kanan, membuat sesuatu berfungsi adalah jauh daripada mengeluarkan produk.

Tak lama lagi, eh? Tidak juga.

Mencari Masa

Ada kalanya sukar mencari masa untuk meluangkan masa dengan projek itu, terutamanya kerana saya mempunyai musim bunga yang meletihkan di tempat kerja.
Bukan setiap malam anda berasa seperti membaca buku selama 2 jam tentang sesuatu yang khusus atau mempelajari teknologi baharu.
Atau menghabiskan masa menulis dokumentasi. Saya mempunyai anak dan rumah, dan saya tidak mampu untuk membiarkan projek persendirian memakan diri saya lebih daripada hobi lain.
Tetapi sesuatu yang sentiasa perlu diberikan - Saya akhirnya menonton lebih sedikit siri, dan sebarang permainan hampir tidak wujud dalam tempoh ini.

Dengan itu, walaupun saya berharap saya dapat meluangkan lebih banyak masa pada projek itu, ia hampir selalu memberi motivasi - Saya mempunyai beberapa sesi malam di mana saya kurang tidur dan berkod atau belajar,
kerana saya sangat teruja untuk pergi lebih jauh. Selain itu, apabila sesuatu yang menyeronokkan, ia adalah menyeronokkan, sama ada mengangkat berat, menulis buku, mengembangkan, dsb.

Perkara yang Saya Lupa

Saya sudah terbiasa bekerja dalam pasukan sejak sekian lama. Dengan projek solo, anda perlu menguruskan lebih banyak topi dan menjadi agak baik dalam setiap bahagiannya, tidak selalunya teknikal.
Saya menghabiskan banyak masa untuk menggali reka bentuk CLI yang baik dan pilihan idiomatik. Bidang lain ialah proses pelepasan dan binari binari untuk platform yang berbeza.
Mengikuti SLSA dan piawaian lain dalam Sumber Terbuka juga mengambil masa. Dan kami mahukan liputan ujian yang baik, bukan?
Bekerja dalam satu pasukan, orang lain diharapkan dapat melakukan logo yang anda mahukan, dokumentasi yang perlu ditulis.
Bekerja secara solo, itu hanya anda atau ia tidak akan berlaku.
Menulis kod tidak sampai 50% daripada menyampaikan projek. Dan ada yang lain.

Sindrom Penipu Melanda

Sindrom Penipu adalah perkara biasa dalam dunia pembangun berasaskan pengetahuan kami. Setiap orang mempunyai kemahiran yang berbeza, dan pada bila-bila masa, akan sentiasa ada seseorang yang lebih tahu daripada anda.
Berada dalam satu pasukan, anda mempunyai seseorang untuk berbincang.
Sendiri, tidak sebanyak.

Tetapi, ini semua tentang menerima bahawa seseorang akan melakukan beberapa perkara bodoh dalam kod pada masa-masa tertentu.
Dan, Sumber Terbuka itu bukan tentang menjadi sempurna. Ini tentang belajar, menyelesaikan dan melepaskan perkara yang mungkin berguna kepada orang lain.

The Grind

Nah, apa yang boleh saya katakan - ia dilakukan apabila ia selesai.

Terdapat beberapa waktu penyahpepijatan lewat malam, pemfaktoran semula, tetapi juga detik aliran dan dopamin yang tidak terkira banyaknya.

Bagi saya, masa keluaran tiba apabila saya merasakan seni bina keseluruhan dalam projek tidak akan bergerak secara radikal - saya telah mengenal pasti antara muka dan merasakan ia boleh dilanjutkan.
Pangkalan kod OK.
Kebanyakan ciri asas ada dan sementara segala-galanya disediakan untuk penambahbaikan, ia masih menjadi asas untuk diusahakan.

Kesudahan dan Pengajaran

  1. Tetapkan skop awal: Tentukan tempat untuk berhenti. Sediakan struktur projek, dokumentasi, keluaran, saluran paip dan garis panduan komuniti anda lebih awal. Masa depan anda akan berterima kasih kepada anda.

  2. Jangan stress, nikmati proses pembelajaran: Ia dilakukan apabila ia selesai.

  3. Tekun: Sumber terbuka ialah maraton, bukan pecut. Jangan burn out. Ia adalah hobi, bukan kehidupan anda. Namun tetap gigih. Lakukan perkara kecil setiap hari.

  4. Belajar, belajar, belajar: Lihat segala-galanya sebagai peluang untuk belajar dan menambah baik, bukan sebagai masalah.

  5. Pengekodan ialah bahagian yang mudah: Kod utama ialah perkara yang akan membawa anda paling sedikit masa; segala-galanya, seperti dokumentasi, ujian, dsb., adalah tempat menghabiskan masa.

  6. Lakukan perkara tambahan: Mereka menyeronokkan seperti pengekodan. Ya, dokumentasi pun boleh menjimatkan masa anda untuk menerangkan dan menerangkan semula. Jadikan ia menyeronokkan jika membosankan anda. Docs-as-code, vim-pong, dsb.

  7. Rehat: Burnout adalah nyata. Berundur apabila anda perlu. Sama seperti setiap proses pembelajaran kreatif yang lain, lakukannya secara berkelompok.

  8. Gunakan sistem: Gunakan dogfood anda sendiri dalam amalan dan dalam dunia sebenar seawal mungkin. Lebih baik lagi, cari orang/komuniti untuk memberi maklum balas.

  9. Nikmati perjalanan: Ia indah untuk mencipta.

  10. Lengkapkan: Terdapat berjuta-juta projek separuh siap di dunia ini. Lengkapkannya.

  11. Gunakan AI sebagai bantuan: Saya menjimatkan masa dengan mewakilkan sedikit tambahan kepadanya, seperti meminta semakan kod penambahbaikan kod, struktur dokumen, meringkaskan, dll. Namun, jangan pernah mempercayainya secara membuta tuli. Semak dan kritik jawapan.

Nah, selamat menggodam dan sekarang pergi dan fikirkan apa yang anda mahu buat seterusnya!!

Pautan

Projek: Git Provider Sync

Atas ialah kandungan terperinci Dari Friday Hack to Release: Refleksi tentang Mencipta dan Mengeluarkan Projek Sumber Terbuka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Mengintegrasikan TemplArtikel seterusnya:Mengintegrasikan Templ