Kisah bagaimana Linux membawa Windows

Sepanjang waktu saya bekerja di Microsoft, saya telah menciptakan alat untuk pengembang Linux. Saya mulai bekerja pada Agustus 2016, setelah lulus dari University of Virginia, tempat saya belajar ilmu komputer dan manajemen. Selama studi saya, saya memprogram terutama di C ++. Sistem operasi utama saya adalah Linux.



Mungkin kelihatannya pengalaman saya tidak sesuai dengan apa yang mungkin dibutuhkan Microsoft, tetapi pada saat itu perusahaan sedang mengalami perubahan besar, baik dari segi teknologi maupun dari segi budaya. Perusahaan ini pindah ke keadaan baru di mana semua sistem operasi, termasuk Linux, penting untuk itu.

Pekerjaan saya di Microsoft dimulai dari tim Linux. Saya sedang melakukan produk SQL Server di sana. Saya ditawari untuk bergabung dengan tim ini, berharap bahwa saya akan membawa pengalaman saya di Linux ke dalamnya. Saya sangat terkesan dengan fakta bahwa, meskipun saya baru saja meninggalkannya, saya bisa menjadi nilai bagi tim karena pengalaman saya.

Beberapa tahun yang lalu, gagasan mengembangkan varian SQL Server untuk Linux akan menjadi lelucon April Mop, tetapi pada 2016 itu benar-benar nyata. Saya bergabung dengan tim tidak lama setelah mereka merilis versi pertama produk. Saya mulai meningkatkan toolkit SQL Server, khususnya untuk administrator. Toolkit ini ditujukan untuk mengelola server dan aplikasi Linux. Menggunakan SQL Server di Linux diperlukan membawa alat baris perintah ke tampilan yang digunakan pengguna Linux.

Selain itu, saya berkesempatan merancang versi pertama SQL Server GUI untuk Linux. Saya mulai dengan garpu Visual Studio Code, yang hari ini disebut Azure Data Studio. Ini adalah aplikasi berbasis Elektron yang, terlepas dari sistem operasinya, dapat bekerja dengan segala jenis SQL Server.

Saya belajar banyak dari SQL Server untuk Linux di tahun pertama saya di Microsoft. Dalam pengetahuan ini, saya juga dapat memasukkan pengembangan pendekatan untuk mengelola pengembangan dan dukungan proyek berdasarkan kombinasi teknologi dan pemikiran bisnis.


Tim WSL, Chocolatey, dan Boxstarter di Microsoft Build 2018

Pada Agustus 2017, saya bergabung dengan tim WSL (Windows Subsystem untuk Linux, Windows Subsystem untuk Linux) sebagai manajer proyek. Saya pertama kali mendengar tentang WSL saat pengumuman di Microsoft Build 2016. Video terkait dari Channel 9, “ Running Bash di Ubuntu di Windows! ", Segera setelah rilis menjadi viral. Itu jelas menarik perhatian audiens lebih dari banyak pengumuman lain yang dibuat di konferensi. Teknologi WSL secara singkat, secara harfiah dalam beberapa menit, dibahas dalam kerangka penilaian poin-poin utama konferensi. Namun, penonton dari ini langsung menjadi gila, belum lagi para jurnalis. Ada saat ketika tim pendukung Channel9 khawatir bahwa tingginya minat pengguna pada klip video ini sebenarnya karena serangan DDoS! Juru bicara Microsoft meluncurkan Bash di Ubuntu, berjalan di dalam Windows ... Tindakan ini adalah hit instan.

Tim pertama yang menemukan kebutuhan pengguna untuk WSL adalah yang bekerja di Konsol Windows. Selama pengembangan, mereka telah mendengar berulang kali bahwa orang menginginkan sesuatu seperti Bash Linux. Alhasil, tim tersebut sampai pada pemikiran berikut: "Mengapa melakukan sesuatu yang menyerupai Bash, jika Anda bisa membuat shell Bash berjalan langsung di Windows?"

