ReactOS

ReactOS là một hệ điều hành mã nguồn mở cho các máy tính cá nhân x86/x64 với mục đích tương thích nhị phân với các chương trình máy tính và driver được viết cho Windows Server 2003.

Bắt đầu phát triển từ năm 1996, như một dự án bản sao của Windows 95, và tiếp tục phát triển như là "ReactOS" năm 1998, với việc bổ sung gia tăng của các tính năng của các phiên bản mới hơn của Windows. ReactOS đã được ghi nhận như là một thay thế mã nguồn mở thay thế tiềm năng cho Windows vì nó hỗ trợ Windows API. Trên trang web chính thức có nói: ""Mục tiêu chính của dự án ReactOS là cung cấp một hệ điều hành tương thích nhị phân với Windows... như vậy mọi người đã quen với giao diện người dùng quen thuộc của Windows có thể tìm cách sử dụng ReactOS dễ dàng. Mục tiêu cuối cùng của ReactOS là cho phép loại bỏ Windows và cài đặt ReactOS mà không cần người dùng cuối nhận thấy sự thay đổi."" , ReactOS được coi là phần mềm alpha, tính năng không đầy đủ nhưng với nhiều ứng dụng Windows đã làm việc (ví dụ. Adobe Reader 6.0, OpenOffice...), và do đó khuyến cáo của các nhà phát triển chỉ cho mục đích đánh giá và thử nghiệm.

ReactOS chủ yếu được viết bằng C, với một số phần, chẳng hạn như ReactOS File Explorer, được viết bằng C++. Dự án phần thực hiện chức năng của Windows API và đã hỗ trợ các kiến trúc vi xử lý AMD64. ReactOS, là một phần của hệ sinh thái FOSS, tái sử dụng và hợp tác với nhiều dự án phần mềm nguồn mở khác, đáng chú ý là hầu hết dự án Wine phát triển một lớp tương thích Windows cho các hệ điều hành tương tự Unix.

== Lịch sử ==
=== Phát triển sớm ===
Vào khoảng năm 1996, một nhóm các nhà phát triển phần mềm tự do mã nguồn mở bắt đầu một dự án gọi là "FreeWin95" như một bản sao của  Windows 95. Dự án bị đình trệ trong các cuộc thảo luận về thiết kế của hệ thống.

Trong khi FreeWin95 đã bắt đầu với những kỳ vọng lớn, vẫn chưa có bất kỳ bản phát hành vào cuối năm 1997. Kết quả là, các thành viên dự án, do điều phối viên Jason Filby, kết hợp với nhau để phục hồi dự án. Dự án hồi sinh tìm cách lặp lại trong các chức năng của Windows NT. Trong việc tạo ra các dự án mới, một cái tên mới, "ReactOS", được chọn. Dự án bắt đầu phát triển tháng 1/1998 bằng cách tạo cơ sở cho một kernel NT mới và các driver. Tên ReactOS được đặt ra trong một nhóm chat IRC. Trong khi thuật ngữ "OS" là viết tắt cho operating system (hệ điều hành), từ "react" nhắc đến sự bất mãn của nhóm với - và phản ứng - vị trí độc quyền của Microsoft. nó giống như Windows 95-Windows 2000

=== Phân nhánh Ekush OS ===
Năm 2004, một sự vi phạm bản quyền/giấy phép mã ReactOS GPL (và các mã FOSS khác) đã được tìm thấy khi ai đó phân phối một phân nhánh ReactOS dưới tên "Ekush OS". Trang web sau đó đã ngừng hoạt động.

