Thứ Ba, 16 tháng 4, 2013

Exim: một trường hợp điển hình về tính bền vững

Exim: a case study in sustainability
By Philip Hazel, University of Cambridge Computing Service, Published: 05 June 2007, Reviewed: 11 June 2012
Bài được đưa lên Internet ngày: 11/06/2012
Lời người dịch: Đây là trường hợp thứ 6 trong số 7 trường hợp điển hình về tính bền vững của một dự án phần mềm nguồn mở trong loạt bài này, ở đây là Exim. Dự án này cũng được điều hành theo chế độ 'nhà độc tài nhân từ'. Tuy nhiên, nó cũng đang có kế hoạch để chuyển sang chế độ 'người tài lãnh đạo' sau khi người đứng đầu dự kiến sẽ về hưu trong vòng 3 năm tới.
Vào nửa cuối năm 2006, Ủy ban các Hệ thống Thông tin Chung (JISC) đã ủy quyền một nghiên cứu thông qua ủy ban Dạy và Học để xem xét các vấn đề xung quanh tính bền vững của phần mềm nguồn mở (PMNM). Báo cáo kết quả đã đưa ra cùng 7 trường hợp điển hình của các dự án nguồn mở thành công nhưng rất khác nhau và đã xem xét từng mô hình về tính bền vững của dự án. Từng trong số các trường hợp điển hình đó từng được nói từ quan điểm của lập trình viên hàng đầu hoặc một trong những cá nhân và đưa ra một sự hiểu thấu đáng ngạc nhiên trong các yếu tố đã xác định sự thành công của từng dự án. Các trường hợp điển hình đó bây giờ được OSS Watch trình bày như một tài liệu đứng riêng trong một loạt bài.
Trường hợp điển hình này, xem xét dự án Exim, từng được Philip Hazel, Dịch vụ Điện toán Đại học Cambridge, viết.
Mô tả ngắn gọn
Exim là một Đại lý Truyền Thư – MTA (Mail Transfer Agent), một chương trình phân phối thư điện tử. Nó cực kỳ mạnh, ứng dụng mức chuyên nghiệp, được phát hành theo giấy phép GPL và từng được áp dụng như là MTA mặc định được Debian sử dụng. Nó chạy trên hầu hết các hệ điều hành như Unix, thay thế cho chương trình Sendmail truyền thống, và cũng có thể được chạy dưới các hệ thống Cygwin trên Windows. Một sách chỉ dẫn tham chiếu được cập nhật được đưa vào với từng phát hành.
Tôi là tác giả gốc của Exim. Cho tới nay, phần phần triển mã của dự án phần lớn dược duy trì bền vững trong sự đóng góp hầu như toàn thời gian được ông chủ của tôi thừa nhận, Đại học Cambridge. Nhiều người đã gửi vào các bản vá để sửa các lỗi và mã cho những cải tiến, và vài phần chính của mã từng được gửi tới, và được những người đóng góp khác, duy trì. Các công cụ ngoại vi hỗ trợ (website, các danh sách thư, …) được những người tình nguyện duy trì, một phần trong thời gian của riêng họ, và một phần với việc trao phước lành từ các ông chủ của họ. Không ai được trả tiền để làm việc trong dự án Exim. Dự án không tồn tại theo bất kỳ ý nghĩa chính thức nào, và vì thế không có ý nghĩa nào về việc có tiền hay trả tiền về bất kỳ thứ gì.
Đại học Cambridge đã đóng một vai trò chủ chốt trong việc duy trì bền vững dự án Exim và tôi đã không có điều gì ngoài sự hỗ trợ tích cực từ quản lý và các đồng nghiệp của tôi trong lĩnh vực này.
Giới thiệu
Các MTA là những người đưa thư của Internet, chuyển các thông điệp thư điện tử từ một máy chủ này tới máy chủ khác, và cuối cùng phân phối chúng trong các hộp thư. Những người sử dụng Exim, theo nghĩa của những người mà chọn để nó thay vì một MTA khác đang sẵn có, là những người quản trị hệ thống và những người chọn MTA mặc định cho các phát tán hệ điều hành được đóng gói.
Đặc tính phân biệt của Exim là tính mềm dẻo của nó. Các cơ sở cấu hình giống nhiều hơn một bộ các phần hơn là một tập hợp các giải pháp được thiết lập cấu hình sẵn trước. Có khả năng sử dụng các dữ liệu từ các nguồn bên ngoài như LDAP hoặc các cơ sở dữ liệu SQL cũng như từ các tệp, các socket, và Dịch vụ Tên Miền - DNS (Domain Name Service). Dù Exim từng được thiết kế cho các máy chủ thư điện tử được điều tiết theo kích cỡ trên Internet, thì nó cũng đã thấy được sự yêu mến ở những nơi khác, và từng được sử dụng trong nhiều môi trường khác nhau, từ các máy tính cá nhân cho tới các máy chủ rất lớn điều khiển hàng triệu tài khoản.
Từ quan điểm về tính bền vững, Exim đã bắt đầu như một dự án nhỏ, một người và đã lớn mạnh để trở thành một tay chơi đáng kể trong lĩnh vực của mình. Dù nó có thể vẫn được xem là dự án một người đối với hầu hết các module mã cơ bản và sách chỉ dẫn tham chiếu, thì nó luông cần sự hỗ trợ của những người khác để giữ cho nó đi tiếp và giúp nó trưởng thành và phát triển. Hướng tới tất cả các ý định và mục tiêu, Exim được quản lý như một 'nhà độc tài nhân từ' nhưng điều này có thẻ phải thay đổi khi tôi về hưu, trong vòng 3 năm nữa.
Lịch sử của dự án
Vào năm 1995, các máy chủ trung tâm tại Đại học Cambridge từng chạy các MTA đa dạng khác nhau, bao gồm cả Sendmail, Smail 3, và PP. Khi đó, Internet từng là một nơi khá thân thiện và từng có ít nhu cầu để đề phòng chống lại các hành động thù địch; hầu hết các site đã chạy các trình trễ thư mở (open mail relays), ví dụ thế. Tuy nhiên, rõ ràng là, tình hình đó đã thay đổi và các yêu cầu mới đã nảy sinh. Tôi đã triển khai một số sửa đổi cho Smail, nhưng khi đó nó từng là phần mềm có mã 8 năm tuổi, được viết theo tiêu chuẩn trước cả C, và ban đầu được thiết kế để sử dụng trong một môi trường rất khác. Vì thế tôi đã quyết định xem liệu tôi có thể xây dựng được một MTA mới từ đầu, nắm lấy triết lý cơ bản của Smail và mở rộng nó, và tôi đã bắt đầu Exim như một dự án thí điểm 1 người vào đầu năm 1995. Vì tôi chắc chắn đảm bảo đầu ra là những gì có thể, tôi đã gọi nó là Trình thư Internet Thí điếm - Exim (EXperimental Internet Mailer).
Vào tháng 11/1995, một trong những đồng nghiệp của tôi đã phát hiện ra những gì tôi đang làm và, sau khi yêu cầu một bản sao đánh giá, đặt nó vào sự phục vụ trong Phòng Khoa học Máy tính tại Cambridge. Ông đã bắt đầu nói cho những người khác về nó nên tôi đã bắt đầu đặt các phát hành lên một site FTP và trả lời thư điện tử về nó. Các phát hành sớm từng chưa bao giờ được công bố chính thứ, các chi tiết của chúng chỉ được lan truyền mồm.
Sau khoảng một năm tôi đã có một chương trình làm việc, và vào tháng 06/1996 tôi đã nói chuyện tại 'Ngày Thư của Khu trường' (Campus Mail Day) tại Aberdeen. Khi mọi người nghe về nó thì họ đã bắt đầu sử dụng nó, và điều này đã làm gia tăng sự sử dụng đã dẫn tới sự tăng trưởng của Exim và đã tạo ra một mối quan tâm trong việc xem nó phát triển tiếp theo.
Tăng trưởng và phát triển
Các phát hành ban đầu của Exim đã sử dụng một thư viện các biểu thức phổ biến mà đã chỉ đưa ra các tính năng cơ bản. Tôi có thể không thấy một thư viện mà đã hỗ trợ bất kỳ thứ gì gần với các biểu thức mạnh, phổ biến được Perl hỗ trợ, nên vào mùa hè năm 1998 tôi đã quyết định tự viết. Điều này đã trở thành các Biểu thức Phổ biến Tương thích với Perl - PCRE (Perl-Compatible Regular Expressions), mà tôi đã phát hành như một ứng dụng nguồn mở riêng rẽ.
Dường như là tôi đã đưa ra một cách không có chủ tâm một nhu cầu được cảm nhận rộng rãi, và PCRE sớm được nhiều dự án ở mọi dạng sử dụng, chứ không chỉ trong các hệ thống giống Unix. Nhiều dự án sử dụng PCRE là các ứng dụng nổi tiếng, như Apache, PHP và Mathematica. Hệ quả là, PCRE đã cần tới nhiều sự phát triển hơn nữa so với tôi đã nhìn thấy trước lúc ban đầu, và dự án vẫn còn tích cực. Không giống như Exim, thư viện C của PCRE đã vẫn giữ là một dự án 1 người, dù trình bọc gói C++ từng được xây dựng từ một lập trình viên từ Google Inc. và các lập trình viên khác của Google đã duy trì nó sau này.
Một hoặc hai năm sau khi Exim ra đời và tồn tại, tôi đã được UK ISP yêu cầu tổ chức một khóa huấn luyện nội bộ cho đội thư diện tử của họ. Điều này đã diễn ra vào mùa xuân năm 1999, và vào mùa hè tôi đã tổ chức nó một lần nữa, nhưng lần này cho Planet Online, một ISP khác có trụ sở ở Anh. Vào khoảng cùng thời gian đã có những yêu cầu về danh sách thư cho viện huấn luyện Exim, nên vào tháng 09/1999 chúng tôi đã tổ chức khóa học đầu tiên tại một trường cao đẳng tại Cambridge. Chúng tôi đã mong đợi 30-40 người dự là nhiều nhất, nhưng cuối cùng có tới 120 người. Điều này từng là khóa học một ngày, và đã có một khóa 'cao cấp' sau đó vào mùa xuân tiếp sau. Sau đó chúng tôi đã thiết lập thành một mẫu tổ chức khóa đó mỗi năm một lần, vào cuối tháng 6 hoặc 7.
Trong năm 2002 thì khóa huấn luyện từng được mở rộng thành 2 ngày, và một vài mảng đã được các diễn giả bên ngoài thực hiện, những người từng được mời đưa ra các bài nói chuyện về các trường hợp điển hình. Vào năm 2005 chúng tôi đã mở rộng khóa học thành 3 ngày vì, với sự bổ sung các tính nawngn quét nội dung vào Exim, vấn đề chủ đề không còn phù hợp với 2 ngày nữa. Như một phần của sự mở rộng này, 2 phiên bài tập thực hành đã được bổ sung. Vì chúng tôi không có các dòng doanh thu hay sự bảo trợ, các chi phí các khóa học được đáp ứng bằng việc lấy tiền của những người tham dự: việc ăn ở là tại cao đẳng :Cambridge, và các phí được truyền qua. Cho tới nay chúng tôi đã không bị lỗ.
Vào tháng 09/1997 Planet Online đã tự nguyện tổ chức một webiste và danh sách thư. Dù Planet Online không còn tồn tại, nhưng Nigel Metheringham, người từng làm việc cho họ khi đó, tiếp tục làm việc về nó. Ôn duy trì danh sách thư và cũng đã đóng góp mã.
Khi tôi viết Exim, tôi đã dự tính nó sẽ được các nhà quản trị hệ thống Unix có kinh nghiệm sử dụng, những người có thể cài đặt nó từ nguồn. Sau đó Debian đã quyết định sử dụng Exim như là MTA mặc định và mọi điều đã thay đổi. Debian 2.1, có tên mã là Slink, đã được phát hành vào tháng 03/1999, và điều này từng là phiên bản ổn định đầu tiên của Debian có Exim như là MTA mặc định. Điều này đã mang vào sự tồn tại toàn bộ lớp người sử dụng Exim mới, nhiều trong số họ đã có chút ít kinh nghiệm chạy một hệ thống giống Unix, và thậm chí ít chạy một máy chủ thư. Đã có một sự gia tăng lớn về số lượng các câu hỏi của những 'người mới tới' trong các danh sách thư những may thay đã có một số người đăng ký vào danh sách mà họ từng có khả năng và thiện chí nhảy vào và trả lời các câu hỏi dạng của những người mới tới. Nên nó đã không bị đổ, nhưng nó đã thay đổi bản chất tự nhiên của các điều một chút và cuối cùng đã dẫn tới một danh sách thư của các lập trình viên Exim bị tách ra từ danh sách thư của những người sử dụng Exim.
Điều này làm phức tạp thêm một chút, Debian đã áp dụng Exim 3 thay vì Exim 4, có nghĩa là từng người sử dụng mới của Debian đã trở thành một người sử dụng mới của Exim 3 và, trong thực tế, nó từng là vài năm trước khi phiên bản chính tiếp sau của Debian phát hành cùng với Exim 3. Cuối cùng, dự án Exim đã tôi rèn tiếp, và Debian đã phải nhận trách nhiệm đối với những điều như chuyển ngược các bản vá về an ninh từ Exim 4 sang Exim 3. Tải lên những người duy trì Exim vì thế đã trở thành nhu cầu để tiếp tục tham chiếu cho những người sử dụng Debian ngược về Debian.
Tôi đã không có liên quan trong các cuộc thảo luận chính thức của Debian xung quanh việc áp dụng Exim, nhưng, với nhận thức muộn, có cảnh báo trước về một sự bùng nổ bỗng nhiên của những người sử dụng mới với kinh nghiệm chung ít hơn nhiều so với cộng đồng đang tồn tại có lẽ là hữu ích. Nếu bạn đã có các tài nguyên và nếu bạn đã biết thứ gì đó như điều này tới, thì việc có ai đó để viết lời giới thiệu và dạy các tư liệu trước có lẽ sẽ là điều cảm nhận được để làm. Ngày nay có niều hơn thông tin quanh ta trên các wiki những khi đó chúng tôi đã không có một wiki. Hơn nữa, tài liệu được đưa ra cùng với Exim từng (và đang) là rất nhiều tư liệu tham chiếu có ý định cho độc giả gốc ban đầu là các quản trị hệ thống Unix có kinh nghiệm. Khi những người có ít kinh nghiệm hơn đã bắt đầu thử làm chủ Exim, thì nhu cầu nhiều tài liệu giới thiệu hơn đã trở thành cấp thiết. Để giải quyết điều này tôi đã viết một cuốn sách, Exim: Đại lý Chuyển Thư (Exim: the Mail Transport Agent), như một dạng sách chỉ dẫn. Điều này đã được O'Reilly xuất bản vào năm 2001; một phiên bản được rà soát lại, Máy chủ Thư Exim SMTP: Chỉ dẫn chính thức cho Phiên bản 4 (The Exim SMTP Mail Server: Official Guide for Release 4) đã được xuất bản vào năm 2003.
Cấu trúc dự án: tính bền vững
Qua các năm Exim đã tăng trưởng thành một dự án chính. Website và danh sách thư ban đầu từng được chạy trên máy chủ của Planet Online vài năm, nhưng một số yếu tố, như phần cứng cũ đi và nhân viên thay đổi, nghĩa là giải pháp khác đã được tìm thấy. Khi Dịch vụ Điện toán của Đại học Cambridge đã đồng ý chính thức hỗ trợ Exim, và tiềm năng các dự án nguồn mở khác, họ đã cài đặt một máy chủ chuyên dụng vào tháng 05/2004, và các dịch vụ đã được chuyển sang nó vào mùa hè năm đó. Website, các danh sách thư, Wiki, và Bugzilla bây giờ được đặt chỗ ở đó, và site FTP ban đầu là máy chủ FTP chuyên dụng của Đại học.
Như được nêu ở trước, không ai được trả tiền vì làm việc trong dự án Exim, và dự án không có phương tiện để kiếm tiền hoặc trả tiền vì bất kỳ điều gì.
Những người tham gia chính
Tôi vẫn còn duy trì đa số (những không phải tất cả) mã mà tạo nên Exim và các tiện ích của nó. Tuy nhiên, một số phần mã, một số chương trình tiện ích, và tất cả hỗ trợ ngoại vi, như website, các danh sách thư, kho CVS, Wiki và Bugzilla được những người tham gia chủ chốt khác duy trì. Tom Kistner đã triển khai và duy trì mở rộng quét nội dung cho Exim. Michael Haardt đã triển khai và duy trì mở rộng Sieve. Steve Campbell nắm lấy và tiếp tục duy trì tiện ích eximstats. John Jetmore đã triển khai và duy trì tiện ích exipick. Nigel Metheringham duy trì các danh sách thư và đã đóng góp cho mã. 2 trường cao đẳng của Cambridge điều khiển tất cả những sắp xếp cho khóa huấn luyện thường niên của Exim.
Các vai trò là những gì mọi người làm cho bản thân họ - nhiều, tất nhiên, chỉ được đề xuất một sửa lỗi/bổ sung để giải quyết một vấn đề mà họ đã gặp phải. Tệp các thừa nhận của tôi gồm 150 tên, và tôi biết nó không phải là hoàn chỉnh.
Cấu trúc dự án: quy trình và điều hành
Vì dự án này 'cứ tăng trưởng', không có mô hình điều hành (bản dịch tiếng Việt) chính thống nào có thể được nói nằm đằng sau nó. Cho tới nay, phần phát triển mã của dự án từng được duy trì ở mức độ rộng với sự đóng góp toàn thời gian hầu hết của tôi, với sự đồng ý của ông chủ tôi. Nhiều người đã gửi vào các bản vá và sửa lỗi và mã cho những cải tiến, mà tôi rà soát lại trước khi bổ sung chúng vào các nguồn. Trong hầu hết các trường hợp sự giải thích vì sao mọi người tham gia có thể là “Tôi thích Exim nhưng nó hoàn toàn không làm những gì tôi cần: đây là bản vá”. Một số người đóng góp nhiều hơn sau đó đã tham gia trong việc giữ cho toàn bộ điều đó chạy. Nhưng mọi người cũng bỏ ra bỏ vào theo thời gian.
Ngoài việc chỉ sử dụng Exim, nhiều cộng đồng thế giới những người sử dụng Exim tham gia bằng việc đóng góp mã và các ý tưởng, chúng được thảo luận trong các danh sách thư. Điều này bao gồm cả các sửa lỗi và các mở rộng chương trình (đôi khi là đáng kể). Đối với đa phần, môi trường trong các danh sách thư là thân thiện và cộng tác, thứ gì đó tôi đặc biệt chào đón.
Số lượng lớn mọi người đã đóng góp những bổ sung kích cỡ khác nhau, nhưng không chính thức giữ trách nhiệm về chúng. Một số lớn chúng là những giao diện cho các cơ sở dữ liệu khác nhau (như LDAP, MySQL, PostgreSQL) và các phương pháp xác thực khác nhau (như, Cyrus SASL, Dovecot).
Cho tới bây giờ, tôi đã nắm hầu hết các quyết định chính trong tư vấn với các lập trình viên khác và những người trong các danh sách thư. Tuy nhiên, gần đây, tôi đã và đang ủy thác ngày càng nhiều hơn về dự án để chuẩn bị cho sự rút lui của tôi trong thời gian vài năm nữa. Khi điều đó xảy ra, có thể sẽ tốt sẽ phải có sự chính thống nhiều hơn về cấu trúc điều hành.
Những phản ánh và tương lai
Thư điện tử là một trong những dịch vụ Internet chính. Sử dụng của nó vẫn còn đang mở rộng nhanh chóng. Yêu cầu cho phần mềm để xử lý thư điện tử sẽ đi với chúng tôi cho tương lai có thể nhìn thấy trước được. Tuy nhiên, khi tôi lần đầu tiên viết Exim, vào năm 1995, tôi đã giả thiết rằng nó sẽ 'hoàn tất' sau 1-2 năm - sau tất cả, sự nhận và phát thư chắc chắn là một qui trình được hiểu tốt, và một khi Exim đã thực hiện nó đúng đắn, thì điều đó sẽ thế. Tôi đã sai làm sao! Đã và đang có một dòng các yêu cầu tiếp tục cho chức năng mới, một phần được tạo ra từ sự bùng nổ sử dụng Internet và sự tăng trưởng lạm dụng thư điện tử, và một phần vì mọi người tiếp tục đi tới với các cách thức mới về xử lý thư điện tử. Tôi bây giờ nghi ngờ rằng điều này sẽ tiếp tục vài năm nữa và nếu Exim vẫn giữ được là mạnh mẽ, thì nó sẽ phải tiếp tục phải phát triển. Tuy nhiên, tôi cũng nhận thức được rằng sẽ tới lúc phần mềm 'cũ đi' và mọi người đi tiếp tới gì đó khác. Exim đã có hơn 10 năm tới nay, và nó có thể là có một 'cái bẫy chuột' tốt hơn đang chờ đợi để bùng nổ trên khán đài.
Vào thời điểm viết bài này, dự án Exim đang tiệm cận một đường phân nước, vì khoảng 3 năm nữa, tôi sẽ nghỉ hưu. Dù tôi không định biến mất hoàn toàn, thì tôi không muốn tiếp tục làm việc gì về Exim sau khi nghỉ hưu khác với việc thỉnh thoảng tư vấn. Có một số người hiểu mã của Exim rất tốt, và tôi hy vọng rằng bây giờ có đủ xung lượng để giữ cho qui trình phát triển đi tiếp, dù có lẽ với tốc độ chậm hơn.
Tuy nhiên, tôi đồ rằng một số thủ tục điều hành chính thức hơn sẽ cần phải được tư vấn và cả một số qui định làm việc cho các quyết định, như khi để tạo ra một phát hành mới và liệu có hay không đưa vào một bản vá đặc biệt. Cảm giác của tôi là khi một người làm hầu hết mọi việc sẽ phải được thay thế bằng nhiều người làm những phần việc nhỏ hơn, thì sẽ cần sự chính thống hơn để tránh quá nhiều sự mất trật tự.
Các chi tiết về dự án
Website Exim là http://www.exim.org/, nó có đúp bản ở một số site khắp thế giới. Không có site phát triển rời. Các tệp của dự án được giữ trong một kho CVS, nhưng hiện tại không có sự truy cập nặc danh. Tuy nhiên, một ảnh chụp màn hình về đêm của mã và bộ kiểm thử được tự động tải lên tới một site FTP vì lợi ích của những ai không có các tài khoản trong hệ thống CVS. Sách chỉ dẫn tham chiếu là trực tuyến trên webiste, cũng như đang được đưa vào như một tệp văn bản trong phát hành của Exim. Nó cũng có thể tải về được theo các định dạng PostScript, PDF, HTML và Texinfo.
Bây giờ có 3 danh sách thư của những người sử dụng quan tâm tới Exim: exim-users, một danh sách thảo luận chung của người sử dụng; exim-dev, một thảo luận các vấn đề phát triển; exim-announce, một danh sách các công bố tần suất giao dịch thấp. Các danh sách đó là mở cho tất cả nhưng chỉ những người đăng ký có thể đưa bài lên 2 danh sách đầu, và danh sách thứ 3 bị hạn chế chỉ cho ít người có quyền đưa bài lên.
Có 2 danh sách nữa, về sự quan tâm đối với các lập trình viên. Danh sách exim-cvs nhận các thông điệp đề xuất từ hệ thống CVS. Bất kỳ ai mà muốn xem gần hơn trong việc phát triển nguồn có thể đăng ký (bằng thư điện tử). Danh sách exim-maintainers là một danh sách được duy trì bằng tay của những người có một quyền ưu tiên đệ trình vào CVS. Nigel Metheringham đã thiết lập các danh sách thư và duy trì chúng. Ông cũng đã đề xuất và triển khai các chính sách.
Đăng ký được điều khiển bằng một mẫu trên web.
Website cũng đặt chỗ cho một Wiki tại http://www.exim.org/eximwiki/ và một Bugzilla tại http://www.exim.org/bugzilla/.
Hiện trạng
Cập nhật tình trạng sau đã được Nigel Metheringham cung cấp vào tháng 12/2008: Philip Hazel đã nghỉ hưu khỏi Đại học Cambridge vào tháng 09/2007, đã và đang đứng đầu sự phát triển của Exim qua lịch sử của nó. Khi ông sắp nghỉ hưu, một số thay đổi đã được thực hiện theo cách dự án làm việc, với một lưu trữ CVS trực quan công khai (với một số lượng nhỏ những người đề xuất) đối với nguồn và tài liệu được làm cho sẵn sàng trong một hệ thống của Đại học Cambridge cũng như một hệ thống theo dõi lỗ trực quan công khai. Các phiên bản Exin sau 4.50 (đầu năm 2005) đã có một số thay đổi được đệ trình trực tiếp từ nhiều tác giả (khoảng 6 người tổng cộng) trong CVS, dù đa số những thay đổi vẫn còn được philip đệ trình.
Từng có một phiên bản (phiên bản 4.69) khi Philip đã nghỉ hưu, dù có một số sửa lỗi hoặc cải tiến đáng kể hiện bên trong kho nguồn. Chúng tôi mong đợi sẽ có một phát hành tiếp trong ít tháng nữa. Tuy nhiên sự quản lý phát hành là một nhiệm vụ đáng kể, và có liên quan tới công việc đáng kể trong phần của những người có liên quan - điều này có nghĩa là các phát hành có khả năng sẽ không thường xuyên trừ phi ai đó nắm lấy vai trò đó.
Lần này không có Người lãnh đạo Dự án (Project Leader) duy nhất quản lý dự án, nhưng thay vào đó là một nhóm những người mới đã từng tham gia với Exim vài năm. Một trong những vấn đề đặc biệt là nhiều người có liên quan sẽ không còn tham gia trong việc điều hành các hệ thống thư với phần lớn thời gian của họ nữa, và vì thế có ít quan tâm ngay lập tức trong việc thúc đẩy sự phát triển tiếp theo. Exim cũng là một dự án chín muồi - nó có chức năng rộng lớn và là chức năng khá hoàn chỉnh. Nhiều trong các yêu cầu cho chức năng bổ sung có xu hướng sẽ giải quyết những điều còn chưa lôi cuốn được nỗ lực phát triển. Các vấn đề điều khiển thư điện tử, các giao thức và các giải pháp cũng đang chuyển khá chậm so với những thay đổi khi dự án bắt đầu.
Các danh sách thư vẫn còn được sử dụng tốt vì sự hỗ trợ của Exim, với một sự kết hợp của những người sử dụng mới và có kinh nghiệm đưa lên các danh sách đó. Các phiên bản của Debian cung cấp Exim phiên bản 3 đã hầu hết trở nên lạc hậu, nên có nghĩa là các phiên bản Exim trước phiên bản 4 bây giờ có thể được xem một cách thực tế là lỗi thời.
Hiện tại, trong vai trò của tôi như không phải là người lãnh đạo, tôi mong đợi Exim sẽ tiếp tục theo một vai trò duy trì cho một số năm, trừ phi và cho tới khi chức năng điều khiển thư điện tử đáng kể và mới được yêu cầu, nhiều người hơn tham gia vào như là các thành viên tích cực của đội dự án, hoặc tập hợp khác các phần mềm điều khiển thư lấy sự chia sẻ từ Exim.
Vào tháng 12/2011 thì phiên bản hiện hành của Exim là 4.77. Các danh sách thư tiếp tục hoạt động.
In the latter half of 2006, the Joint Information Systems Committee (JISC) commissioned a study via its Teaching and Learning committee to examine the issues surrounding sustainability of open source software. The resulting report drew together seven case studies of successful but very different open source projects and examined each project’s sustainability model. Each of these case studies has been told from the point of view of the lead developer or one of the key personnel and gives a fascinating insight into the factors that have determined the success of each project. These case studies are now presented by OSS Watch as stand alone documents in a series.
This case study, examining the Exim project, has been written by Philip Hazel, University of Cambridge Computing Service.
Brief description
Exim is a Mail Transfer Agent (MTA), a program that delivers electronic mail. It is an extremely robust, enterprise-level application, released under the GNU General Public License (GPL) and has been adopted as the default MTA used by Debian. It runs on most Unix-like operating systems, replacing the traditional Sendmail program, and can also be run under Cygwin on Windows systems. A complete, up-to-date reference manual is included with each release.
I am the original author of Exim. So far, the code development part of the project has largely been sustained by my almost full-time contribution sanctioned by my employer, the University of Cambridge. Many people have sent in patches to fix bugs and code for enhancements, and several major portions of the code have been sent in by, and are maintained by, other contributors. The peripheral support apparatus (website, mailing lists, etc.) is maintained by volunteers, partly in their own time, and partly with the blessing of their employers. Nobody is paid for working on the Exim project. The project does not exist in any formal sense, and therefore has no means of acquiring money or paying for anything.
The University of Cambridge has played a major role in sustaining the Exim project and I have had nothing but positive support from my management and colleagues in this endeavour.
Introduction
MTAs are the postmen of the Internet, transporting e-mail messages from one host to another, and ultimately delivering them into mailboxes. The users of Exim, in the sense of those who choose to run it instead of one of the other available MTAs, are system administrators and those who choose default MTAs for packaged operating system distributions.
The distinguishing characteristic of Exim is its flexibility. Its configuration facilities are more like a kit of parts than a set of preconfigured solutions. It is able to use data from external sources such as LDAP or SQL databases as well as from files, sockets, and the Domain Name Service (DNS). Although Exim was designed for moderate-sized Internet e-mail servers, it has also found favour elsewhere, and has been used in many different environments, from personal computers to very large servers handling millions of accounts.
From a sustainability point of view Exim started as a small, one-man project and has grown to become a significant player in its field. Although it could still be considered a one-man project for most of the basic code modules and the reference manual, it has always needed the support of others to keep it going and to help it grow and develop. To all intents and purposes Exim is run as a ‘benevolent dictatorship’ but this may have to change when I retire, in three years’ time.
Project history
In 1995, the central servers at the University of Cambridge were running a variety of MTAs, including Sendmail, Smail 3, and PP. At that time, the Internet was a fairly friendly place and there was little need to take many precautions against hostile acts; most sites ran open mail relays, for example. It was clear, however, that this situation was changing and that new requirements were arising. I had implemented some modifications to Smail, but by then it was eight-year-old code, written in pre-standard C, and originally designed for use in a very different environment. I therefore decided to see if I could build a new MTA from scratch, taking the basic philosophy of Smail and extending it, and I began Exim as a one-man experimental project early in 1995. As I wasn’t exactly sure what the outcome would be, I called it EXperimental Internet Mailer (Exim).
In November 1995, one of my colleagues found out about what I was doing and, after having begged an evaluation copy, put it into service in the Computer Science Department at Cambridge. He started telling others about it so I began putting releases on an FTP site and answering e-mail about it. The early releases were never formally announced, details of them just spread by word of mouth.
After about a year I had a working program, and in June 1996 I gave a talk at a ‘Campus Mail Day’ in Aberdeen. When people heard about it they started using it, and this increased usage has led to Exim’s growth and created an interest in seeing it develop further.
Growth and development
The original releases of Exim used a regular expression library that provided basic features only. I could not find a library that supported anything close to the powerful, regular expressions supported by Perl, so in the summer of 1998 I decided to write my own. This became Perl-Compatible Regular Expressions (PCRE), which I released as a separate open source application.
It seemed that I had unwittingly filled a widely felt need, and soon PCRE was being used by many projects of all kinds, and not only on Unix-like systems. Many of the projects that use PCRE are well-known applications, such as Apache, PHP, and Mathematica. As a consequence, PCRE has needed a lot more development than I originally anticipated, and the project is still active. Unlike Exim, the core PCRE C library has remained a one-person project, though the C++ wrapper was built by a programmer from Google Inc. and other Google programmers have subsequently maintained it.
A year or two after Exim came into existence I was asked by a UK ISP to run an in-house training course for their e-mail team. This took place in the spring of 1999, and in the summer I ran it again, but this time for Planet Online, another UK-based ISP. At about the same time there were requests on the mailing list for Exim training, so in September 1999 we ran the first course at a college in Cambridge. We had expected 30—40 attendees at the most, but ended up with 120. This was a one-day course, and there was a subsequent ‘advanced’ course the following spring. After that we settled into a pattern of running the course once a year, in late June or July.
In 2002 the training course was expanded to two days, and a couple of slots were filled by external speakers, who were invited to give case study talks. In 2005 we extended the course to three days because, with the addition of the content-scanning features to Exim, the subject matter would no longer fit into two days. As part of this extension, two sessions of practical exercises were added. As we have no income streams or sponsorship, the costs of the courses are met by charging the attendees: the accommodation is at a Cambridge college, and the charges are just passed on. So far we have not made a loss.
In September 1997 Planet Online volunteered to run a website and mailing list. Although Planet Online no longer exists, Nigel Metheringham, who was working for them at the time, continues to work on it. He maintains the mailing list and has also contributed to the code.
When I wrote Exim, I envisaged it being used by experienced Unix system administrators who would be installing it from source. Then Debian decided to use Exim as their default MTA and things changed. Debian 2.1, codenamed Slink, was released in March 1999, and this was the first Debian stable release that had Exim as its default MTA. This brought into existence a whole new class of Exim user, many of whom had little experience of running a Unix-like system, and even less of running a mail server. There was an enormous increase in the number of ‘newbie’ questions on the mailing lists but fortunately there were a number of people subscribed to the list who were able and willing to jump in and answer newbie-type questions. So it didn’t all collapse, but it changed the nature of things a bit and ultimately led to an Exim developers’ mailing list splitting off from the Exim users’ list.
Just to complicate this a little bit more, Debian adopted Exim 3 rather than Exim 4, which meant that each new user of Debian became a new user of Exim 3 and, in fact, it was several years before Debian’s next major release came out with Exim 4. This wasn’t the best thing, as all the experienced Exim users were on Exim 4 and were rapidly forgetting Exim 3. In the end, the Exim project had to just forge ahead, and Debian had to take responsibility for things like back-porting security patches from Exim 4 to Exim 3. The load on Exim maintainers therefore became the need to continually refer Debian users back to Debian.
I wasn’t involved in Debian’s formal discussions around adopting Exim, but, with hindsight, having advance warning about a sudden influx of new users with much less general experience than the existing community would have been helpful. If you had the resources and if you knew something like this was coming, then getting somebody to write introductory and teaching material in advance would be the sensible thing to do. Nowadays there’s a lot more information around in the wiki but back then we didn’t have a wiki. In addition, the documentation provided with Exim was (and is) very much reference material intended for the original readership of experienced Unix system administrators. When less experienced people started trying to administer Exim, the need for more introductory documentation became acute. To address this I wrote a book, Exim: the Mail Transport Agent, as a kind of tutorial. This was published by O’Reilly in 2001; a revised version, The Exim SMTP Mail Server: Official Guide for Release 4 was published in 2003.
Project structure: sustainability
Over the years Exim has grown into a major project. The original website and mailing list were run on Planet Online’s server for several years, but a number of factors, such as the hardware getting old and staff changes, meant that another solution had to be found. As the University of Cambridge Computing Service had formally agreed to support Exim, and potentially other open source projects, they installed a dedicated host machine in May 2004, and services were transferred to it that summer. The website, mailing lists, Wiki, and Bugzilla are now hosted there, and the primary FTP site is the University’s dedicated FTP server.
As mentioned before, nobody is paid for working on the Exim project, and the project has no means of acquiring money or paying for anything.
Key participants
I still maintain the majority (but not all) of the code that comprises Exim and its utilities1. However, some sections of the code, some utility programs, and all of the peripheral support, such as the website, mailing lists, CVS repository, Wiki, and Bugzilla are maintained by other key participants. Tom Kistner implemented and maintains the content-scanning extension to Exim. Michael Haardt implemented and maintains the Sieve extension. Steve Campbell took over and continues to maintain the eximstats utility. John Jetmore implemented and maintains the exipick utility. Nigel Metheringham maintains the mailing lists and has contributed to the code. Two Cambridge colleagues handle all the arrangements for the annual Exim training course.
Roles are what people make for themselves—many, of course, just submitted one fix/addition to solve a problem that they had encountered. My acknowledgments file contains 150 names, and I know it is not complete.
Project structure: process and governance
Because this project ‘just grew’, there is no formal governance model that can be said to be behind it. So far, the code development part of the project has been sustained to a large extent by my almost full-time contribution, sanctioned by my employer. Many people have sent in patches to fix bugs and code for enhancements, which I review before adding them to the sources. In most cases the explanation for why people participate would be “I like Exim but it doesn’t quite do what I need: here’s a patch”. Some of the bigger contributors then got involved in keeping the whole thing going. But people do drop in and drop out from time to time.
Apart from just using Exim, many of the worldwide community of Exim users participate by contributing code and ideas, which are discussed on the mailing lists. This includes both bug fixes and program extensions (sometimes substantial). For the most part, the atmosphere on the mailing lists is friendly and co-operative, something I particularly welcome.
A large number of people have contributed additions of various sizes, but do not formally retain responsibility for them. Some of the larger ones are interfaces to various databases (e.g. LDAP, MySQL, PostgreSQL) and different authentication methods (e.g. Cyrus SASL, Dovecot).
Up to now, I have taken most of the major decisions in consultation with other developers and those on the mailing lists. However, recently, I have been devolving more and more of the project in preparation for my retirement in a few years’ time. When that happens, there may well have to be more formality about the governance structure.
Reflections and future
E-mail is one of the major Internet services. Its use is still expanding rapidly. The requirement for software to process e-mail is going to be with us for the foreseeable future. However, when I first wrote Exim, back in 1995, I assumed that it would be ‘finished’ after a year or two—after all, mail reception and delivery was surely a well-understood process, and once Exim was doing it properly, that would be that. How wrong I was! There has been a continuous stream of requirements for new functionality, caused partly by the explosion of Internet usage and the growth of e-mail abuse, and partly because people keep coming up with new ways of processing e-mail. I now suspect that this will continue for some years and if Exim is to remain viable, it will have to continue to develop. However, I’m also aware that in time software ‘wears out’ and people move on to something else. Exim has had over ten years now, and it may be that there is a better ‘mousetrap’ waiting to burst onto the scene.
At the time of writing, the Exim project is approaching a watershed, because at some time in the next three years I will retire. Although I do not intend to disappear completely, I do not want to continue working on Exim after retirement other than in an occasional, advisory capacity. There are a number of people who understand the code of Exim quite well, and I hope that there is now enough momentum to keep the development process going, albeit perhaps at a slower pace.
However, I suspect that some more formal governance procedures will need to be devised, and also some working rules for decisions, such as when to create a new release and whether or not to include a particular patch. My feeling is that when one person doing most of the work has to be replaced by lots of people doing smaller parts, there will need to be more formality in order to avoid too much disorder.
Project details
The Exim website is http://www.exim.org/, which is mirrored at a number of sites around the world. There is no separate development site. The project’s files are kept in a CVS repository, but at present there is no anonymous access. However, a nightly snapshot of the code and test suite is automatically uploaded to an FTP site for the benefit of those who do not have accounts on the CVS system. The reference manual is online at the website, as well as being included as a text file in the Exim distribution. It is also downloadable in PostScript, PDF, HTML, and Texinfo formats.
There are now three mailing lists of interest to Exim users: exim-users, a general user discussion list; exim-dev, a discussion of development issues; exim-announce, a low-traffic announcements list. These lists are open to all but only subscribers may post to the first two, and the third is restricted to a few authorised posters.
There are two further lists, of interest to developers. The exim-cvs list receives commit messages from the CVS system. Anyone who wants to keep a close watch on the developing source may subscribe (by e-mail). The exim-maintainers list is a hand-maintained list of those who have a CVS commit privilege. Nigel Metheringham set up the mailing lists and maintains them. He also proposed and implemented the policies.
Subscription is handled by a web form.
The website also hosts a Wiki at http://www.exim.org/eximwiki/ and a Bugzilla at http://www.exim.org/bugzilla/.
Current status
The following status update was kindly provided by Nigel Metheringham in December 2008:
Philip Hazel retired from the University of Cambridge in September 2007, having headed up the development of Exim throughout its history. In the run up to his retirement a number of changes were made to the way the project works, with a publicly visible (with a small number of committers) CVS archive of source and documentation made available on a University of Cambridge system as well as a publicly visible bug tracking system. Exim releases after 4.50 (Early 2005) had a number of changes committed directly by various authors (around 6 people in total) into CVS, although the majority of changes were still committed by Philip.
There has been one release (version 4.69) since Philip retired, although there are a significant number of bug fixes or enhancements currently within the source repository. We expect there to be a further release in the next few months. However release management is a significant task, and involves considerable work on the part of those involved - this means that releases are likely to be infrequent unless someone takes on that role.
At this time there is no single Project Leader managing the project, but instead a group of a few people that have been involved with Exim for several years. One of the particular problems is that many of those involved are no longer involved in managing mail systems for the majority of their time, and so have less immediate interest in pushing further development. Exim is also a mature project - it has wide functionality and is fairly feature complete. Many of the requests for additional functionality tend to be addressing niches which have not attracted development effort. Email handling issues, protocols and solutions are also moving along relatively slowly compared to the changes when the project started.
The mailing lists are still well used for support of Exim, with a combination of new and experienced users posting on the lists. The versions of Debian supplying Exim version 3 have mostly become obsolete, so meaning that versions of Exim before version 4 can now be realistically considered obsolete.
At present, in my role as non-leader, I expect Exim to continue in a maintenance role for a number of years, unless and until significant new email handling functionality is required, more people join as active members of the project team, or another set of mail handling software takes mindshare from Exim.
As of December 2011 the current version of Exim is 4.77. The mailing lists continue to see activity.
Dịch: Lê Trung Nghĩa

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.