Ini bukan untuk mengatakan bahwa itu mudah dilakukan. Penciptaan WSL membutuhkan kombinasi pengetahuan Windows yang mendalam, yang dimiliki oleh tim pengembangan sebagai inti dari sistem, dan sebuah teknologi yang dikembangkan di Microsoft Research yang disebut picoprocess. Menariknya, proses picop, di samping itu, adalah teknologi yang membuat SQL Server bekerja di Linux.

Proses pic seharusnya memberikan implementasi Linux yang tidak dimodifikasi dalam mode pengguna. Tim kernel Windows telah mengembangkan shims yang dirancang untuk menghubungkan panggilan sistem Linux ke Windows. Dengan kata lain, WSL memungkinkan untuk menjalankan kode yang dikompilasi untuk Linux pada kernel Windows NT. Tidak perlu mengkompilasi ulang kode atau menggunakan mesin virtual.

Kami tidak membuat hanya distribusi Linux kami sendiri. Faktanya adalah ada banyak distribusi seperti itu. Versi Linux pertama yang tersedia di WSL adalah Ubuntu. Kami menghubungi spesialis Canonical untuk mengetahui apakah mereka ingin membantu kami bekerja di WSL. Mereka antusias dengan ide kami. Ini mengarah pada fakta bahwa Ubuntu muncul di Microsoft Store. Omong-omong, kalimat sebelumnya, dengan sendirinya, terdengar sangat tidak biasa. Sekarang di Microsoft Store Anda dapat menghitung 6 distribusi. Saya bertanya-tanya, toko aplikasi apa yang tersedia pada sistem operasi tertentu yang memiliki sistem operasi lain?


Microsoft Store sekarang memiliki 6 distribusi Linux yang dapat digunakan di WSL

Kode yang kami tulis adalah panggilan sistem kernel yang kompatibel dengan Linux, yang berfungsi sebagai antarmuka antara proses Linux dan kernel Windows. Linux memiliki sekitar 340 panggilan sistem. Pertanyaannya adalah memutuskan sistem mana yang perlu diimplementasikan terlebih dahulu. Seperti halnya sistem operasi apa pun, di Linux panggilan sistem baru ditambahkan ketika versi baru OS dirilis, tetapi panggilan lama tidak pernah dihapus, yang memastikan kompatibilitas ke belakang. Pada awalnya, pemrosesan serangkaian panggilan sistem diimplementasikan, dan yang lainnya dibungkus dalam peristiwa seperti "belum diimplementasikan." Ini memungkinkan tim WSL untuk mulai menganalisis dengan tepat apa yang dibutuhkan oleh sistem yang disebut pengguna Linux.

Jawaban atas pertanyaan sistem panggilan mana yang harus diimplementasikan di tempat pertama berarti kebutuhan untuk menjalin komunikasi dengan orang-orang yang akan menggunakan WSL. Pesan tentang teknologi ini pada konferensi Build bertujuan untuk membuat orang mulai menggunakan WSL dan memberikan umpan balik. Untuk mendapatkan WSL, Anda harus menjadi anggota Program Windows Insider. Siapa pun dapat terhubung ke program ini. Anda mungkin berpikir bahwa peserta program hanya mereka yang tertarik pada Windows, tetapi kemudian, di antara lebih dari sepuluh juta pelanggan, ada orang-orang dengan beragam minat. Mereka tertarik tidak hanya pada Windows, tetapi juga, misalnya, game, dan fitur baru Bluetooth, dan WSL.

Salah satu kelompok pengguna yang tertarik untuk membuat Bash shell berjalan di Windows adalah pengembang web yang terlibat dalam membangun aplikasi web yang berjalan di server Linux. Seluruh proses merakit aplikasi mereka sering kali merupakan urutan dari perintah Bash. Selain itu, jika seseorang memutuskan untuk meminta bantuan dalam pengembangan aplikasi web, katakanlah, pada Stack Overflow, sebagian besar contoh kode yang dapat ia temukan akan dirancang untuk berjalan di Linux. Ini tidak terlalu baik bagi mereka yang menggunakan Windows sebagai komputer mereka untuk pengembangan web. Sering kali, paling mudah bagi pengembang semacam itu untuk hanya beralih ke platform Mac. Di macOS, contoh kode serupa dijalankan tanpa masalah.

