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.
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.
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.
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.
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.
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.
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.
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.
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.
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/.
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.