A CO-FOSS project reflects a relationship between an instructor, a student team, and a non-profit client during a software development course or capstone experience. Operationally, the project can proceed in the following way:
- The instructor interacts with the client prior to the course to identify a mission-critical activity for which an app can be developed or enhanced, and then writes a requirements document that describes the app and/or its desired enhancements.
- During the course, the students develop or enhance the app as they learn the principles and practice of open source software development.
- Students interact with the non-profit in an agile style to ensure progress toward completing the requirements.
- Students use modern tools to develop the code, run unit tests, write user documentation, manage the code repository, and conduct face-to-face meetings with the client. In the past, CO-FOSS projects have used Eclipse, an Apache server, PHP, JavaScript, jQuery, Android Java, MySQL, GitHub, and Google Hangouts. Today’s projects would use different tools to achieve similar goals.
- The completed work is kept in a public repository (GitHub, e.g.) under a GPL-style open source license, allowing it to be reused for another client, or else further enhanced for the same client, by other CO-FOSS projects in later courses.
Because managing such a course and project requires an unusual amount of instructor effort, NPFI provides a limited number of grants to individual instructors and students.
- A faculty grant helps support the extra work that an instructor needs to do while preparing a new CO-FOSS project. That work would include one or more of the following activities:
- Finding a non-profit client and an outmoded clerical activity (e.g., volunteer scheduling) that a new software application could replace.
- Developing a requirements document for a student project that would customize that software app to replace that activity.
- Developing a set of milestones and integrating it with a course syllabus so that students in the course can make progress toward completion of the app throughout the course.
- Finding and establishing a relationship with a software developer to deploy and/or support the software after the students have completed the project.
- A student grant provides support for a student to continue developing a CO-FOSS app with the instructor’s supervision after the course is completed, often as an 8-week summer internship.
A faculty grant provides up to $5000 to assist with the development of a new CO-FOSS course and app for a new non-profit client. This money can be used in a variety of ways, such as supplementing the instructor’s salary or purchasing a mobile device for running the software during the development period.
A student grant provides up to $2500 to support a single student’s carrying on with the development or deployment of the app for several weeks after the course is completed. It is expected that the instructor will provide oversight for the student’s work during that time, and the institution will provide matching support, for example in the form of room and board.
NPFI can support 1 faculty grant and 1 student grant per academic year. Applications are reviewed in the order in which they are received.