{"id":890,"date":"2020-05-22T19:15:48","date_gmt":"2020-05-22T19:15:48","guid":{"rendered":"https:\/\/securitycurve.com\/?p=890"},"modified":"2020-05-22T19:15:48","modified_gmt":"2020-05-22T19:15:48","slug":"all-in-open-source-experiment-part-one","status":"publish","type":"post","link":"https:\/\/securitycurve.com\/?p=890","title":{"rendered":"&#8220;All in&#8221; open source experiment, part one"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"alignright size-large\"><img decoding=\"async\" data-src=\"https:\/\/securitycurve.com\/wp-content\/uploads\/2020\/05\/FOSS-communism.png\" alt=\"\" class=\"wp-image-891 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" \/><\/figure><\/div>\n\n\n\n<p>I know this isn&#8217;t security related, but I figured I&#8217;d pass it along since I read this morning that the whole open source movement (or at least large swaths of it) are <a href=\"https:\/\/www.techradar.com\/news\/why-the-entire-open-source-movement-is-under-threat-right-now\">in financial trouble as an unintended consequence of COVID-19<\/a>.  I had meant to write up this little experiment of mine eventually, but given what I read this morning, I figured I&#8217;d do a first part now to tee it up, then in a week or so do a part 2 to talk about progress so far, and then a part 3 about a year or so in. <\/p>\n\n\n\n<p>By way of background for this, it&#8217;s important that you understand that for almost 40 years I&#8217;ve been a &#8220;dyed in the wool&#8221; Windows guy.  I don&#8217;t really get &#8220;emotional&#8221; about operating systems the way some people do since I figure your OS is a tool and whatever you know best is  probably the one that will minimize hassle.  That said though, I used Windows for work &#8212; a lot &#8212; and had been using it at home also a lot.  <\/p>\n\n\n\n<p>At home I used PC DOS in the eighties, then MS-DOS, then Windows 3.x, then Windows 95&#8230; and so on down the line until Windows 10.  My BBS in high school (a WWIV-net board called &#8220;The Shadow of Death&#8221;) was on MS-DOS, the computer(s) I used in college were all various flavors of DOS\/Win3.x and aside from a brief stint of using OS X (which lasted until Apple decided to change architectures to x86 and thereby make all my existing software useless) I used Windows exclusively.  At work, same thing.  There was a ton of different equipment I used at various jobs (HPUX, Solaris, AIX, Digital Unix, Linux&#8230;  even OS\/2 at one point) but the environment I liked the best was Windows.  When I was a developer, I wrote <a href=\"https:\/\/en.wikipedia.org\/wiki\/Graphical_identification_and_authentication\">a GINA<\/a> for Windows, built PKI software on <a href=\"https:\/\/en.wikipedia.org\/wiki\/Microsoft_CryptoAPI\">CAPI<\/a>, wrote ISAPI and NSAPI filters &#8212; even did various low level stuff.  Windows and MS-DOS were so much part of my identity that I still to this day use the username &#8220;int 21h&#8221; sometimes for stuff [if you&#8217;re not familiar, int 21h <a href=\"http:\/\/spike.scu.edu.au\/~barry\/interrupts.html\">was the MS DOS software interrupt for various OS services<\/a>].    <\/p>\n\n\n\n<p>Anyway, I was blindly oblivious in my status quo until about six months back.  Then, one day I received an error on my primary laptop.  The error message consisted of a <strong>system modal dialog box<\/strong> (which basically means that the user <a href=\"https:\/\/en.wikibooks.org\/wiki\/Windows_Programming\/Dialog_Boxes#Modality\">can&#8217;t do anything else in this or any other application until the user responds to it<\/a>) telling me &#8220;The parameter is incorrect&#8221;.  That&#8217;s it &#8212; no information about specifically what parameter, who was supplying the parameter or why, what module it was happening in, or really any other details.   <\/p>\n\n\n\n<p>No big though, right?  &#8220;Just close the box and move on,&#8221; I hear you saying.  But you&#8217;d be wrong.  Because apparently there was some loop that would just cause the box to come back immediately after you close it.  No way out.  Take a look at the image below and imagine if it blocking everything else on your desktop or laptop with no way to get rid of it. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" data-src=\"https:\/\/www.icare-recovery.com\/images\/howto\/error-copying-file-folder-2.png\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" \/><\/figure><\/div>\n\n\n\n<p>I was irritated to say the least.  I tried debugging it, researching it, digging around in the event log trying to get more information, loading in safe mode, and rolling back to the last restore point. I even tried factory resetting the machine via the control panel (&#8220;system reset&#8221; I guess they call it). The second it came back up, the alleged parameter was once again apparently incorrect.  <\/p>\n\n\n\n<p>As a quick aside, this has to be the single worst error message I&#8217;ve ever encountered.  Not only does it not tell you what parameter is at issue, what value the parameter currently has, what the parameter is supposed to be, why it&#8217;s incorrect, or what a correct value for the parameter should be instead.  I mean, those would be a bare minimum compared to, I don&#8217;t know, printing a stack trace or writing to the event log about where it&#8217;s happening.  And also, come on, system modal?  Really?  Plus there was nothing of use in the event log &#8211; whatever was causing this wasn&#8217;t logging the right way <strong>even though<\/strong> the &#8220;parameter is incorrect&#8221; bullshit is *clearly* a standard error message.  It really is.  It&#8217;s defined in winerror.h &#8211; error #87 (0x57): <strong>ERROR_INVALID_PARAMETER<\/strong>.  So basically, some application (or more likely part of the OS) was choosing to get <strong>ERROR_INVALID_PARAMETER<\/strong>, call<a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/api\/winbase\/nf-winbase-formatmessage\"> FormatMessage()<\/a> to render it into text, and then <span style=\"text-decoration: underline;\">not write it to the event log<\/span>, but instead put up a system modal message box.  I know, I know&#8230;.  It makes zero sense to me either.  I suppose I could have attached a kernel debugger but goddamn it, I shouldn&#8217;t have to.  <\/p>\n\n\n\n<p>Anyway, having no Windows boot media (yeah, that&#8217;s on me for not making a restore disk), I decided to install Debian.  I figured at the time that I&#8217;d &#8220;limp along&#8221; until my cheap self worked up the strength of will to buy a new machine.  Turns out though that the experience was a pretty positive one.  In fact, it was so painless (in fact increasing my productivity in a lot of ways) that I decided I&#8217;d try getting rid of as much commercial software from my life as I could as an experiment.  Meaning, using it for as much as I can to see what the impact was. <\/p>\n\n\n\n<p>I knew there was some closed source software I couldn&#8217;t get away from so I decided I&#8217;d make some exceptions from a &#8220;quality of life&#8221; and &#8220;still being able to do my work&#8221; point of view.  Those exceptions were:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Games &#8211; Games that I play can be closed source.<\/li><li>VMWare Workstation &#8211; Since I don&#8217;t love VirtualBox and use Vagrant quite a bit, VMWare stays.  Not to mention that stuff&#8217;s expensive and I already bought the license (both for VMWare Workstation itself and also to Hashicorp for the Vagrant VMWare module).<\/li><li>Windows VM&#8217;s for Work &#8211; Windows guest virtual machines for work situations where there&#8217;s no other choice are acceptable.<\/li><li>Websites (including cloud services) &#8211; Since I don&#8217;t know websites are implemented on the provider side, I figure there&#8217;s no way to police that so can be whatever.  <\/li><li>Phone stuff &#8211; My phone is Android (which is itself open source), though I do have the Google non-free additions and a bunch of apps I&#8217;ve already bought.  They stay.<\/li><li>Conference software &#8211; Since I need to meet with people and they all want to use their own tools (like Zoom or Teams or whatever), I&#8217;ll install what I need to in order to accommodate them (though if I&#8217;m scheduling a call though, I&#8217;ll be using <a href=\"https:\/\/jitsi.org\/\">Jitsi<\/a> thank you very much).   <\/li><li>Slack &#8211; Again, because work and the client UI > the web UI.  <\/li><li><a href=\"https:\/\/www.insynchq.com\/\">Insync<\/a> &#8211; For syncing files. Yes, I could do this with rsync, but I like the UI better.  <\/li><\/ul>\n\n\n\n<p>And that&#8217;s it!  Anyway, I&#8217;m about 5-6 months into this so far and it&#8217;s working out pretty well so far.  I&#8217;ll give you more of a detailed play by play (because there are a few problem areas I&#8217;ve encountered) as time allows.  There are a few &#8220;gotchas&#8221; that you might not expect&#8230;  I&#8217;ll tease it a little bit by telling you that: a) it&#8217;s much less painful than you&#8217;d think, b) I&#8217;m WAY more productive now than I was before this on the whole, and c) it&#8217;s much more economical.  It&#8217;s not all peaches and cream &#8212; there are a few areas where I think the road could be &#8220;smoothed&#8221;, but more on that in the next post.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>I know this isn&#8217;t security related, but I figured I&#8217;d pass it along since I read this morning that the whole open source movement (or at least large swaths of it) are in financial trouble as an unintended consequence of COVID-19. I had meant to write up this little experiment of mine eventually, but given [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[4],"tags":[59],"class_list":["post-890","post","type-post","status-publish","format-standard","hentry","category-security","tag-foss"],"_links":{"self":[{"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/posts\/890","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/securitycurve.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=890"}],"version-history":[{"count":0,"href":"https:\/\/securitycurve.com\/index.php?rest_route=\/wp\/v2\/posts\/890\/revisions"}],"wp:attachment":[{"href":"https:\/\/securitycurve.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=890"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/securitycurve.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=890"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/securitycurve.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}