=== Kiểm toán nội bộ ===
Để tránh bị truy tố về bản quyền, ReactOS cần phải hoàn toàn khác biệt và không phải phái sinh từ Windows, một mục tiêu mà cần làm rất cẩn thận.
Một tuyên bố được đưa ra ngày 17/1/2006, bởi một cựu nhà phát triển của Hartmut Birr trên mailing list (ros-dev)  của các nhà phát triển của ReactOS rằng ReactOS có chứa mã nguồn tách rời từ Microsoft Windows. Các đoạn mã mà Birr tranh chấp có liên quan đến chức năng BadStack trong syscall.S. cũng như mục không xác định khác. So sánh tính năng này với mã nhị phân tách rời từ Windows XP, Birr lập luận rằng các chức năng BadStack chỉ đơn giản là copy-paste từ Windows XP, cho rằng chúng giống hệt nhau. Alex Ionescu, tác giả của mã này, khẳng định rằng trong khi nhị phân Windows XP trong câu hỏi đã thực sự tháo rời và nghiên cứu, các mã này không chỉ đơn thuần là copy-paste, nhưng tái triển khai; lý do tại sao các chức năng giống hệt nhau, Ionescu tuyên bố, là vì chỉ có một cách có thể để thực hiện chức năng.

Ngày 27/1/2006, các nhà phát triển chịu trách nhiệm cho việc duy trì các mã  kho lưu trữ ReactOS đã khóa truy cập sau cuộc họp để thảo luận về các cáo buộc. Khi tiếp cận bởi NewsForge, Microsoft từ chối bình luận về vụ việc. Từ khi ReactOS phát triển một phần mềm tự do nguồn mở, yêu cầu bồi thường gây ra một phản ứng tiêu cực của cộng đồng phần mềm tự do; đặc biệt là, Wine cấm số nhà phát triển hoạt động từ việc cung cấp các khoản đóng góp và hợp tác cấp cao chính thức giữa hai dự án vẫn còn khó khăn . Các khoản đóng góp từ một số nhà phát triển ReactOS hoạt động đã được chấp nhận hậu kiểm toán, và hợp tác ở mức độ thấp để sửa lỗi vẫn xảy ra.

Trong một tuyên bố trên website của mình, ReactOS trích dẫn những định nghĩa khác nhau về các cấu thành của kỹ thuật dịch ngược sạch như là một nguyên nhân cho cuộc xung đột. Một vài quốc gia, bao gồm cả Mỹ yêu cầu việc tái triển khai dựa trên mã tách rời phải được viết bởi một người nào đó khác hơn so với người đã tách rời và kiểm tra mã gốc, trong khi các nước khác cho phép cả hai công việc được thực hiện bởi cùng một cá nhân. Do đó, ReactOS làm rõ việc Chính sách về Sở hữu trí tuệ (Intellectual Property Policy Statement) của họ yêu cầu kỹ thuật dịch ngược sạch phải tuân theo Luật pháp Mỹ US. Việc kiểm toán mã nguồn nội bộ đã được tiến hành để đảm bảo rằng chỉ kỹ thuật dịch ngược sạch được dùng, và tất cả các nhà phát triển đã được thực hiện để ký một thỏa thuận cam kết họ tuân thủ các chính sách của dự án về kỹ thuật dịch ngược. Người đóng góp cho sự phát triển của nó không bị ảnh hưởng bởi việc này, và tất cả các truy cập vào các công cụ phát triển phần mềm đã được phục hồi ngay sau đó. Tháng 9/2007, với các kiểm toán gần hoàn thành, tình trạng kiểm toán đã được gỡ bỏ từ trang chủ ReactOS. Mặc dù việc kiểm toán đã được hoàn thành, chi tiết cụ thể không được công bố công khai vì nó chỉ là một sự nỗ lực nội bộ để đảm bảo tuân thủ các chính sách riêng của dự án.

Hầu hết các mã assembly mà đã bị cáo buộc sao chép cũng đã được thay thế như một sự tiến triển tự nhiên trong phát triển ReactOS, với các nhà phát triển đã tái triển khai các chức năng trong C vì lý do tính di động.

Ngoài ra, vụ rò rỉ mã nguồn Windows không được xem như rủi ro pháp lý cho ReactOS, như các bí mật thương mại được coi là không thể bảo vệ tại tòa án do lây lan rộng.

