A general Weng rant: Version Migration, DLL Hell, and More


  • Garbage Person

    As you may or may not be aware, I am in overall charge of development and maintenance for what is essentially a service-oriented rapid application development framework. Conceptually, it's a set of domain specific lego blocks you plug together with a homebrew specification language and some SQL to build complex customer applications on no time and no budget. Really sexy.

    There are 3 versions of the platform in active use, 1 2 and 3.
    1 only has a production environment and most of the source code is presumed lost. It is 32-bit Windows only and therefore needs to be retired by 2018 as a result. There is a vague chance that we may be able to do that if we can get project funding. Maybe.

    3 is vastly modernized, works on real operating systems, and doesn't suck.

    2 has a devtest and production environment, and devtest runs a modern version of the code with many fixes and enhancements. In version 2, there is a central DLL that defines service communication and (inexplicably) contains a bunch of utility stuff. Theoretically, all running copies of every service need the same version of this, but in practice a few versions are actually compatible-ish enough to function.

    In the production environment, due to a fear of regression (because it is believed that some fixes were never checked in to source control and applied directly to production under previous management regimes), I have been frozen out of deploying the modernized builds and deploying only breakfixes. This means that there is a mismatch of the central DLL with several versions in play (about six of them).

    There is an administration tool that makes one particular call directly to the services. This call is VERY version centric, and can only successfully make the call to services with an exactly matching central DLL, meaning 'mostly none of the ones that ever need this treatment'.

    Someone clicked the button anyway and the system went into an odd state and nobody noticed. We missed a few SLA's, butts got hurt, and the corrective action process spiralled out of control without my ever hearing about it or anyone who has any ability to analyze or explain the actual chain of events beyond "I clicked the button and it said it was running but wasn't".

    What ultimately landed on my desk was a directive to add a report to the system that automatically emails our entire operations team a list of stuff that is allegedly "long running".

    1. This information is already available to them in another form and they already look at it.
    2. Most long running things are long running legitimately.
    3. Why the fuck do we email everything in this company? Are we really that fucking brain damaged? Incidentally, Reply-All is the culture here. Everybody needs all information. Replying to a subset is seen as deception and subterfuge. Except when wider audiences could actually benefit from having the information. At that point, it is to be covered under NDA (When the NDA expires I have a hilarious story about that)
    4. Reports suck.
    5. This is stupid
    6. Emailing actionable things to a distributed group inevitably ends up with people failing to coordinate and actioning things in duplicate. If you're going to autonomously generate action items, use a mechanism that allows them to be parceled out.

    After I basically said "I'm not fucking doing that", explained what was going on, and suggested that we actually version-sync devtest and prod because that would fix the damned problem, we're going to look at doing it in a few months. Maybe. Which means that I will personally be doing the work on weekends unpaid, because my team is booked wall to wall and they aren't going to let me hire any more (because we're firing loads of "developers" in a different division, and C# infrastructure programmers should damn well be interchangeable with filemaker "developers", VB6ers and mainframers.

    So let's talk about why we have versions 1, 2 and 3 all still in active use.

    Version 1 actually has subplatforms - we'll call them 0.9, 1.0, 1.1, 1.2 and 1.3 for lack of a better system. 0.9 and 1.0 are VERY different than 2 and 3, and will require a great deal of work to migrate things. 1.1 and 1.2 are conceptually different than everything else, but similar enough that they can be translated fairly simply. There is also virtually nothing in those versions. 1.3 is nearly identical to 2 and a transliteration is no big deal. I was pushing to get this shitpile killed before 2015, because I'm not sure I can actually migrate it from Windows 2003 to 2008 (32bit) without breaking it. Management's delaying tactic was to estimate the fuck out of the migrations so they could "secure funding". That lasted until a few weeks ago. Funding will not be forthcoming this year. So I have to move it to 2008. With no budget. It'll probably break. At that point, the problem will be put off until 2018 (at which point we can go NO farther, because there is NO 32bit Windows server beyond that point).

    Version 2 is very similar to version 3 (indeed, aside from some bugfixes and features that were dropped and can be readded with the application of a little money) and poses no real hazard to migration to v3. It in and of itself could also be migrated to work on 64bit Windows without any real work (just twiddling of build configuration from AnyCPU to x86 on projects with 32bit dependencies). Naturally, we also wasted time and estimated this migration. This is the priority. No funding, but we have a mandate to do it.

    We have a version 4 in experimental stages now. Fully backwards compatible to v3, vastly modernized codebase, no more Stupid XSLT Tricks*, and hugely beneficial performance/reliability wise.

    * I'll have to tell you about this some time.



  • Just setup a cron/task to email a copy of the form you apparently already have with long running tasks every hour. Done. Unless they were awfully specific ;)



  • Another possibility is telling them to fuck off and finding a job at another company.
    It seems to me that, statistically speaking, another company would probably be better...


  • Garbage Person

    Should be looking at a conclusion to the annual review saga soon. Either they buy my happiness or I do that.



  • @Weng said:

    build complex customer applications on no time and no budget. Really sexy.

    Is that sarcasm or some marketing speech?


  • Garbage Person

    It's actually truth. Well, the 'no time and no budget' thing is a slight exaggeration, but with 40 hours and $3200 we deliver what is traditionally in this industry a 6 month million dollar undertaking.

    Real groundbreaking shit, but highly domain specific.


  • Discourse touched me in a no-no place

    What are you no longer allegedly a, btw?


  • Garbage Person

    ... Well, it used to be Passable Poster. Which I no longer have.



  • @Weng said:

    Either they buy my happiness or I do that.

    I'm rather of the opinion that if an employer needs to buy your happiness then there isn't a figure high enough to do so, and you should leave either way.

    As they probably know that, they will make an offer that they think will be enough to keep you until the current emergency passes - except that the emergency will be longer than they think.

    You should be looking already!


  • Garbage Person

    Oh, there's a figure that'll keep me indefinitely.

    Mostly because on a sick and perverse level I like this.


  • Discourse touched me in a no-no place

    @Weng said:

    ... Well, it used to be Passable Poster. Which I no longer have.

    Ah - sorry about that.


  • FoxDev

    be thankful that you don't depend on the GAC.

    now THAT is DLL hell.


  • Garbage Person

    If you version your assemblies (we don't, because reasons) GAC ain't bad.


  • FoxDev

    up until someone forgets to increment the version..... yep. hell.

    also the need for the GAC is pretty weak these days. just put your program DLLS together in you install directory. it's not like that extra couple of megs will be missed these days.


Log in to reply