GitHub untuk kita semua

Ada sebab mengapa pembangun perisian berada di ujung depan masa depan yang tidak rata: Produk kerja mereka selalu menjadi artifak digital, dan sejak awal rangkaian, proses kerja mereka telah dihubungkan.

Alat yang membolehkan pembangun perisian berfungsi dan budaya yang mengelilingi penggunaan alat tersebut cenderung untuk memasuki arus perdana. Nampak jelas, jika dilihat semula, e-mel dan pesanan segera - yang kedua-duanya digunakan oleh pemaju sebelum orang lain - akan sampai ke khalayak ramai. Kaedah komunikasi itu relevan untuk semua orang.

Tidak begitu jelas bahawa Git, alat yang diciptakan untuk menyelaraskan pengembangan kernel Linux, dan GitHub, budaya berasaskan alat yang mengelilinginya, akan sangat relevan. Sebilangan besar orang tidak menggunakan kod untuk mencari nafkah. Tetapi kerana produk dan proses kerja setiap profesion semakin digital, banyak dari kita akan menggunakan alat yang direka untuk menyelaraskan karya kita pada artifak digital bersama. Itulah sebabnya Git dan GitHub mencari jalan masuk ke aliran kerja yang menghasilkan artifak selain, atau sebagai tambahan kepada kod.

Seperti yang dilaporkan dalam Wired, ReadWrite, dan di tempat lain, GitHub digunakan untuk mengurus pengembangan kolaborasi resipi, skor muzik, buku, fon, dokumen undang-undang, pelajaran dan tutorial, dan set data. Memandangkan kerumitan Git yang terkenal, bagaimana mungkin?

Salah satu sebabnya adalah bahawa GitHub secara beransur-ansur telah mendedahkan lebih banyak keupayaan Git yang mendasari di antara muka Webnya. Satu lagi adalah kemunculan aplikasi Web yang menggunakan GitHub sebagai platform. Kemudian ada faktor budaya: GitHub merangkumi cara tertentu untuk bekerjasama. Dave Winer menerangkannya dengan ungkapan "ceritakan karya anda." Saya telah menggunakan "karya yang dapat dilihat." Gerakan Organisasi Responsif meraikan "ketelusan terhadap privasi." Bagi penginjil kerajaan GitHub, Ben Balter, ini adalah "kerjasama terbuka." 

Catatan blog di mana Ben Balter mencadangkan istilah itu tidak diterbitkan ketika saya membacanya. Tetapi kerana blog ini dihoskan di repositori GitHub awam, saya bukan sahaja dapat membaca catatan dalam bentuk draf tetapi juga mengikuti perbincangan dengan pengulas yang dijemput dan memerhatikan bagaimana perbincangan itu mempengaruhi draf. Tentu saja repositori tidak perlu terbuka untuk umum - tetapi setiap organisasi harus menginginkan proses dalamannya untuk memanfaatkan gaya kerjasama terbuka ini. Menurut Brian Doll, naib presiden strategi untuk GitHub, semakin banyak syarikat melakukan perkara itu.

Sering kali dikatakan bahawa setiap syarikat adalah syarikat perisian. Itu benar secara abstrak, jika anda menentukan harta intelek sebagai perisian. Tetapi ini juga benar berlaku untuk banyak syarikat yang nilainya terkandung dalam perisian yang mereka kembangkan secara dalaman.

Adalah selalu diinginkan untuk memperluaskan penyertaan dalam pengembangan itu di luar disiplin tradisional kod, ujian, QA, dan dokumentasi. Tetapi jika sumbangan yang anda dapat dibuat berdasarkan pemahaman anda tentang perniagaan atau pelanggan, anda tidak boleh terlibat secara langsung.

"Itu tidak waras," kata Brian Doll. "Sekiranya anda seorang bank, alat pengurusan kekayaan yang digunakan oleh pekerja dan pelanggan anda adalah produk, bagaimana orang-orang itu tidak dapat langsung memperbaikinya?" Dengan GitHub, setiap pihak berkepentingan dapat menjadi peserta kelas pertama. Daripada menulis e-mel yang mengorbit sistem rakaman, mereka boleh menghantar permintaan tarik dan membincangkan isu-isu berkaitan secara langsung dalam sistem tersebut. 

