How do I manage dependancies?



  • So, I just started at a new place and have noticed a couple of "interesting" things. The main one being that code organisation is fucking retarded.
    There are
    - Parts split into different projects inappropriately
    - The different projects are not all in one linked solution, in fact this is not permitted for the next reason
    - Projects and their dependancies which share dependancies do not always share the same version of those dependancies! So you have dependancies along the lines of

            Project_A
             |-Project_B
             |  |-Project_C v1.7
             |-Project_C v1.5
    

    Where Project_C is missing from source control prior to v1.7 The only hint that things might have changed and that Project_A won't work (until you try building it and it errors on an unknown function definition) is that there is a file containing comments along the lines of

            THIS METHOD IS DEPRECIATED DO NOT USE
    

    Followed by an entirely commented out method implementation which just so happens to be the one required by Project_A. Helpfully, whoever "removed" this has dated the comment. August 2012. This is a method that was removed from Project_C 3 years ago. And yet, Project_A still uses it, and will not build without it being there.

    The official way to build Project_A is to do the following
    1. Build Project_B with Project_C v1.7 (as there is no source available for any other version)
    2. Copy the newly built Project_B into Project_A's directory and build Project_A
    3. Hope this works and that Project_B doesn't rely on anything in Project_C that has changed since v1.5

    Any changes made to Project_B are done and tested as a part of the Project_B solution, and so are tested using Project_C v1.7.

    Somehow this entire process is considered "better" than just fixing Project_A to work with Project v1.7

    And this is just my second week here...


  • :belt_onion:

    @Nocha said:

    DEPRECIATED

    Bonus points if it's speeld that way in the codebase.

    Paging @accalia


  • FoxDev

    @sloosecannon said:

    Paging @accalia

    why page me? i have a cellphone you know. you could just call or text me isntead of paging me and making me call you back.

    :-P



  • So the word 'depreciated' is now deprecated for non-fiscal use?

    Filed Under: 'bit rot' doesn't actually involve wear and tear on the software, unless you've got really old media.



  • Yup, that comment was copied verbatim. 😟



  • @Nocha said:

    Projects and their dependancies which share dependancies do not always share the same version of those dependancies!
    Hooray binary incompatibility!


  • :belt_onion:

    @Nocha said:

    Yup, that comment was copied verbatim. 😟

    Oh, well we clearly see why it was commented out now - If it was depreciating, that's concerning and I'd stop using it too 😛

    Nice WTF though - Have fun with that mess



  • @sloosecannon said:

    Have fun with that mess

    Yeah... This is just one of the issues I have had so far. I'm sure something will top it though just going from what I have seen so far though. Hoping it won't get much worse...



  • Have been working with something like that before, and the real fun starts when you found out that Project_C v1.5 has an even older dependancy on old version of Project_B. 😉

    Btw, since you have the "now commented out" source code of old function, maybe you should read it and try to figure out how to plug the new replacement function to ProjectA (I assume there is one), or simply restore the function in Project_C and mark it "To be used by whatever function in Project A only".



  • This was Project_D this morning. I hate you for giving the universe bad ideas.


Log in to reply