Dalam beberapa minggu pertama kehadiran WSL di Windows, satu pengguna perusahaan dapat menjalankan XEyes. Program ini dijalankan pada sistem windowing X11 yang berjalan di WSL. XEyes adalah program sederhana. Dia menampilkan mata kartun yang mengikuti kursor mouse. Namun demonstrasi ini meledakkan jejaring sosial.


XEyes berjalan pada Windows melalui WSL

Kami banyak membahas tentang bagaimana tepatnya kami ingin mengumpulkan ulasan pengguna tentang WSL. Alat tradisional yang digunakan untuk mengumpulkan umpan balik adalah UserVoice. Kami memiliki situs UserVoice yang dirancang untuk WSL, yang mengumpulkan ratusan ide dan ribuan suara tentang berbagai masalah. Pertanyaan sebenarnya muncul pada kami ketika datang ke apakah kami harus menggunakan GitHub. Karena pengembang web adalah salah satu grup pengguna pertama yang tertarik pada WSL, pertanyaan tentang GitHub sangat penting. Tetapi WSL bukan proyek sumber terbuka. Menempatkan proyek seperti itu di GitHub terlihat aneh. Kami memutuskan untuk memenuhi persyaratan pengembang dan membuat halaman di GitHub untuk melaporkan masalah, untuk umpan balik dan diskusi. Sejak itu, kami telah menerima ribuan pesan mengenai banyak masalah terkait penggunaan Linux di Windows.

Ribuan orang telah meninggalkan pesan kesalahan dalam repositori WSL GitHub . Setiap pesan tersebut ditinjau dan dibahas oleh tim WSL, dan komentar diberikan pada masing-masing. Setelah itu, keputusan diambil untuk tindakan selanjutnya. Jika untuk mewujudkan peluang tertentu atau untuk memperbaiki beberapa jenis kesalahan, perlu untuk menulis kode baru - kode ini dibuat dan ditambahkan ke proyek WSL, setelah itu masuk ke semua majelis Windows yang didistribusikan di bawah program Windows Insider. Seluruh siklus, dari menerima pesan kesalahan hingga memperbaikinya, tidak membutuhkan banyak waktu - sekitar beberapa minggu.

Sebagai akibatnya, berkat respons operasional tim WSL terhadap permintaan pengguna, dimungkinkan untuk mengatakan bahwa masyarakat terlibat dalam proses pembuatan WSL. Orang-orang melaporkan masalah atau keinginan mereka melalui UserVoice atau GitHub, tim meninjau semua ini dan membuat perubahan pada proyek, yang kemudian muncul dalam proyek Windows Insider.

Ketika saya bergabung dengan tim WSL sebagai manajer proyek, saya fokus untuk mengeluarkan WSL dari versi beta. Keluhan pengguna terutama terkait dengan kompatibilitas dan kinerja. Tapi, menurut saya, jika pengguna khawatir tentang hal-hal seperti itu, itu berarti mereka menggunakan perkembangan kami dengan serius. Kinerja ditangani hanya oleh mereka yang memecahkan beberapa masalah besar dengan bantuan sistem perangkat lunak tertentu. Akibatnya, meskipun kami masih memiliki banyak hal yang harus dilakukan, kami melakukannya karena suatu alasan, sehingga orang akan dapat memecahkan lebih banyak masalah menggunakan WSL, dan sehingga mereka dapat menyelesaikan masalah mereka lebih cepat.

Ketika kemampuan WSL mulai berkembang, kami melakukan upaya untuk mendekatkan WSL ke pengembang, dan tidak hanya untuk pengguna yang secara tradisional bekerja menggunakan ekosistem Microsoft. Sangat menarik untuk menghadiri acara-acara seperti PyCon dan OSCON. Para pengembang yang hadir di sana terkejut bahwa perwakilan Microsoft juga mengambil bagian dalam acara ini. Pengembang tidak mempercayai gagasan menjalankan Linux di lingkungan Windows. Pada acara ini, saya menunjukkan SQL Server, WSL, dan Visual Studio Code.


