Restrict cluster size with closed-source module in otherwise open-source program

I work in an academic research institute heavily dependent on high-performance computing. In the 10 years we have developed our own Fortran code which is very well regarded and can run on very large clusters. In order to have the larger research community benefit from the code, we are considering making it open-source. However, since our funding is highly dependent on the research we can perform with the code, we would be kind of shooting ourselves in the foot.

One of the ideas is to limit the number of CPUs the code can run on, e.g. maximum 1000 CPUs instead of the 100,000 we use. That way the global research community can benefit from the code, but we would be having an advantage on the size of the problems we can run.

Is such a feature conceptually possible? And how could such a feature be implemented?
Essentially we would like to open-source the complete code, but limit the parallelization (using MPI) to a fixed number of MPI threads, for example using a (closed-source) module.

1

You are trying to let the research commmunity benefit by having them be able to do what you do, without having them be able what you do. That sounds like you haven’t really made a principled choice yet.

Software solutions like that in open source software aren’t likely to work: the code is open source, after all. The first thing other institutions will do is rip out the closed source bit, replace it by an open source bit without such a limitation, and then everybody will use that.

There might be a compromise possible: don’t open source the software, but sell licenses. Institutions with licenses also get the right to read and modify the code, but not to distribute it. Charge on a yearly basis. That way you can maybe make up for the loss in funding by taking some of theirs.

Another option is to release an older version, that you keep updated but always lagging behind by some number of years. However, an open source community might take up the project and develop new features faster than you do (or there might not; most people overestimate the interest others have in their software).

Or just release it and make use of the work others do on it. You’ll always be the top experts on the software.

This can’t really be done.

The idea behind open source is that the source is open, in other words, people will have access to it. From Wikipedia:

In production and development, open source as a development model promotes a universal access via a free license to a product’s design or blueprint, and universal redistribution of that design or blueprint, including subsequent improvements to it by anyone.

By providing universal access to the design or blueprint, even if the released version is limited only to 1000 cores, it would be quite easy to simply change that number to 100000 or something.


Here are some options of what you could do instead:

  • Consider releasing the code under a license that restricts users of your code
    • This is difficult, in practice, because you can’t really control if others follow the terms of your license when it leaves your hands
    • If you decide to go this route, consult a lawyer – Legal assistance is off topic on Programmers stack exchange
  • Release a closed source API library that allows other researchers to gain your functionality without having access to the code itself.

1

There is very little you can do to limit what others will do with your source code. They can make another module from scratch that can unlock the multiprocessing capability, or even improve it: it will cost time and expertise but if it is important to them, they will do it.

With ten years head start, you still have the opportunity to use your experience and knowledge of the code to continue to make the best research, even if you give others the source code that allows them to replicate your experiments. Your funders may even have more reason to go to you, as your research impact may be greater if you are leaders of an open source project that is used at several universities.

Instead of open source, you can try to restrict others legally, by publishing your source but putting proprietary restrictions on the source licence. I can think of several projects that have done this: Ghostscript, AT&T Unix, Microsoft .NET and Xerox PARC Smalltalk-80. While those ones eventually went fully open source, I expect that there are other less well-known ones that still place restrictions on how licensees use the source code. Of course, while publishing your source will mean those with less respect for the law may break the terms, it should keep bona fide academic researchers from running your code on
supercomputers as powerful as yours.

3

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa

Restrict cluster size with closed-source module in otherwise open-source program

I work in an academic research institute heavily dependent on high-performance computing. In the 10 years we have developed our own Fortran code which is very well regarded and can run on very large clusters. In order to have the larger research community benefit from the code, we are considering making it open-source. However, since our funding is highly dependent on the research we can perform with the code, we would be kind of shooting ourselves in the foot.

One of the ideas is to limit the number of CPUs the code can run on, e.g. maximum 1000 CPUs instead of the 100,000 we use. That way the global research community can benefit from the code, but we would be having an advantage on the size of the problems we can run.

Is such a feature conceptually possible? And how could such a feature be implemented?
Essentially we would like to open-source the complete code, but limit the parallelization (using MPI) to a fixed number of MPI threads, for example using a (closed-source) module.

1

You are trying to let the research commmunity benefit by having them be able to do what you do, without having them be able what you do. That sounds like you haven’t really made a principled choice yet.

Software solutions like that in open source software aren’t likely to work: the code is open source, after all. The first thing other institutions will do is rip out the closed source bit, replace it by an open source bit without such a limitation, and then everybody will use that.

There might be a compromise possible: don’t open source the software, but sell licenses. Institutions with licenses also get the right to read and modify the code, but not to distribute it. Charge on a yearly basis. That way you can maybe make up for the loss in funding by taking some of theirs.

Another option is to release an older version, that you keep updated but always lagging behind by some number of years. However, an open source community might take up the project and develop new features faster than you do (or there might not; most people overestimate the interest others have in their software).

Or just release it and make use of the work others do on it. You’ll always be the top experts on the software.

This can’t really be done.

The idea behind open source is that the source is open, in other words, people will have access to it. From Wikipedia:

In production and development, open source as a development model promotes a universal access via a free license to a product’s design or blueprint, and universal redistribution of that design or blueprint, including subsequent improvements to it by anyone.

By providing universal access to the design or blueprint, even if the released version is limited only to 1000 cores, it would be quite easy to simply change that number to 100000 or something.


Here are some options of what you could do instead:

  • Consider releasing the code under a license that restricts users of your code
    • This is difficult, in practice, because you can’t really control if others follow the terms of your license when it leaves your hands
    • If you decide to go this route, consult a lawyer – Legal assistance is off topic on Programmers stack exchange
  • Release a closed source API library that allows other researchers to gain your functionality without having access to the code itself.

1

There is very little you can do to limit what others will do with your source code. They can make another module from scratch that can unlock the multiprocessing capability, or even improve it: it will cost time and expertise but if it is important to them, they will do it.

With ten years head start, you still have the opportunity to use your experience and knowledge of the code to continue to make the best research, even if you give others the source code that allows them to replicate your experiments. Your funders may even have more reason to go to you, as your research impact may be greater if you are leaders of an open source project that is used at several universities.

Instead of open source, you can try to restrict others legally, by publishing your source but putting proprietary restrictions on the source licence. I can think of several projects that have done this: Ghostscript, AT&T Unix, Microsoft .NET and Xerox PARC Smalltalk-80. While those ones eventually went fully open source, I expect that there are other less well-known ones that still place restrictions on how licensees use the source code. Of course, while publishing your source will mean those with less respect for the law may break the terms, it should keep bona fide academic researchers from running your code on
supercomputers as powerful as yours.

3

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật