GitHub untuk kita semua

Ada alasan mengapa pengembang perangkat lunak hidup di ujung tombak masa depan yang tidak terdistribusi secara merata: Produk kerja mereka selalu berupa artefak digital, dan sejak awal munculnya jaringan, proses kerja mereka telah terhubung.

Alat yang memungkinkan pengembang perangkat lunak bekerja dan budaya di sekitar penggunaan alat tersebut cenderung menemukan jalan mereka ke arus utama. Tampaknya jelas, dalam retrospeksi, bahwa email dan pesan instan - keduanya digunakan oleh pengembang sebelum orang lain - akan menjangkau massa. Mode komunikasi tersebut relevan untuk semua orang.

Kurang jelas bahwa Git, alat yang diciptakan untuk mengoordinasikan pengembangan kernel Linux, dan GitHub, budaya berbasis alat yang mengelilinginya, akan menjadi relevan secara luas. Kebanyakan orang tidak mencari kode untuk mencari nafkah. Namun karena produk kerja dan proses setiap profesi semakin digital, banyak dari kita akan tertarik pada alat yang dirancang untuk mengoordinasikan pekerjaan kita pada artefak digital bersama. Itulah mengapa Git dan GitHub menemukan jalan mereka ke dalam alur kerja yang menghasilkan artefak selain, atau sebagai tambahan, kode.

Seperti dilaporkan di Wired, ReadWrite, dan di tempat lain, GitHub digunakan untuk mengelola pengembangan kolaboratif dari resep, partitur musik, buku, font, dokumen hukum, pelajaran dan tutorial, dan kumpulan data. Mengingat kompleksitas Git yang terkenal, bagaimana ini mungkin?

Salah satu alasannya adalah GitHub secara bertahap mengekspos lebih banyak kapabilitas yang mendasari Git di antarmuka Web-nya. Lain adalah munculnya aplikasi Web yang menggunakan GitHub sebagai platform. Lalu ada faktor budaya: GitHub mewujudkan cara tertentu untuk bekerja sama. Dave Winer mendeskripsikannya dengan frasa "menceritakan pekerjaan Anda". Saya telah menggunakan "pekerjaan yang dapat diamati". Gerakan Responsive Organization merayakan "transparansi atas privasi". Bagi penginjil pemerintah GitHub, Ben Balter, ini adalah "kolaborasi terbuka". 

Entri blog di mana Ben Balter mengusulkan istilah itu tidak diterbitkan ketika saya membacanya. Tetapi karena blog dihosting di repositori GitHub publik, saya tidak hanya dapat membaca postingan dalam bentuk draf tetapi juga mengikuti diskusi dengan pengulas yang diundang dan mengamati bagaimana diskusi itu memengaruhi draf. Repositori, tentu saja, tidak perlu dibuka untuk umum - tetapi setiap organisasi harus menginginkan proses internalnya untuk memanfaatkan gaya kolaborasi terbuka ini. Menurut Brian Doll, wakil presiden strategi GitHub, semakin banyak perusahaan yang melakukan hal itu.

Saat ini sering dikatakan bahwa setiap perusahaan adalah perusahaan perangkat lunak. Itu benar secara abstrak, jika Anda mendefinisikan kekayaan intelektual sebagai perangkat lunak. Tapi itu juga benar untuk banyak perusahaan yang nilainya terwujud dalam perangkat lunak yang mereka kembangkan secara internal.

Itu selalu diinginkan untuk memperluas partisipasi dalam pengembangan itu di luar disiplin tradisional kode, tes, QA, dan dokumentasi. Tetapi jika kontribusi yang Anda berikan didasarkan pada pemahaman Anda tentang bisnis atau pelanggan, Anda tidak dapat terlibat secara langsung.

"Itu gila," kata Brian Doll. "Jika Anda adalah bank, alat manajemen kekayaan yang digunakan karyawan dan pelanggan Anda adalah produknya, bagaimana mungkin orang-orang itu tidak memiliki andil langsung dalam memperbaikinya?" Dengan GitHub, setiap pemangku kepentingan dapat menjadi peserta kelas satu. Daripada menulis email yang mengorbit sistem pencatatan, mereka dapat mengirim permintaan tarik dan mendiskusikan masalah terkait langsung di sistem itu. 