Menjinakkan binatang Git

Git, mesin kawalan versi terdesentralisasi di bawah tudung GitHub, berfungsi dengan cara yang mengejutkan bukan sahaja pengaturcara tetapi juga pengaturcara yang datang dari sistem terpusat.

Dalam sistem-sistem itu adalah masalah besar untuk membuat cabang dalam repositori, untuk meneroka versi alternatif dari set artifak. Di Git, cabang adalah konstruksi ringan, ilusi yang dibuat oleh penunjuk bergerak dan bukannya data. Dalam sistem konvensional, sangat mustahil untuk membuat cawangan untuk menukar satu perkataan dalam dokumen. Git menjadikan pergerakan itu murah. GitHub dapat memasukkannya ke dalam alur kerja - permintaan tarik - yang merangkumi perbincangan mengenai perubahan dan mengaitkannya dengan sejarah perubahan dokumen.

Keupayaan protean Git menjadikannya makmal untuk inovasi aliran kerja, dan banyak pendekatan yang muncul menghadirkan lapisan kerumitan yang lain. Mekanisme percabangan dan penggabungan cukup rumit, tetapi ada juga pelbagai aliran pemikiran tentang kapan dan bagaimana bercabang dan bergabung. Semua ini mencabar bagi pengaturcara dan jauh melebihi yang lain. Bagaimana anda dapat menjinakkan binatang ini sehingga pihak berkepentingan bukan teknikal dapat mengambil bahagian?

Jawapan GitHub: Tingkatkan laman web untuk aktiviti teras. Seorang peguam yang ingin menukar satu perkataan dalam dokumen undang-undang tidak perlu menggunakan pelanggan Git yang menakutkan; dia boleh mengedit fail di penyemak imbas. Tindakan itu akan memulakan aliran kerja permintaan tarik yang mengotomatisasi penciptaan cawangan yang dikhaskan untuk perubahan yang dicadangkan. GitHubbers suka mengatakan bahawa "hanya ada satu cara untuk mengubah sesuatu." Tidak ada yang diharuskan untuk mengikuti peraturan keemasan itu, tetapi melakukannya mengikuti jalan yang paling sedikit perlawanan.

Akibatnya, semua orang di syarikat berkemampuan GitHub dapat dengan mudah menggunakan amalan terbaik ini. "Daripada merendahkan penyejuk air kerana perisiannya mengerikan," kata Brian Doll, "anda mempunyai cara untuk mengubahnya." Pertunangan itu juga dapat diperluaskan kepada pelanggan.

Mengubah GitHub itu sendiri adalah perkara lain. "Tidak disewa di sana," kata Greg Wilson, pengasas projek Carpentry Perisian, "tidak ada cara untuk saya memperbaiki bagaimana GitHub menguruskan kebenaran, membenarkan pengguna membuat banyak garpu repo, atau apa sahaja."

Di mana sahaja interaksi gaya GitHub diaktifkan, bagaimanapun, mekanisme perubahan berfungsi dengan cara yang sama, tidak kira sama ada sumbangan untuk perubahan adalah kod atau dokumentasi atau nasihat undang-undang atau perspektif perniagaan atau maklum balas pelanggan. 

Nilai konvensyen bersama itu, boleh dikatakan inovasi terpenting GitHub, ditingkatkan oleh konvensyen lain yang diimport dari media sosial. Sebagai contoh, di Twitter, anda boleh menarik perhatian pengguna Twitter lain dengan menyebut nama pengguna mereka. Teknik @mention ini berfungsi di GitHub untuk individu dan pasukan.

Terdapat juga GitHub Pages, perkhidmatan yang menghoskan laman web di atas repositori GitHub. Ini disukai oleh blogger teknikal yang biasa dengan Git dan bersedia memasang (dan menggunakan tempatan) penjana laman web berasaskan Ruby yang bernama Jekyll. Tetapi seperti yang diketahui oleh orang lain, anda tidak perlu memasang Jekyll. Anda boleh mengurus laman GitHub Pages sepenuhnya dalam penyemak imbas dan menikmati faedah sejarah versi dan perbincangan isu.