<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:58:25 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[CXX-172] on linux systems it is customary to use sonames when creating shared libraries</title>
                <link>https://jira.mongodb.org/browse/CXX-172</link>
                <project id="11980" key="CXX">C++ Driver</project>
                    <description>&lt;p&gt;I have created a patch which adds soname support when making shared libraries on linux.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://github.com/shtylman/mongo/commit/b024e7a38d0ecf38368dca177b5cf92afde61dce&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://github.com/shtylman/mongo/commit/b024e7a38d0ecf38368dca177b5cf92afde61dce&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="13384">CXX-172</key>
            <summary>on linux systems it is customary to use sonames when creating shared libraries</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="2">Won&apos;t Fix</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="ian@mongodb.com">Ian Whalen</reporter>
                        <labels>
                            <label>build</label>
                            <label>cxxmove</label>
                            <label>legacy-cxx</label>
                    </labels>
                <created>Thu, 14 Oct 2010 20:04:20 +0000</created>
                <updated>Fri, 27 May 2022 01:34:54 +0000</updated>
                            <resolved>Wed, 7 Jan 2015 16:35:00 +0000</resolved>
                                                                    <component>Build</component>
                                        <votes>2</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="799979" author="acm" created="Thu, 8 Jan 2015 12:12:16 +0000"  >&lt;p&gt;Hi Tim -&lt;/p&gt;

&lt;p&gt;In general, we are of course in favor of appropriate use of SONAME. However, the only thing worse than not having a SONAME is having one and getting it wrong. As you note, the legacy driver (both in its in-tree and now out of tree incarnations) does not have a particularly coherent design. Given the design deficiencies, the developers are unsure that we would be able to both be responsive to the inevitable bugs and minor feature requests, and honor any stated ABI without needing to bump the SONAME on every release, effectively rendering it useless. So for now we are only planning to offer source level compatibility between point releases for the legacy driver. If there is sufficient push back, we may reconsider, but for now we are not planning to invest time in establishing a SONAME for the legacy driver.&lt;/p&gt;

&lt;p&gt;Please note that we will definitely not be re-using the library name (or symbol names) for the C++11 driver, so there is no risk of confusion there.&lt;/p&gt;

&lt;p&gt;I do appreciate your taking the time to look at the proposed C&amp;#43;&amp;#43;11 interfaces and I&apos;m happy to hear that you find it promising. Your point about enterprise distributions is true (though, do take note of the RHEL C&amp;#43;&amp;#43;11 toolchain). Our hope is that the majority of new systems development can migrate to the C&amp;#43;&amp;#43;11 driver, away from the legacy driver. For developers who are not able to take advantage of C&amp;#43;&amp;#43;11, we also offer an ABI stable C driver. Our expectation is that between these three options (source level C&amp;#43;&amp;#43;03 driver, ABI C driver, ABI C&amp;#43;&amp;#43;11 driver) one will be appropriate for most needs.&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br/&gt;
Andrew&lt;/p&gt;</comment>
                            <comment id="799935" author="timn" created="Thu, 8 Jan 2015 10:14:56 +0000"  >&lt;p&gt;Hi Andrew.&lt;/p&gt;

&lt;p&gt;Thanks for the clarification. Even though you intend to deprecate the existing driver in favor of a new one, it should be clear that many projects will (at least for some time) continue to use the existing driver. Additionally, current enterprise Linux distributions will stick to that very version for the version life cycle (they promise a stable base system) and maybe only additionally provide the new driver. This is especially so since they come with older compilers with incomplete C++11 support (which they are definitely not going to update). Therefore, I would suggest to also add an SONAME to the legacy driver, as it will stick around for some time to come. Especially if the new driver were to use the same library names etc., then the SONAME might be the only thing to clearly state the proper dependencies for compiled code. Otherwise it can be helpful e.g. when later adding security-related patch or similar.&lt;/p&gt;

&lt;p&gt;I do appreciate for a new and cleaned up/simplified C++ driver. Just from my experience with the in-tree C++ driver (and not yet so much with mongo-cxx-driver) it is clear that it is not super coherent and the code could use better structuring. The commit you send already looks promising. So I&apos;m looking forward to it!&lt;/p&gt;

&lt;p&gt;Regards,&lt;br/&gt;
  Tim&lt;/p&gt;</comment>
                            <comment id="799241" author="acm" created="Wed, 7 Jan 2015 17:55:43 +0000"  >&lt;p&gt;Hi Tim -&lt;/p&gt;