=== Tham gia Google Summer of Code ===
Bắt đầu từ 2006 dự án ReactOS đã tham gia Google Summer of Codes. Ví dụ, trong GSoC 2011 ReactOS dẫn dắt một dự án sinh viên tích hợp lwIP vào ngăn xếp mạng. ReactOS đã có ba lần tham gia GSoC vào các năm: 2006, 2011, và 2016.

=== Trình diễn công khai ===
Các buổi trình diễn của ReactOS đã được đưa ra, chủ yếu là hướng tới các chính trị gia Nga. Viktor Alksnis đã gặp điều phối viên của dự án Aleksey Bragin, người đã có một bài thuyết trình và trình diễn của dự án, cho thấy ReactOS chạy với Total Commander và Mozilla Firefox trong năm 2007. Dmitry Medvedev cũng đã xem một cuộc trình diễn trong chuyến thăm của Tổng thống Nga đến một trường trung học ở Verhnerusskoe, Stavropol, có sự tham dự của một trong những thành viên trong nhóm phát triển năm 2011.

Ngày 31/7/2012, Vladimir Putin cũng đã xem một buổi trình diễn của ReactOS khi đến dự Seliger Youth Forum với tư cách Tổng thống Nga, có sự tham gia của Marat Karatov, một thành viên của nhóm phát triển.

=== Chiến dịch gọi vốn ===
Ngày 1/5/2012 một chiến dịch kêu gọi vốn với mục tiêu 30,000 euro được khởi động để tài trợ cho các dự án phát triển bổ sung. Đến cuối năm chiến dịch đạt được 50% mục tiêu đề ra và họ đã quyết định tiếp tục các chiến dịch gọi vốn mà không có thời hạn. Số tiền này được chuyển đến "ReactOS Deutschland e. V.". Khi luật thuế của Đức với mô hình tổ chức đăng ký tình nguyện ("Eingetragener Verein") khiến họ có thể trả tiền trực tiếp cho các nhà phát triển, các vấn đề gián tiếp như tiền sinh hoạt phí được xem xét.

=== Dự án Thorium Core Cloud Desktop ===
Khi ReactOS nhận được giải thưởng Dự án của Tháng trên SourceForge tháng 6/2013, một chiến dịch gọi vốn cộng đồng trên Kickstarter được công bố trong một buổi phỏng vấn với điều phối viên của dự án, Aleksey Bragin. Ngày 23/11/2013 tuyên bố của dự án tiết lộ một chiến dịch trên Kickstarter với mục tiêu 120,000$ được bắt đầu. Dịch vụ điện toán đám mây có tên "Thorium Core Cloud Desktop" sẽ sử dụng ReactOS là cốt lõi và có thể cho phép sử dụng các ứng dụng tương thích Windows từ các thiết bị di động (như smartphone, tablet), workstations, hoặc bất kỳ thiết bị kết nối khác. Ngày 21/2/2014, Chiến dịch gọi vốn kết thúc với việc không đạt mục tiêu, với $48,965 của $120,000 được đưa lên, dẫn đến không có tiền ngay.

=== ReactOS Community Edition ===
Tháng 4/2014, Dự án ReactOS đã kêu gọi một chiến dịch trên Indiegogo để khởi động ReactOS Community Edition, một phiên bản của ReactOS dự trên bản phát hành 0.4. Chiến dịch đặt mục tiêu kêu gọi được 50.000 USD vốn tài trợ với việc bổ sung thêm các mục tiêu mới. Sự phát triển của ReactOS Community Edition sẽ lấy cộng đồng làm trung tâm, với việc người dùng ReactOS có thể biểu quyết và đóng góp để quyết định các phần mềm và trình điều khiển sẽ được dự án hướng đến. Ngày 1/6/2014, chiến dịch gây quỹ trên Indiegogo kết thúc với việc huy động thêm được 25.141 USD cho việc phát triển của phiên bản cộng đồng, và quá trình bỏ phiếu để hỗ trợ phần cứng và phần mềm đã được bắt đầu ngay sau đó.

