We are writing a lot of code, that are very useful in the context of a given project. Sometimes code is just written for a specific purpose, but often times it would save time in the future if it can be reused, potentially saving time in future projects.
In addition, if code is well written and well documented, easy to deploy, the developer will get better visibility and higher gratification, seeing that his or her work has a long-term impact.
For products not actively used: A random archaeologist in a long future can download it and use it directly or with some acceptable work, but it not lost.
For products actively used: People continue using it in the future and the project is maintained with an active team.
1. If you can make your software be part of another bigger well know project will be better exposed. It can also help the quality of the software. If you can make it part of something like bioconductor.
Applicable to all products:
1. Sexy webpage where you can actually:
2. Search engine optimization (SEO) so people can find your product when they search.
3. Data should contain on their metadata “produced with software X”, this is something that is done by most mainstream software. Ex: Gimp.
4. Give more courses about the software inside the user community of the product domain using the problems the product solve as a hook so they get interested.
5. Use most popular products to advertise less popular products.
6. Have the software installed and available in demo machines so it can be tested by users.
Applicable to scientific products:
7. When the data is used on available scientific databases, the metadata showing with what software was produced should be visible.
8. Papers should explicitly include a bundle with the software and an explanation of how to use it to reproduce the experiment from the raw data if possible and this data should be available. This way people interested in applying the same workflow to their problems can be it a try. Obviously exist different levels of complexity, not all software can be use by all users and this should be mentioned. NOTE: The scientist are not necessarily wanting to make the data reproducible because they cheat.
9. Going to conferences where you got the opportunity to show the software.
10. Make the software available in internal infrastructures of communities that we know will maybe use it.
NOTE: Have luck to develop a software that is successful.
What can you do:
At least point 1 of of the Exposure / Marketing section should be accomplished. Having an internal webpage or 4 lines about the page and a logo in an unknown page that nobody visits is not a solution. For sure some projects have archive part of this already.
Q: What is 'not' active?
A: Software that is not actively used, but salvageable, can be reconstructed on a new system based on the available information and documentation. Some code clearly cannot be salvaged (specific to some windows version with heavy use of undocumented internals)
Q: Website to keep information? One for software package?
A: an internal website that is not that helpful, or a page that is difficult to parse. A webpage should have some usability aspects, requirements are given.
Q: Differences are big between different softwares, how to standardize?
A: Generic aspects are searchability and google awareness, community awareness.
Q: Asking colleagues is frequently better than google
A: Be awareof self advertisement of the colleagues own code..