Hi all ,
We have been developing a CCTV video analytics software by leveraging computer vision and AI models and had been funded for all the experiments we have done so far !
We want to open source it to make people become contributors and improve certain parts of it and even extend it
We want to make this repo to usable by companies and make it adaptable more use cases
Kindly suggest some guidance on how to proceed
When a developer or a potential contributor lands on a repository, any fundamental questions that they have should be immediately answered. For example: What is this? What does it do? How does it do it? What does it look like? How do I try it out for myself?
The README has to be crafted to answer these questions as quickly as possible.
Then, when one wants to try it out, they should be able to download and install the tech as painlessly and quickly as possible. So, the installation process and the instructions should be written carefully.
Needless to say, the structure of the codebase, the technology and dependencies, the styles and conventions in it etc. should be as legible to the reader/developer as possible. While this may not be the case on day one, it should eventually evolve to this state.
For all of the above, one has to think of the codebase from an external developer’s, and the product, from an end user’s, perspective.
It is also important to be realistic about the expectations of adoption. How niche or wide are the problems that the tech solves? That determines usage, adoption, and eventually, contribution.
There’s not much to add beyond Kailashs response above but here goes
Q. Why do you want to open source the project? What do you want to achieve by open sourcing the project?
- Are you open sourcing because you believe in the open source ideology?
- Are you open sourcing because you want to become a thought leader in this space for companies and attract other companies to use this package?
- Are you open sourcing because you want to become a thought leader in this space for individuals and attract a broader set of contributors to use this package?
You might not have considered these questions and knowing the exact answer to this question isn’t as important as starting to think about them. Depending on what your reasons are, your priorities for the project and what the project focuses on will be different.
In general, someone already mentioned this on telegram, the open source guides by GitHub are a good resource to start from, specifically the guide on starting a project.
Also an often overlooked aspect is licensing.
Without a clear license assigned to an Open Source software project,
and one that is not among the popular FOSS licenses,
it is extremely hard for companies (or even individuals with commercial interests) to quickly adopt/integrate random code on the internet.
When choosing a license,
one aspect to consider is how does this piece of software fit in the software ecosystem around it?
Depending on how the OSS software integrates with the rest of the software ecosystem around it,
certain OSS licenses might end-up being too restrictive for potential users.
The “viral nature” of GPL is an often quoted example of licensing pushing away potential users
who do not wish to (or cannot for legal reasons) GPL-license their other code
that would be linked with this GPL-licensed code, were they to adopt/use it, and ship it.