This page provides tips to help you develop successful tools on Toolforge. If you have useful advice,please share.

All code in the ‘tools’ projectmust be published under anOSI approved open source license. Please add a license at the beginning!
A clear license is very important. It explains the rights that you are willing to grant to others who want to use or modify the software you built. Based on the general principles of the Wikimedia movement.
To learn more about choosing a license for Wikimedia seeWikimedia movement.
The two easiest options for your licenses are:
https://choosealicense.com/ is a good explanation of differences between many Free and Open Source licenses. Be aware the some of the licenses described there are not OSI approved however, so make sure to check against theOSI list before using a license for your project.
License your source code and document that with a LICENSE or COPYING file in the tool's home directory and header comments in the source code.
Programs running inKubernetes webservice containers have access to sharedNFS directories. This shared access can be used to share files between multiple tool accounts. This is the least portable method of sharing andmay not be supported in all future Toolforge services.
/data/project/shared directory, which is readable (and potentially writeable) by all Toolforge tools and users. In this directory are available, for instance:/data/project/<tool> (including the tool's code) are also readable by any other tool, unless files permissions are modified (seeHelp:Toolforge/Tool accounts#File permissions)https://toolsadmin.wikimedia.org/tools/id/<tool>/maintainers/. (It may be appropriate to create a new tool to house the shared code.)Find co-maintainers for your tools who can help out at least with starting/stopping jobs when needed.
See the Tool Docs guide for templates and guidelines about how to document your tool. This is essential for others to know how it functions and to help maintain it into the future.
Tools hosted on Toolforge should create a page in theTool:namespace, which either contains documentation or links to the page or repository where you maintain your documentation.
Operating in the open is essential to the success of Toolforge projects.
Things should work on mobile.
Basic descriptions should be clear to people who are less-familiar/non-technical/English-as-a-second-language.
Add your tool toToolhub.
There are many things to think about when you are planning to build a tool.
Follow theToolforge quickstart guide to make sure that you have all of the accounts and logins you need to begin developing tools with Toolforge.
Keep passwords and other credentials (OAuth secrets, etc) separated from the main application code so that they are not exposed publicly in your version control system of choice.
We recommend using theenvvars service to store credentials and make them available as environment variables for your application.
Make many small tools that each do one specific task rather than a catch-all tool that does many different tasks.
If you will be doing heavy processing (e.g., tool test runs), please use the development environment (dev.toolforge.org) instead of the primary login host (login.toolforge.org) so as to help maintain the interactive performance of the primary login host.
The dev.toolforge.org host is functionally identical to login.toolforge.org
Even when running on dev.toolforge.org, your processes may be killed without notice by system administrators or automated watch processes if performance of the shared server is severely impacted.
| The bastion servers do not have compiler tools such as gcc installed. If you want to compile something, seeHelp:Toolforge/Troubleshooting#There is no C/C++ compiler. |
You'll want to use public version control for your tool. You can learn more about how to use version control with Toolforge here:Help:Toolforge/Version Control in Toolforge.
Do you have experience that might help another user? Please share it (or point to it) here!
If your tool is a web application, you should include some useful links on it for users. For example:
See more ideas and examples inphab:T202949.
Support and administration of the WMCS resources is provided by theWikimedia Foundation Cloud Services team andWikimedia movement volunteers. Please reach out with questions and join the conversation:
Use a subproject of the#Cloud-ServicesPhabricator project to track confirmed bug reports and feature requests about the Cloud Services infrastructure itself
Read theCloud Services Blog (for the broader Wikimedia movement, see theWikimedia Technical Blog)