Menjinakkan monster Git

Git, mesin kontrol versi terdesentralisasi di bawah kap GitHub, bekerja dengan cara yang tidak hanya mengejutkan para nonprogramer tetapi juga programmer yang datang dari sistem terpusat.

Dalam sistem tersebut, sangatlah penting untuk membuat cabang dalam repositori, untuk menjelajahi versi alternatif dari satu set artefak. Di Git, sebuah cabang adalah konstruksi ringan, ilusi yang dibuat dengan menggerakkan pointer, bukan data. Dalam sistem konvensional, akan sangat mahal untuk membuat cabang untuk mengubah satu kata dalam dokumen. Git membuat manuver itu sangat murah. GitHub dapat menyematkannya dalam alur kerja - permintaan tarik - yang merangkum diskusi perubahan dan mengikatnya ke riwayat perubahan dokumen.

Kemampuan beragam Git telah menjadikannya laboratorium untuk inovasi alur kerja, dan banyak pendekatan yang muncul menghadirkan lapisan kompleksitas lainnya. Mekanisme percabangan dan penggabungan cukup rumit, tetapi ada juga berbagai aliran pemikiran tentang kapan dan bagaimana bercabang dan bergabung. Semua ini menantang bagi programmer dan jauh melampaui kebanyakan lainnya. Bagaimana Anda bisa menjinakkan binatang ini sehingga pemangku kepentingan nonteknis dapat berpartisipasi?

Jawaban GitHub: Tingkatkan situs web untuk aktivitas inti. Seorang pengacara yang ingin mengubah satu kata dalam dokumen hukum tidak perlu menggunakan klien Git yang menakutkan; dia bisa mengedit file di browser. Tindakan itu akan memulai alur kerja permintaan tarik yang mengotomatiskan pembuatan cabang yang didedikasikan untuk perubahan yang diusulkan. GitHubbers suka mengatakan bahwa "hanya ada satu cara untuk mengubah sesuatu". Tidak ada yang diwajibkan untuk mengikuti aturan emas itu, tetapi melakukan hal itu mengikuti jalan yang paling sedikit perlawanannya.

Hasilnya, setiap orang di perusahaan yang mendukung GitHub dapat dengan mudah mengadopsi praktik terbaik ini. "Daripada menggerutu di water cooler karena software-nya jelek," kata Brian Doll, "Anda punya cara untuk mengubahnya." Keterlibatan itu bisa meluas ke pelanggan juga.

Mengubah GitHub itu sendiri adalah masalah lain. "Tidak bisa dipekerjakan di sana," kata Greg Wilson, pendiri proyek Software Carpentry, "tidak ada cara bagi saya untuk memperbaiki cara GitHub mengelola perizinan, mengizinkan pengguna untuk membuat beberapa cabang repo, atau apa pun."

Namun, di mana pun interaksi gaya GitHub diaktifkan, mekanisme perubahan bekerja dengan cara yang sama, tidak peduli apakah kontribusi terhadap perubahan adalah kode atau dokumentasi atau nasihat hukum atau perspektif bisnis atau umpan balik pelanggan. 

Nilai dari konvensi bersama itu, yang bisa dibilang merupakan inovasi terpenting GitHub, diperkuat oleh konvensi lain yang diimpor dari media sosial. Di Twitter, misalnya, Anda bisa menarik perhatian pengguna Twitter lain dengan menyebutkan nama penggunanya. Teknik @mention ini berfungsi di GitHub untuk individu dan tim.

Ada juga Halaman GitHub, layanan yang menghosting situs web di atas repositori GitHub. Ini disukai oleh blogger teknis yang akrab dengan Git dan bersedia menginstal (dan menggunakan secara lokal) generator situs berbasis Ruby yang disebut Jekyll. Tetapi seperti yang ditemukan orang lain, Anda tidak perlu menginstal Jekyll. Anda dapat mengelola situs Halaman GitHub sepenuhnya di browser dan menikmati manfaat riwayat versi dan diskusi masalah.