Các dự án phát triển phần mềm dựa trên tinh thần đồng đội. Tất cả các thành viên phải biết những gì những người khác đang làm và tự do truy cập mã do đồng nghiệp của họ viết. Có thể thực hiện được với hệ thống kiểm soát phiên bản - phần mềm cho phép ghi lại các thay đổi trong mã và tải lên các phiên bản mới.
Một dịch vụ lưu trữ các dự án để cho phép truy cập vào một số máy tính và nhà phát triển được gọi là dịch vụ lưu trữ dự án. Tất cả các dự án khoa học và phát triển nghiêm túc đều dựa trên các nền tảng này - chúng cho phép theo dõi công việc của nhóm và truy cập mã từ bất kỳ thiết bị nào.
Tại sao chúng ta cần dịch vụ lưu trữ dự án?
Khi chúng ta nói về công việc cộng tác và chia sẻ tệp, các dịch vụ đầu tiên được nghĩ đến là Dropbox và Google Drive. Các hệ thống này dễ sử dụng, có giao diện trực quan và cho phép kiểm soát các tệp. Tuy nhiên, chúng không thích ứng với nhu cầu của các nhà phát triển.
Đặc biệt, Google Drive và Dropbox không có hệ thống theo dõi phiên bản chi tiết. Thật khó để hợp nhất tất cả các chỉnh sửa, xem đồng thời nhiều phiên bản và xem tác động đến hiệu suất. Có nhiều hệ thống phù hợp hơn cho nhiệm vụ này - GitHub, Git Lab và BitBucket.
Git là gì?
Phần lớn các công cụ kiểm soát phiên bản phổ biến dựa trên Git - một hệ thống kiểm soát phiên bản phân tán. Mục đích là để giúp các nhóm theo dõi các thay đổi và cải thiện sự hợp tác giữa các nhà phát triển. Mục đích sáng tạo của Git là tạo điều kiện hợp tác và cung cấp các công cụ cho các cộng đồng nguồn mở. Các tệp có xu hướng dày hơn theo thời gian khi các phiên bản được hợp nhất và xác minh.
Sự khác biệt giữa Git và Github là gì?
Mặc dù Git được mô tả như một hệ thống kiểm soát phiên bản, nhưng để đơn giản hơn, chúng ta có thể chia định nghĩa này thành ba thành phần:
- Hệ thống kiểm soát : Git là một hệ thống giúp các thành viên cộng đồng theo dõi nội dung (cập nhật, người tham gia, v.v.). Một hệ thống điều khiển cho phép lưu trữ mã và hiển thị các thay đổi đối với nó.
- Hệ thống kiểm soát phiên bản : các nhà phát triển luôn bổ sung nhiều mã hơn trong Git; thường, nhiều người dùng làm việc đồng thời (chỉnh sửa song song). Hệ thống kiểm soát phiên bản duy trì lịch sử thời gian thực của những thay đổi này, cho phép hợp nhất các chỉnh sửa và phiên bản nhánh.
- Hệ thống kiểm soát phiên bản phân tán : tất cả các phiên bản được lưu trữ trong các kho lưu trữ - một trên Đám mây, mọi người có thể truy cập và một phiên bản cục bộ, có thể truy cập trên thiết bị của nhà phát triển. Điều này rất tiện lợi vì nếu có sự cố với máy chủ hoặc kết nối Internet, người dùng vẫn có thể truy cập vào công việc của mình.
Các định nghĩa Git bạn cần biết
Trước khi bắt đầu so sánh các dịch vụ riêng lẻ, chúng ta nên xem xét các thuật ngữ tổng thể. GitHub, GitLab và BitBucket có thể khác nhau về ưu đãi hoặc các tính năng cụ thể của chúng, nhưng các nguyên tắc chính vẫn giống nhau. Vì chúng phổ biến cho cả ba nền tảng, chúng ta hãy làm một bài đánh giá ngắn gọn.
Một kho lưu trữ địa phương là một lưu trữ nơi mã của bạn sẽ được lưu trữ. Bạn có thể coi nó như một thư mục trên máy tính của mình. Giống như bất kỳ thư mục cục bộ nào, nó có thể được truy cập mà không cần kết nối Internet mà chỉ từ thiết bị đó.
Để chia sẻ mã với các nhà phát triển khác, bạn cần một kho lưu trữ từ xa . Đó là bản sao của các tệp cục bộ của bạn sẽ được lưu trữ trên Đám mây và có sẵn để cộng tác.
Dàn tệp là quá trình chuẩn bị tệp để chuyển vào kho lưu trữ từ xa. Các nhà phát triển xác định tệp họ muốn được chia sẻ, đảm bảo rằng chúng được đặt tên và lưu chính xác.
Git cam kết quá trình lưu các thay đổi trong kho lưu trữ cục bộ.
Đẩy tệp là quá trình chuyển tệp đến kho lưu trữ từ xa. Cam kết bao gồm thông tin về các thay đổi tệp đã được thực hiện trên phiên bản mới được cam kết.
Trạng thái Git là một lệnh cho phép xem tệp nào được sửa đổi và tệp nào trong số đó nằm trong khu vực tổ chức, sẵn sàng được cam kết.
Git log là một lệnh được sử dụng để xem tất cả các cam kết được thực hiện bởi người dùng. Các nhà phát triển có thể xem phiên bản mã nào có sẵn để chỉnh sửa cộng tác.
Hợp nhất đề cập đến việc kết hợp hai lịch sử cam kết. Những điều này có thể rất hữu ích khi bạn cần tải lên các chỉnh sửa song song vào một tệp duy nhất. Không có tiến bộ nào bị mất.
Yêu cầu kéo cho phép các nhà phát triển cho các nhà phát triển khác biết các cập nhật được thực hiện cho cơ sở mã.
Hy vọng rằng, những định nghĩa này đã cho bạn một ý tưởng cơ bản về những gì các dịch vụ dựa trên Git chủ yếu có khả năng và cách chúng tiếp cận nó trong thực tế. Tất cả các quy trình được mô tả ở trên đều yêu cầu các lệnh để bắt đầu.
GitHub là gì?
Vì vậy, để xóa bỏ những nghi ngờ về Git và GitHub là gì, chúng ta hãy giới thiệu GitHub đúng cách. GitHub là nền tảng kiểm soát phiên bản dựa trên Git lớn nhất. Giờ đây, nó tổ chức hơn 38 triệu dự án và được sử dụng phổ biến nhất bởi các cộng đồng nguồn mở.
GitHub có Giao diện người dùng đơn giản giúp các nhà phát triển nhanh chóng bắt tay vào làm việc với các thuật toán Git. Một đặc điểm xác định khác là tốc độ của nó - dịch vụ đẩy và kéo các yêu cầu và hợp nhất các phiên bản một cách nhanh chóng.
Phiên bản miễn phí của GitHub cho phép các nhà phát triển làm việc với các kho công khai và riêng tư, đóng góp cho chúng và cộng tác. Chi phí phụ thuộc vào số lượng người dùng.
BitBucket là gì?
Giống như GitHub, BitBucket được ra mắt vào năm 2008. Nó được tạo ra bởi một nhóm người Úc và sau đó được Atlassian mua lại vào năm 2010. Tuy nhiên, dịch vụ này không hỗ trợ kiểm soát phiên bản dựa trên Git cho đến năm 2011.
Điểm hấp dẫn chính của BitBucket là khả năng lưu trữ không giới hạn số lượng kho lưu trữ riêng cho các nhóm nhỏ (1–5 người dùng). Tuy nhiên, giao diện người dùng của Bitbucket ban đầu không đơn giản như GitHub và chức năng chưa được phát triển. Tuy nhiên, giờ đây, hai dịch vụ ngày càng giống nhau hơn - và mức độ phổ biến của BitBucket ngày càng tăng.
GitLab là gì?
GitLab được thành lập vào năm 2011 để thay thế cho GitHub và BitBucket. Điểm bán hàng chính của nó là chức năng mở rộng, được đóng gói gọn gàng trong một giao diện người dùng tuyệt vời bất kể tính linh hoạt của nó.
Gần đây, các nhóm đã tích cực chuyển sang GitLab từ các dịch vụ khác. Đặc biệt là do sự hỗ trợ liền mạch của GitLab đối với đường ống CI và Docker (và việc sử dụng chúng đã phát triển rất nhiều trong thời gian gần đây).
So sánh Gitlab và Github, điểm yếu của thứ hai là mức độ phổ biến (cộng đồng gần như không hoạt động) và tốc độ.
So sánh chức năng của GitHub, BitBucket và GitLab
Chúng ta hãy xem xét các tính năng của cả ba nền tảng. Rất nhiều trong số chúng sẽ lặp lại - để làm cho sự so sánh rõ ràng hơn, chúng tôi sẽ đặc biệt đánh dấu tất cả các điểm độc đáo. Tuy nhiên, chúng tôi tin rằng một phép so sánh có học thức đòi hỏi một cái nhìn tổng quan đầy đủ về chức năng - vì vậy bạn hiểu những gì cần làm việc với.
Các tính năng của GitHub
Chức năng chính của GitHub là phân nhánh và phân nhánh kho lưu trữ, yêu cầu kéo và hợp nhất, nhân bản codebase. Chức năng chính hoạt động nhanh chóng - có lẽ, nhanh nhất trong số ba chức năng. Các nhà phát triển có thể nhanh chóng tải tệp lên kho lưu trữ từ xa và nhận thông báo ngay lập tức từ những người đóng góp khác.
GitHub cũng có hỗ trợ wiki - một công cụ tích hợp để tạo và chia sẻ tài liệu phiên bản. Dịch vụ hỗ trợ một số định dạng văn bản, bao gồm cả Markdown .
Chức năng bổ sung
- Trình theo dõi vấn đề phát hiện các vấn đề trong cơ sở mã và cảnh báo cho các cộng tác viên;
- Ban phát hành hỗ trợ Kanban và Scrum và cho phép cấu trúc các tác vụ;
- GitHub hỗ trợ sử thi cho phép theo dõi tiến trình của nhóm;
- Lộ trình giúp lập kế hoạch cho các dự án của nhóm và xác định các mốc quan trọng;
- Ước tính và điểm: nhà phát triển có thể ước tính điểm nỗ lực cho từng vấn đề và chia sẻ thông tin chi tiết với cộng tác viên;
- Đồng bộ hóa các phiên bản đã hợp nhất, sự cố GitHub và yêu cầu kéo;
- Ứng dụng máy tính để bàn dành cho Windows và Mac, cũng như ứng dụng di động dành cho Android
- Hỗ trợ hơn 200 ngôn ngữ lập trình
- Tích hợp với Asana, AWS, Windows Azure, Google Cloud , Code Climate
- GitHub Pages là một dịch vụ tích hợp để xây dựng và lưu trữ các trang web với GitHub.
- Đánh dấu cú pháp (không có trong BitBucket)
- Các cộng đồng nguồn mở phổ biến
Ngoài ra, sau khi Microsoft mua lại Github, rất nhiều người dùng bắt đầu tự hỏi: liệu GitHub có an toàn không, đặc biệt là đối với các cộng đồng mã nguồn mở? Hiện tại, không có bất kỳ lý do nào để tin rằng có bất kỳ vấn đề an toàn nào trong nền tảng này. Nếu bạn muốn xem GitHub bảo vệ người dùng chính xác như thế nào, chúng tôi khuyên bạn nên xem bản trình bày chính thức của họ .
Chức năng của Bitbucket so với GitHub
BitBucket được thành lập như một nền tảng để kiểm soát phiên bản Mercurian. Mercurial là một hệ thống điều khiển phiên bản khác, một hệ thống thay thế Git ít phổ biến hơn nhiều. Giờ đây, nền tảng này đã ngừng hỗ trợ Mercurian và tập trung hoàn toàn vào Git.
Các tính năng chính của BitBucket
BitBucket cho phép các nhà phát triển lưu trữ mã trên các kho riêng tư và công khai. Người dùng có thể tạo không giới hạn số lượng kho riêng tư - miễn là không quá 5 người dùng sử dụng chúng. Điểm khác biệt chính của nền tảng này là tích hợp với Jira và Asana. Kể từ khi Atlassian mua lại BitBucket, nó đã trở thành một thành phần gốc trong hệ sinh thái của họ.
Do đó, các nhà phát triển có thể dễ dàng theo dõi hoạt động của BitBucket trong Jira, đo lường năng suất của họ và kết nối các ban tổ chức với các kho lưu trữ cộng tác. Thật tiện lợi vì người quản lý dự án có thể dễ dàng theo dõi các khía cạnh tổ chức và công nghệ của dự án.
Chức năng bổ sung
- Pipelines là một dịch vụ CI / CD hiển thị toàn bộ vòng đời phát triển của sản phẩm. Trên BitBucket, các nhà phát triển có thể theo dõi tiến độ triển khai của phần mềm.
- Quyền chi nhánh: các nhà phát triển có thể cho phép những người cụ thể truy cập vào một kho lưu trữ;
- Tích hợp với Slack, Bamboo, Jenkins, HipChat, Crucible và các công cụ khác;
- Một máy khách Mac và Windows, và một ứng dụng Android, được gọi là Bit Beaker;
- BitBucket Snippets: tạo các đoạn mã cho cơ sở mã;
- Tài liệu và wiki;
- Bảng tìm kiếm để điều hướng codebase;
- Rất nhiều tiện ích bổ sung trên thị trường Atlassian, hầu hết trong số đó có thể được tích hợp dễ dàng trong toàn bộ hệ sinh thái.
Chức năng của GitLab
Sự phổ biến của GitLab ngày càng tăng do việc sử dụng CI / CD và DevOps ngày càng nhiều . Các kho lưu trữ mã khác cung cấp các tính năng CI trong các phiên bản cao cấp của chúng, nhưng trong GitLab, hỗ trợ CI được bao gồm trong gói miễn phí. Ngoài ra, các nhà phát triển có thể lưu trữ tích hợp CI GitLab trên máy chủ của họ.
Chức năng bổ sung
- Nhóm con, quản lý tuân thủ và các sự kiện kiểm toán: GitLab cho phép hạn chế quyền truy cập vào các dự án và xem trạng thái tuân thủ của từng người tham gia;
- Lập kế hoạch dự án: các nhà phát triển theo dõi các vấn đề về mã với danh sách nhiệm vụ được tích hợp sẵn, các mẫu mô tả và bảng quản lý vấn đề;
- Giao tiếp: các nhà phát triển có thể trao đổi các tệp đính kèm, tạo các chuỗi và tham gia vào chúng, theo dõi các thay đổi, ưu tiên các cuộc thảo luận với nhãn, đặt các mốc quan trọng và hoàn thiện các lần lặp lại;
- Quản lý mã nguồn: GitLab được đánh giá cao nhờ giao diện trực quan để phân nhánh, hợp nhất, khóa tệp, báo cáo. GitLab cũng cung cấp các mẫu mã nguồn miễn phí và tích hợp JIRA;
- Tích hợp liên tục: các điểm bán hàng chính của nền tảng này là các công cụ CI miễn phí, bao gồm các đường ống mẹ-con, tính năng tự động theo chiều ngang, trực quan hóa các tạo phẩm HTML và các biến được bảo vệ, v.v.;
- Xây dựng gói: các nhà phát triển có thể sử dụng các gói riêng biệt tùy thuộc vào ngăn xếp công nghệ của họ - có một gói cho PHP, Node.js, Java và các gói khác;
- Bảo mật: GitLab cung cấp tính năng quét bảo mật, cho phép kiểm tra bảo mật động (tuy nhiên, chỉ trong các gói Gold và Ultimate đắt nhất);
- Cấu hình và DevOps: tính năng Auto DevOps có sẵn trong gói miễn phí, trong khi các tiện ích bổ sung chuyên biệt chỉ được hỗ trợ bởi gói Gold và Ultimate.
Giao diện GitHub vs GitLab vs BitBucket
Nói chung, các nhà phát triển đồng ý rằng GitLab và GitHub có giao diện tốt nhất. Nhiều nhà phát triển thích GitHub vì nó phổ biến hơn và họ đã quen với việc điều hướng. Tuy nhiên, các nhóm sử dụng Jira được hưởng lợi từ việc tích hợp liền mạch với hệ sinh thái Atlassian - vì vậy BitBucket là một lựa chọn tự nhiên.
Vì vậy, đây là bản tóm tắt ngắn gọn về giao diện của từng nền tảng:
- GitHub : rất nhiều hướng dẫn và hướng dẫn, chức năng cơ bản có thể được truy cập nhanh chóng, giao diện tối giản và dễ hiểu. Nhược điểm là thiếu tích hợp gốc với Jira và thiếu các tính năng CI nâng cao.
- BitBucket : giao diện có thể khó hiểu, nhưng khi nền tảng này trở nên phổ biến hơn, sẽ có nhiều tài nguyên hơn. Các nhóm sử dụng Jira thường thích BitBucket vì nó cung cấp khả năng hiển thị tổng thể của dự án tốt hơn nhiều.
- GitLab : dịch vụ không được thành lập như các đối thủ cạnh tranh, vì vậy các hướng dẫn và hướng dẫn về giao diện vẫn còn thiếu. Tuy nhiên, bản thân giao diện được tổ chức rất tốt - ngay cả các tiện ích bổ sung nâng cao cũng dễ dàng tìm thấy.
Bảng điều khiển người dùng
Bảng điều khiển người dùng GitHub
Bảng điều khiển người dùng BitBucket
Bảng điều khiển người dùng GitLab
Giá cho GitHub, BitBucket và GitLab
Cả ba nền tảng đều có phiên bản trả phí và miễn phí. Chúng ta hãy xem xét các gói định giá và các tính năng đi kèm. Hãy nhớ rằng tất cả các dịch vụ đều tính phí cho mỗi người dùng, không phải cho mỗi nhóm. Vì vậy, bạn cần nhân chi phí đăng ký với số người trong nhóm.
Giá GitHub
- Miễn phí: không giới hạn kho công khai và riêng tư, không giới hạn số lượng cộng tác viên, 500MB dung lượng lưu trữ;
- Nhóm ($ 4 / tháng) : 2GB kho và tất cả các tính năng của gói miễn phí;
- Doanh nghiệp (12 đô la / tháng) : tất cả các tính năng của gói Nhóm, 50GB dung lượng lưu trữ, kiểm tra nâng cao và SAML;
- GitHub One (giá tùy chỉnh) : gói cuối cùng cho phép truy cập vào hỗ trợ chính thức 24/7, bảo mật nâng cao và phần thưởng học tập liên tục.
- Miễn phí ($ 0 mỗi tháng) : tối đa 5 người dùng cho kho riêng, 50 phút xây dựng mỗi tháng, 1GB dung lượng lưu trữ tệp, tích hợp phần mềm Jira, các tính năng CI / CD
- Tiêu chuẩn ($ 3 mỗi tháng) : không giới hạn số lượng người dùng, 2.500 phút xây dựng mỗi tháng, Tích hợp Jira, Yêu cầu kéo không giới hạn, tất cả các tính năng của gói miễn phí;
- Đặc biệt ($ 6 mỗi tháng) : tất cả các tính năng của gói Nhóm, cũng như hỗ trợ khách hàng, kiểm tra hợp nhất, v.v.
- Miễn phí ($ 0 / tháng): hỗ trợ tất cả các giai đoạn DevOps, hỗ trợ trình chạy CI tùy chỉnh, số lượng kho lưu trữ không giới hạn, 400 phút CI / CD;
- Miễn phí + ($ 4 / tháng) : hỗ trợ tất cả các tính năng trong gói nhóm, 2.000 phút mã hóa CI / CD
- Bronze / Starter ($ 4 / tháng): hỗ trợ 10.000 phút CI / CD, nhiều vai trò phê duyệt, hỗ trợ ưu tiên và đa vùng;
- Silver / Premium ($ 19 / tháng) : còn được gọi là gói doanh nghiệp, gói này cung cấp bảo mật nâng cao, thông tin chi tiết về điều hành, kiểm tra tuân thủ, người dùng khách và 50.000 phút CI / CD.
Trong số các nền tảng này, BitBucket cung cấp mức giá cạnh tranh nhất. Tuy nhiên, GitHub đang cho thấy xu hướng giảm giá. Trên thực tế, chi phí được mô tả trong bài báo đã được cập nhật khá gần đây - vào tháng 4 năm 2020.
- GitHub: tuyệt vời cho các dự án cá nhân và nhóm nhỏ;
- BitBucket: các nhóm quy mô vừa và nhỏ sử dụng Jira và Asana;
- GitLab: các nhóm và doanh nghiệp vừa làm việc với các công cụ CI / CD.
Mặc dù mức độ phổ biến của công cụ không quan trọng nhiều trong quá trình phát triển, nhưng tốt nhất hãy thúc đẩy các nhà phát triển của bạn tìm hiểu các công cụ thịnh hành. Sẽ dễ dàng hơn khi tuyển dụng các ứng viên có kinh nghiệm làm việc với dịch vụ, giới thiệu các phương pháp mới và thúc đẩy sự chuyển đổi trong tổ chức .
Vì vậy, chúng ta hãy xem xét mức độ phổ biến hiện tại, động lực tăng trưởng, xu hướng trong tương lai và hồ sơ người dùng. Số lượng người dùng rất quan trọng, nhưng cũng rất tuyệt khi biết những người dùng này là ai. Ví dụ, GitHub được biết đến như một điểm đến cho các nhà phát triển Ruby và Ruby on Rails vì nó lưu trữ hầu hết các đá quý và tiện ích bổ sung.
Thống kê GitHub
GitHub là kho lưu trữ mã lớn nhất, được cả các tổ chức sử dụng để truy cập cá nhân và cộng tác nguồn mở. Nền tảng này phổ biến đến mức mọi người thường nghĩ rằng nó đồng nghĩa với chính Git - do đó, những nghi ngờ về Git so với GitHub xuất hiện. Theo Statista , GitHub lưu trữ các công cụ mã nguồn mở hàng đầu, bao gồm Flutter, Microsoft's VS Code và Azure Docs, Facebook's React Native, Tensor Flow, Kubernetes, v.v.
Hiện tại, GitHub được sử dụng bởi 40 triệu người dùng , theo dữ liệu được công bố vào tháng 1 năm 2020. Nó được sử dụng bởi Microsoft, Facebook, Google và các tập đoàn lớn khác. Xét về mức độ phổ biến, dịch vụ kiểm soát phiên bản phân tán này dẫn đầu.
Theo Google Xu hướng, mức độ phổ biến của GitHub khá nhất quán trong hai năm qua. Cộng đồng có thể sẽ tiếp tục phát triển.
Thống kê BitBucket
Sự nổi tiếng của Jira đang không ngừng tăng lên và xu hướng này cũng đang thúc đẩy người dùng mới đến với BitBucket. BitBucket được sử dụng bởi Slack, Accenture, Figma, Paypal và các công ty khác. Cộng đồng mã nguồn mở trên BitBucket kém phát triển hơn nhiều. Khách hàng điển hình của nền tảng là những người dùng tích cực của hệ sinh thái Atlassian - không phải là những người đóng góp nguồn mở.
Thật không may, BitBucket không công bố thống kê thường xuyên về số lượng người dùng. Theo tin tức chính thức của họ, vào năm 2019, sản phẩm đã được 10 triệu nhà phát triển sử dụng . Theo xu hướng tìm kiếm, mức độ phổ biến của dịch vụ ngày nay thấp hơn so với GitHub hoặc GitLab.
Thống kê GitLab
Theo trang nghiên cứu điển hình của GitLab , công cụ này được sử dụng bởi Drupal, Ticketmaster, BI Worldwide và các doanh nghiệp khác.
Đây là danh sách các sáng kiến mã nguồn mở được lưu trữ trên GitLab. Thay vì các dự án kinh doanh lớn, nó chứa đựng các sáng kiến khoa học và các tổ chức phi chính phủ.
Rất tiếc, GitLab không có thống kê chính thức về số lượng người dùng. Theo một số nguồn, dịch vụ được sử dụng bởi 200.000–500.000 tổ chức và nhà phát triển. Đối với xu hướng tìm kiếm của Google, dịch vụ được nhắc đến nhiều hơn BitBucket nhưng ít hơn nhiều so với GitHub.
So sánh Google Xu hướng của GitHub, BitBucket và GitLab
Tóm lược
Để kết thúc phần so sánh của chúng tôi, hãy cùng xem qua những ưu và nhược điểm chính của từng nền tảng và xác định các trường hợp sử dụng của chúng.
Nếu bạn muốn triển khai GitHub, GitLab hoặc BitBucket trong dự án của riêng mình, hãy cân nhắc liên hệ với các nhà phát triển chuyên nghiệp có kinh nghiệm với cả ba - họ có thể giúp bạn đưa ra lựa chọn phù hợp. Nhóm của chúng tôi rất sẵn lòng phân tích dự án, quy mô nhóm, nhu cầu phần mềm, quy trình làm việc và tìm nền tảng kho lưu trữ phù hợp với nhu cầu của bạn.
Ban đầu được xuất bản tại https://jelvix.com .