I came across a post today on The Inquisitive Coder via the excellent The Morning Brew. The title of the post is “How Do You Pick Open Source Libraries?”. While his question is focused more on traditional programming libraries, and not specifically PowerShell, I think a lot of his decision points are applicable.
I’ve often struggled with the same kind of dilemma. Do I download and utilize open source PowerShell cmdlets out there or do I just solve the problem myself? I think traditionally I’ve always tended been a little more “re-invent” my wheels rather than lock into something others have already done. In the early days I could probably get away with that, it allowed me to learn PowerShell more fully and certainly developed my programming skills to a much greater extent. There also wasn’t much in the way of true open source cmdlets, it was more example code on blogs.
I’ve been in a situation over the last year or so where, at least at work, downloading anything and particularly “open source” are evil things to be forgotten and never spoken of. So wheel re-invention is singular and absolute in necessity.
However recent changes in ownership and management have created a sea change that is likely for the better. So I have been much more conscious of where my internal barometer is as far as what constitutes quality and dependable open source PowerShell code, particularly modules and cmdlets. I would not have much of a dilemma with PowerShell Community Extensions, they have a track record going back to the early v1.0 days. There is more deliberating when the cmdlets are providing more niche solutions, particularly when I fall into those niches. For example what about the BizTalk provider or the PowerEvents cmdlets.
What should I build myself and what should I borrow, saving time and energy, yet also inheriting a dependency for? What criteria do you use either personally or professionally when you are evaluating open source software in general, but PowerShell code in particular?