Recent additions to the CURL project from me
The CURL project is a well run open source project and includes a command line tool (curl), a library for C/C++ application developers to use (libcurl) and various smaller utilities like trurl, a command line tool for URL parsing and manipulation. Since this is all publicly hosted on curls.se and github.com/curl, everyone can take a look there and contribute.
Everyone can download the current source code and build their own version of the command line tools, add the library to their product like we do for our plugins and modify them as needed. Yes, if you like, you could customize it and make your own version.
From time to time you may have made changes on your copies, which you would like to push back to the project. This could be:
- fixing a typo in the documentation or source code
- adding an option to build process
- adding a new feature
- port the project to build with a different compiler or on a new operation system
- fix a bug or improve something
Recently I personally worked to push a few things back to the project:
- Fixed typos in the source code #13393
- Improved code to avoid compiler warning #13392
- Added ENABLE_WEBSOCKETS option for windows builds #13232
- add native AppleIDN (icucore) support for macOS/iOS #13246
To make a change, you fork the project on GitHub to your account. There you can make a new branch with your changes and work on them. The project has guidelines on the website: contribute, code style and review.
Before submitting something, please let "make checksrc" check the source code for code style. The checks are very strict on where whitespaces goes and how to indent the code. But it is important to keep all the code to the same standard.
Then you create a pull request to the project pushing your code. The CURL project runs over a hundred test builds on various platforms to verify that the project still builds with all your changes. This includes trying various combinations of build options, compilers and operation systems. Since the various compilers have different options enabled, you may see errors for things your compiler doesn't complain about. Just fix them to make sure it compiles fine everywhere.
On all the tests, it is quite likely to see a several of them failing. Please inspect the errors and adjust your code. There may also a test randomly fail, but that can be ignored if the test is not broken by your changes, but a network issue in the test, e.g. a download test doesn't reach the test server for some reason. Once other other volunteers working on the curl project see your pull request, they may review code, make changes and ask you to maybe change something. This is all handled by volunteers, so don't expect someone to love your contribution, work for you or do you any favor. Some of my contributions needed several attempts until I got them well enough to get accepted.
The changes made will soon be available in our own plugins for Xojo and FileMaker. And since Claris uses the curl library for their FileMaker project for the "insert from url" script step, you may see IDN support coming there for macOS and iOS in a future release in the next years.
Everyone is welcome to help the project. Our company sponsors the project, I plan to visit the upcoming curl-up conference in Sweden and my recent contributions brought me into the top 100 authors list.