=== ReactOS Hackfest 2015 ===
Dự án ReactOS đã tổ chức một Hackfest từ 7-12/8/2015, tại thành phố Aachen Đức. Hackfest được công bố là thành công, vì nó bổ sung thêm nhiều tính năng cho ReactOS.

== Development ==
=== Phát triển ReactOS core ===
ReactOS chủ yếu được viết bằng C, với một số phần, ví dụ như ReactOS Explorer và sound stack, được viết bằng C++. Dự án biên dịch dùng cả MinGW vàMicrosoft Visual Studio, và góp phần vào sự phát triển của hệ thống thông qua việc gửi các bản vá lỗi cho các thành phần của nó.

Các nhà phát triển hướng đến mục tiêu làm cho hạt nhân và các API tương thích với Windows NT version 5.2 (Windows Server 2003) và bổ sung thêm các hỗ trợ cho các phần mềm và phần cứng với kế hoạch nhắm đến các phiên bản mới hơn của Windows. Hỗ trợ DirectX được triển khai thông qua ReactX, một triển khai nội bộ. Tăng tốc phần cứng 2D render được thực hiện tự nhiên, trong khi chức năng vẽ khác được chuyển đến OpenGL như một giải pháp tạm thời.

Các tiến trình phát triển bị ảnh hưởng bởi kích thước của nhóm phát triển và mức độ kinh nghiệm giữa họ. Theo một tính toán của các nỗ lực cần thiết để triển khaiWindows 7, Microsoft đã cần 1,000 hoặc hơn các nhà phát triển, tổ chức họ vào 25 nhóm, với mỗi nhóm có trung bình 40 người. Tính đến 2/9/2011, trong mục ReactOS tại Ohloh, trang theo dõi thông các liên kết "Nhóm phát triển tích cực và có đóng góp lớn" liệt kê 33 nhà phát triển có đóng góp trong vòng 12 tháng và có tổng cộng 104 người hiện tại và trước đây đã có đóng góp cho mã của dự án thông qua Subversion từ khi nó bắt đầu. Trong bài thuyết trình của mình tại Hackmeeting 2009 ở Milan, nhà phát triển ReactOS Michele C. lưu ý rằng hầu hết các nhà phát triển tìm hiểu về kiến trúc Windows trong khi làm việc trên ReactOS và không có kiến thức trước đó.

Trong khi mục tiêu chính hiện tại của ReactOS là nền tảng PC x86/AMD64, một nỗ lực port cho kiến trúc ARM đã có, trong khi nó đã không tạo ra nhiều chức năng và bị bỏ rơi. Các hỗ trợ cho Xbox, một biến thể của kiến trúc IA-32, đã được bổ sung thông qua việc sử dụng một kiến trúc riếng HAL, mặc dù điều này, cùng với một port cho PowerPC, không còn được duy trì tích cực.

=== Hợp tác và tái sử dụng ===
Trong khi ReactOS có mục tiêu xây dựng một kernel tương thích với Windows như là phần mềm mã nguồn mở, nhiều chức năng xung quanh cần thiết để tạo ra một hệ điều hành hoàn chỉnh là đã có sẵn trong các hệ sinh thái nguồn mở lớn hơn. Khi có sẵn và có thể, ReactOS vì vậy đã xây dựng và phối hợp với các dự án mã nguồn mở đã có. Ngược lại, các dự án như Wine, Captive NTFS trước đây, và Longene tái sử dụng codebase mã nguồn mở của ReactOS.

==== Trình điều khiển phần cứng ====
Về mặt điều khiển phần cứng, ví dụ các dự án UniATA cung cấp trình điều khiển Serial ATA cho ReactOS. Dự án cũng đã thử nghiệm bằng cách sử dụng thư viện FullFAT trong khi viết lại FAT Installable File System của nó. ReactOS giúp việc sử dụng USB stack từ Haiku vừa là một tài liệu tham khảo vừa như là một nền tảng để hỗ trợ USB của mình. Mesa 3D  cung cấp OpenGL render.