Demonstrasi WSL di berbagai acara

Saya menanggapi komentar skeptis mereka dengan saran untuk mencoba apa yang saya perlihatkan kepada mereka. Ketika orang yang ragu mulai mengeksekusi perintah mereka sendiri, skrip kecil dan cuplikan, saya selalu bertemu dengan reaksi keras terhadap apa yang terjadi: “Tunggu sebentar, dan ini benar-benar Linux. Bagaimana kamu melakukan ini? Mengapa saya tidak tahu tentang ini? " Seringkali mereka sampai pada kesimpulan bahwa kami telah menciptakan sesuatu yang memenuhi kebutuhan mereka, sesuatu yang terlihat sangat menarik.

Kami memperhitungkan keluhan pengguna terkait kompatibilitas dan kinerja WSL, dan merilis arsitektur sistem baru - WSL 2 . Ini memberikan kompatibilitas penuh melalui dimasukkannya kernel Linux di Windows dan memberikan peningkatan kecepatan 20 kali lipat. Saya mendapat pengalaman menarik membuat fondasi WSL 2 dan menonton pengumuman teknologi ini di konferensi Build, yang diadakan pada Mei 2019. Hari ini, proyek WSL telah melampaui versi beta dan sampai ke versi 2.

Selain itu, saya bekerja di Microsoft dengan tim lain, berusaha memastikan bahwa WSL dapat digunakan dengan produk mereka. Salah satu contoh signifikan dari penggunaan WSL ini adalah Visual Studio Code. Ini adalah lingkungan kode paling populer yang digunakan dalam mengembangkan proyek JavaScript dan Node.js. Saya menjadi tertarik pada Visual Studio Code ketika saya menyadari bahwa pengembang yang menggunakan editor ini bisa mendapatkan manfaat signifikan dari WSL. Pada awalnya, ini bukan tentang kebutuhan untuk menulis kode dalam jumlah besar. Tujuan utamanya adalah menyederhanakan debugging program Node.js yang berjalan di lingkungan WSL. Ini akan memberi pengembang kesempatan untuk mengembangkan program yang dirancang untuk Node.js versi Linux di komputer Windows menggunakan WSL. Debugging program seperti itu akan terlihat persis seperti debugging mereka di Linux.


Upaya pertama untuk mengintegrasikan Visual Studio Code dengan WSL dan Node.js

Setelah ini ternyata dimungkinkan untuk JavaScript dan Node.js, kami mulai menerima banyak permintaan untuk sesuatu yang serupa dilakukan untuk bahasa lain, misalnya, untuk C ++ dan Python. Saya senang dengan contoh integrasi WSL dan VS Code ini, saya menemukan bahwa saya sangat tertarik dengan ini. Ini membawa saya ke peran baru saya dalam membangun alat untuk pengembang Linux. Sekarang saya fokus pada alat untuk pengembang C ++ di VS Code. Dalam pekerjaan ini, tentu saja, saya fokus pada Linux. Sangat menyenangkan melihat demonstrasi Pengembangan Remote Kode Visual Studio di acara PyCon tahun ini ketika ekstensi WSL yang sesuai dirilis. Pada saat yang sama, ekstensi untuk C ++ diperkenalkan, yang dikembangkan oleh tim saya.

Terlepas dari kenyataan bahwa saya tidak menghabiskan banyak waktu di Microsoft, saya senang bahwa saya dapat berpartisipasi dalam pembuatan banyak alat untuk pengembang Linux. Basis data ini dan dukungan untuk Linux pada Windows, dan alat untuk menulis dan men-debug kode. Saya berencana untuk terus bekerja di Linux dan membuat alat yang akan dinikmati oleh pengembang di seluruh dunia.

Pembaca yang budiman! Apakah Anda menggunakan WSL?

Source: https://habr.com/ru/post/id461663/


All Articles