&lt;p&gt;The driver is called &quot;legacy&quot; because we are planning to supplant it with a new, modern, C++11 driver, and because the legacy driver will not be brought into conformance with future drivers specifications. The new driver will be aligned with the terminology and structure of other MongoDB drivers, and will most likely be implemented as a lightweight wrapper around the C driver. We anticipate that the design of the new driver will allow us to provide a stable ABI, at which point a SONAME would become possible.&lt;/p&gt;

&lt;p&gt;If you are interested in getting a preview of what the C++11 driver might look like, have a look at this commit: &lt;a href=&quot;https://github.com/mongodb/mongo-cxx-driver/commit/c36a4043f3d766deed50c1cc39261505293711ec&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-cxx-driver/commit/c36a4043f3d766deed50c1cc39261505293711ec&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are still doing internal review and the API is likely to evolve. Once we have finished our internal review we intend to solicit public comment on the proposed driver API.&lt;/p&gt;

&lt;p&gt;Please let me know if you have any questions or comments.&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br/&gt;
Andrew&lt;/p&gt;</comment>
                            <comment id="799216" author="timn" created="Wed, 7 Jan 2015 17:29:45 +0000"  >&lt;p&gt;Ok, that makes me wonder. Why is the driver called &quot;legacy&quot;? Is there no official support for C++ anymore?&lt;/p&gt;

&lt;p&gt;Then, you provide an ABI whether you keep it stable or not. It would, however, make it much simpler if you did provide an soname as it will make dependency tracking &lt;em&gt;much&lt;/em&gt; easier. Please think about your users here &amp;#8211; most of us will track package updates on the distro level and it would be much easier if we could at least quickly see if something breaks due to a new library version indicated by an soname mismatch.&lt;/p&gt;</comment>
                            <comment id="799081" author="adam.midvidy" created="Wed, 7 Jan 2015 16:35:00 +0000"  >&lt;p&gt;we are not offering an ABI for the legacy driver, therefore we will not offer a soname.&lt;/p&gt;</comment>
                            <comment id="122098" author="ian@10gen.com" created="Tue, 22 May 2012 22:16:22 +0000"  >&lt;p&gt;@roman, JIRA is set up to send all updates to the reporter so I&apos;m pulling you off as reporter and swapping myself in.&lt;/p&gt;</comment>
                            <comment id="122097" author="shtylman" created="Tue, 22 May 2012 22:12:11 +0000"  >&lt;p&gt;Can I please be unsubscribed from this issue? Or the issue closed? if it hasn&apos;t been done in the two years it has been open it isn&apos;t going to be done. I don&apos;t care about this anymore.&lt;/p&gt;</comment>
                            <comment id="51194" author="shtylman" created="Mon, 29 Aug 2011 15:27:53 +0000"  >&lt;p&gt;How can I unsubscribe from this issue?&lt;/p&gt;</comment>
                            <comment id="25618" author="eliot" created="Wed, 9 Mar 2011 18:06:35 +0000"  >&lt;p&gt;Nothing in particular holding this up, just hasn&apos;t made it to the top yet.&lt;br/&gt;
Given the patch, will move to 1.9&lt;/p&gt;</comment>
                            <comment id="25534" author="shtylman" created="Tue, 8 Mar 2011 18:40:53 +0000"  >&lt;p&gt;Opened the following pull request which rebases the patch on top of the latest 1.8 branch&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/pull/27&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/pull/27&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Is there something holding this up or general opposition to this idea?&lt;/p&gt;</comment>
                            <comment id="21515" author="eliot" created="Fri, 17 Dec 2010 05:50:37 +0000"  >&lt;p&gt;Its triggered from the same buildbot, but just built from a separate directory.&lt;/p&gt;</comment>
                            <comment id="21514" author="shtylman" created="Fri, 17 Dec 2010 05:45:41 +0000"  >&lt;p&gt;Will the client code still live in the main repo? How will a client build be triggered? Or will it still be a part of the default build just in a separate scons file?&lt;/p&gt;</comment>
                            <comment id="21512" author="eliot" created="Fri, 17 Dec 2010 05:39:04 +0000"  >&lt;p&gt;It should really be off this:&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/blob/master/distsrc/client/SConstruct&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/master/distsrc/client/SConstruct&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We&apos;re slowly deprecating building the client from the main scons file&lt;/p&gt;</comment>
                            <comment id="21511" author="shtylman" created="Fri, 17 Dec 2010 05:32:46 +0000"  >&lt;p&gt;Is there a reason the patch wasn&apos;t accepted? Should I rebase it off the latest master again? The longer a soname release is delayed the more problems users of a c++ library will have in future upgrades.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="44766">SERVER-6514</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="20738">SERVER-3558</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="109670">CXX-42</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hrfqlj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4256</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_22279" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Server Compat</customfieldname>
                        <customfieldvalues>
                                        <label>2.4</label>
            <label>2.5</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>