Vào ngày thứ hai (4/6) vừa qua, Microsoft đã bất ngờ công bố hoàn tất thương vụ thâu tóm GitHub, trang web lưu trữ mã nguồn lớn nhất thế giới, với mức giá 7.5 tỉ USD. Nhân đây Cpp•Developer cũng muốn trà chanh chém gió với anh em một chút về GitHub, xem GitHub là cái quái gì, hoạt động như nào, doanh thu đến từ đâu.
Bạn có thể đã nghe nói rằng GitHub là một dịch vụ chia sẻ và xuất bản source code, hoặc đó là một mạng xã hội dành cho các lập trình viên. Cả hai định nghĩa đó đều đúng, tuy nhiên chưa thể hiện được sự đặc biệt của GitHub.
Trái tim của GitHub chính là Git – một công cụ mã nguồn mở được sáng lập bởi người tạo ra Linux, đó là Linus Torvalds. Matthew McCullough – một chuyên viên đào tạo tại GitHub, giải thích rằng Git, giống như các hệ thống điều quản lý version khác, nó quản lý và lưu trữ các sửa đổi trong các dự án. Mặc dù chủ yếu được sử dụng để quản lý source code, nhưng Git cũng có thể được sử dụng để quản lý bất kỳ loại tệp nào khác, chẳng hạn như tài liệu Word hay Excel.
Một số công cụ tiền nhiệm của Git, chẳng hạn như CVS và Subversion, có một “kho lưu trữ (repository)” trung tâm của tất cả các file liên quan đến một dự án. McCullough giải thích rằng khi một nhà phát triển thực hiện thay đổi (tạo ra các commits khác nhau), thì những thay đổi (commits) đó được ghi trực tiếp lên repository trung tâm. Nhưng với hệ thống kiểm soát version phân tán như Git, nếu bạn muốn thực hiện thay đổi cho một dự án nào đó, bạn sao chép (clone) toàn bộ repository về local. Bạn thực hiện các thay đổi (tạo ra các commits) trên bản sao local của mình, sau đó bạn có thể “push” đồng loạt các commits đó lên server trung tâm. Điều này sẽ giúp các lập trình viên tạo ra được các commits mà không cần connect với server. Việc connect với server chỉ cần khi “push” có commits lên server mà thôi.
GitHub là một dịch vụ lưu trữ sử dụng Git, nhưng bổ sung thêm nhiều tính năng riêng của nó. Trong khi Git là một công cụ dòng lệnh, thì GitHub cung cấp một giao diện đồ họa trên nền tảng Web. Nó cũng cung cấp công cụ kiểm soát truy cập và một số tính làm việc nhóm, chẳng hạn như wiki và các công cụ quản lý task cơ bản.
Chức năng hàng đầu của GitHub là “forking” – sao chép một kho lưu trữ từ tài khoản của người dùng này sang tài khoản khác. Điều này cho phép bạn tham gia vào một dự án mà bạn không có quyền ghi và sửa đổi trực tiếp lên đó bằng tài khoản của bạn. Nếu bạn thực hiện các thay đổi và muốn chia sẻ nó, bạn có thể gửi một thông báo được gọi là “pull request” tới chủ sở hữu ban đầu của dự án. Sau đó, chỉ cần một cú click chuột của chủ sở hữu vào một button, thay đổi bạn tạo ra sẽ được “merge” vào repo gốc.
Đây là nơi hiệu ứng network bắt đầu thể hiện vai trò trong GitHub. Khi bạn gửi một “pull request”, người bảo trì dự án có thể xem hồ sơ của bạn, bao gồm tất cả các đóng góp của bạn trên GitHub. Nếu bản vá của bạn được chấp nhận, bạn sẽ nhận được điểm và nó sẽ hiển thị trong tiểu sử của bạn. Nó giống như một bản lý lịch giúp người bảo trì xác định danh tiếng của bạn. Càng nhiều người và dự án trên GitHub thì những người bảo trì dự án có thể nhận được càng nhiều ý tưởng tốt hơn từ những người đóng góp tiềm năng càng. Các bản vá cũng có thể được thảo luận một cách công khai.
Ba tính năng “forking”, “pull request” và “merge” là những gì làm cho GitHub trở nên mạnh mẽ và đặc biệt cuốn hút với các nhà phát triển. Gregg Pollack của Code School (vừa ra mắt một lớp gọi là TryGit) giải thích rằng trước khi có GitHub, nếu bạn muốn đóng góp cho một dự án mã nguồn mở, bạn phải tải xuống mã nguồn của dự án theo cách thủ công, thực hiện thay đổi ở local, tạo một danh sách các thay đổi một gọi là “bản vá – patch” và sau đó gửi bản vá đó qua email tới người phụ trách bảo trì của dự án. Người này sau đó sẽ phải đánh giá bản vá này và quyết định có nên merge các thay đổi đó hay không.
Ngay cả đối với những người bảo trì không quen sử dụng giao diện GitHub, GitHub vẫn có thể giúp việc quản lý các đóng góp trở nên dễ dàng hơn. “Tôi chỉ tải xuống các bản vá, merge chúng từ dòng lệnh thay vì từ nút merge”, Isaac Schlueter – người bảo trì của nền tảng phát triển nguồn mở Node.js đã nói như vậy. Việc giảm các rào cản trong việc dân chủ hóa phát triển nguồn mở đã giúp các dự án trẻ phát triển. “Node.js sẽ không có thành công ngày hôm nay nếu không có GitHub”, Schlueter nói.
Bên cạnh các kho lưu trữ công khai (public), GitHub cũng bán các kho lưu trữ riêng tư (private) và tại chỗ (on-premises) cho các doanh nghiệp. (On-premises là kiểu mà kho lưu trữ sẽ được đặt tại chính công ty khách hàng của GitHub, GitHub cung cấp phần cứng và hỗ trợ kỹ thuật). Đó là cách mà GitHub kiếm tiền, nhưng GitHub không phải là công ty duy nhất kiếm tiền theo kiểu này trên thị trường mà họ cũng có một số đối thủ cạnh tranh, Atlassian là một đơn cử.
Atlassian đã mua lại một đối thủ cạnh tranh tên là BitBucket vào năm 2010. Và đầu năm 2012 Atlassian đã tung ra Stash, một sản phẩm cho phép cung cấp các kho lưu trữ Git private và on-premises với các tính năng làm việc nhóm theo style của BitBucket/GitHub. Công ty này cũng bán các công cụ làm việc cộng tác dành cho nhà phát triển như Jira và wiki Confluence.
Việc bán mình cho Microsoft sẽ giúp GitHub có chỗ dựa vững chắc hơn. Giám đốc điều hành mới, ông Nat Friedman là người có nhiều năm kinh nghiệm trong lĩnh vực phát triển phần mềm. Ông từng sáng lập Xamarin, một công ty phát triển phần mềm mà Microsoft đã mua vào năm 2016.
Theo Microsoft, thỏa thuận này đóng vai trò quan trọng giúp thúc đẩy công ty phát triển mạnh mẽ hơn trên nền tảng điện toán đám mây. Bằng cách đưa các mã nguồn lên GitHub, nền tảng điện toán đám mây Microsoft Azure sẽ nhận được nhiều sự quan tâm hơn từ các nhà phát triển trên toàn thế giới.
———————————–
Nhiều nguồn trên internet