==== Mạng ====
Ngăn xếp mạng của ReactOS được xây dựng dựa trên port của ngăn xếp mạng OSKit TCP trong FreeBSD, cùng với việc thực hiện phát triển nội bộ các giao thức gói tin theo định hướng tương tự IP. Sau này, lwIP  đã được tích hợp vào ngăn xếp mạng của ReactOS. Các dịch vụ mạng Windows như LSASS, SAM, NETLOGON, và print spooling đã có sẵn như là mã nguồn mở thay thế bởi các dự án Samba/Samba TNG. Một phân nhánh của rdesktop được sử dụng như một triển khai phần mềm client cho giao thức độc quyền của Microsoft Remote Desktop Protocol.

==== Hợp tác với Wine ====
Hai dự án ReactOS và Wine chia sẻ mục tiêu để chạy phần mềm Windows nhị phân tự nhiên và vì vậy có thể chia sẻ nhiều phụ thuộc và phát triển. ReactOS  sử dụng các phần của dự án Wine để nó có thể được hưởng lợi từ sự tiến bộ của Winetrong triển khai các Win32 API. Trong khi các thành phần NTDLL, USER32, KERNEL32, GDI32, và ADVAPI32 của Wine không thể được sử dụng trực tiếp bởi ReactOS do sự khác biệt về kiến trúc, mã lệnh chúng và các bộ phận khác có thể được chia sẻ giữa cả hai dự án. Hạt nhân được phát triển bởi ReactOS riêng biệt như Wine dựa vào hạt nhân unixoid có sẵn.

Đặc biệt, các nhánh "Arwinss" thử nghiệm đã được tạo ra như là một phương tiện thay thế để cải thiện hỗ trợ USER32 và GDI32 thông qua một cài đặt thay thế của Win32 API. Trong khi đó, hệ thống con Win32 của ReactOS ban đầu theo sát sau hệ thống tương đương của nó trong Windows, Arwinss kết hợp kiến trúc của hệ thống con với các triển khai tương ứng trong Wine. Để kết thúc điều này, Arwinss sử dụng thư viện GDI32 và USER32 của Wine với vài thay đổi để tận dụng đầy đủ hơn về tương thích phần mềm hiện tại của Wine. Arwinss cũng cho phép người dùng tùy chọn sử dụng một X server từ xa thay vì hiển thị cục bộ.

==== Khác ====
Dự án Tango Desktop Project chủ động cung cấp hướng dẫn mã nguồn mở thiết kế và nguồn lực (như các icon) cho các ứng dụng trên môi trường desktop. FreeType là một thư viện phát triển phần mềm mã nguồn mở, dùng để render ký tự sang bitmapvaf cung cấp các hỗ trợ cho các hoạt động khác liên quan đến font chữ. Dự án "KernelEx" là một dự án mở rộng và tương thích Windows-API, cung cấp triển khai nguồn mở của một số Windows-API. dự án góp phần khác là MinGW, SYSLINUX, adns, ICU, GraphApp, Ext2, GNU FreeFont, DejaVu fonts, và Liberation fonts.

== Phân nhánh ==
Các phân nhánh dựa trên ReactOS đôi khi được tạo ra:
- Ekush OS (2004)
- ReactOS Server Edition
- ReactOS Server
- OpenROS (2013)
- FusionOS (2013)
- ReactOS NG (2015) – nhằm để tương thích với Windows 8
- Greentea OS (2016) – nhằm phát triển nhanh và đơn giản

