[CXX-1247] Project should build against vendored copy of C driver, by default Created: 08/Mar/17  Updated: 18/Apr/18  Resolved: 17/Apr/18

Status: Closed
Project: C++ Driver
Component/s: Build
Affects Version/s: None
Fix Version/s: None

Type: New Feature Priority: Major - P3
Reporter: J Rassi Assignee: Unassigned
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

We should consider vendoring a copy of the C driver into third_party/, and making the default behavior of the build system to build against this vendored copy. If we do this, we should also preserve the ability to optionally build against the system version of the C driver, for the sanity of package maintainers.

Pros of doing this work:

  • Users would only have to build/install one driver instead of two (related point: no more linking headaches, no more LD_LIBRARY_PATH headaches, no more pkg-config / include dir / LIBMONGOC_DIR headaches, at least to the extent that those headaches relate to the C driver). This would vastly reduce the amount of time/effort it currently takes for a new C++ driver user to get up and running: they wouldn't even necessarily need to know what the C driver is.
  • Users would only have to follow one upstream source for security fixes / bug fixes.
  • Diagnosis / reproduction of user issues becomes easier, for users who are using the vendored copy (we'd automatically know what C driver configure flags they used, for example).

Cons of doing this work:

  • For any security fix / bug fix releases of the C driver that affect the C++ driver, we'd want to follow immediately with a C++ driver release (CXX-584 would make this not so bad, though).
  • For any feature releases of the C driver, our "vendored C driver" users would have to wait for the next C++ driver feature release in order to use new features.
  • More build maintenance work for us, long-term.

Note also that the pros become somewhat moot if we get the C/C++ drivers into the major packaging ecosystems and start to ship binary packages (since the C driver would be installed automatically as a C++ driver dependency, and users would be able to get C driver updates as part of their normal software update process), under the assumption that most new users would install the driver from these packages.



 Comments   
Comment by A. Jesse Jiryu Davis [ 17/Apr/18 ]

We won't vendor the C driver into the C++ driver.

Generated at Wed Feb 07 22:01:55 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.