== Tiếp nhận ==
Nhiều người đã chấp nhận ReactOS và những tác động của việc giảm nguồn mở khả thi thay thế cho Windows. Một bài báo năm 2004 và cuộc phỏng vấn của tạp chí hàng tuần của Đức "Der Spiegel" mô tả ReactOS là hướng vào người dùng Windows muốn từ bỏ sử dụng các Phần mềm thương mại độc quyền mà không cần phải chuyển sang Linux. DistroWatch, trang web theo dõi các bản phân phối Linux, cũng liệt kê cũng ReactOS và mô tả nó là ""Một hệ điều hành tự do nguồn mở dựa trên các nguyên tắc thiết kế tốt nhất được tìm thấy trong kiến trúc Windows NT."".

Trong phần riêng của mình cho tạp chí Free Software Magazine, David Sugar ghi nhận vào năm 2006 rằng ReactOS sẽ cho phép việc sử dụng các ứng dụng phụ thuộc vào phiên bản cũ của Windows mà các API yêu cầu. Ông cũng nhận ra tiềm năng của nó để mở rộng tổng triển khai cơ sở của phần mềm miễn phí,và như là một nguồn tài nguyên cho các nhà phát triển muốn biết Windows API không có giấy tờ trong quá trình viết các ứng dụng di động. PC Magazine mục John C. Dvorak nhận xét trong năm 2008 kiến trúc Windows NT không có nhiều thay đổi lớn, làm cho nó trở thành một ứng cử viên lý tưởng cho nhân bản, và tin rằng ReactOS có thể là "một mối đe dọa lớn hơn Linux với sự thống trị của Microsoft". Trong phản ứng với mục Dvorak, nhà báo công nghệ của ZDNet Dana Blankenhorn ghi nhận trong năm 2008 rằng sự thiếu nhà tài trợ của các doanh nghiệp và đối tác đã khiến cho dự án vô hại đối với Microsoft. Lặp lại điều này, Thom Holwerda của OSNews năm 2009 đã phân loại ReactOS vào nhóm các hệ điều hành thú vui, duy trì chỉ bởi nhóm nhỏ các nhà phát triển làm việc trong thời gian rảnh rỗi của họ, thiếu sự hỗ trợ tài chính  của nhiều hệ điều hành chính thống và là di sản của những sản phẩm trước đây như RISC OS.

Tháng 10/2015, một đánh giá của Network World về ReactOS v0.3.17 ghi nhận có ấn tượng ""Nó giống như đang chạy Windows 2000"" and praised the extension by an application package manager, a feature the original Windows is missing.

=== Giải thưởng ===
ReactOS Project giành chiến thắng tại giải thưởng thường niên Seliger Youth Forum "The Best Presentation" với 100,000 Rúp Nga (≈US$2700) năm 2011, với sự tham dự của Alexander Rechitskiy, một thành viên trong nhóm phát triển.

ReactOS là dự án nổi bật trên SourceForge trong tuần từ ngày 27 /2/2012, và 25/4/2013 cùng với một số dự án khác. Nó là Dự án của tháng (Project of the Month) trên Sourceforge trong tháng 6/2013.

Năm 2015, ReactOS được đặt tên bởi Bộ trưởng [ Thông tin Nga] với các hỗ trợ xứng đáng thay thế "Hệ điều hành khác/chủ", với tiềm năng của nó trong việc giảm sự phụ thuộc của Nga từ nhập khẩu phần mềm độc quyền.

== Xem thêm ==
- Tương thích mã nhị phân
- coLinux, một dự án cho phép Microsoft Windows và Linux kernel để chạy đồng thời song song trên cùng một máy
- FreeDOS, một bản sao của MS-DOS
- Longene, một hệ điều hành hạt nhân hybrid với ý định tương thích nhị phân với cả hai hệ sinh thái Windows và Linux
- NDISwrapper, một sự tái tạo hạt nhân Windows NT bên trong hạt nhân Linux cho phép sử dụng các trình điều khiển Windows trong Linux
- Wine, lớp tương thích mà chạy các ứng dụng Microsoft Windows trên hệ điều hành tương tự Unix

== Liên kết ngoài ==
- Trang web chính thức
- Đánh giá và phỏng vấn
- Detailed review of ReactOS (from 2006)