{"id":34,"date":"2007-02-13T23:57:21","date_gmt":"2007-02-14T07:57:21","guid":{"rendered":"http:\/\/www.tranzoa.net\/~alex\/blog\/?p=34"},"modified":"2007-02-13T23:58:06","modified_gmt":"2007-02-14T07:58:06","slug":"the-promise-of-open-source","status":"publish","type":"post","link":"https:\/\/www.tranzoa.net\/~alex\/blog\/?p=34","title":{"rendered":"The promise of open source"},"content":{"rendered":"<p>It&#8217;s funny how the promise of open source is an unreachable ideal.<\/p>\n<p>Let&#8217;s take a popular open source project: Thunderbird.<\/p>\n<p>Gosh, it would be nice to make a few changes to it.<\/p>\n<p>But it&#8217;s too big. And, as a guess, you&#8217;d need to spend a lot of time (and perhaps money) setting up a development environment to actually work on it.<\/p>\n<p>In an imaginary, ideal world, such a program would be made up of many clearly labeled, independent, smaller parts with clear, decoupling APIs between them.<\/p>\n<p>Yes, there would always be a bucket of shared library, &#8220;memcpy&#8221; kinds of things. But those things should just be there in an opaque monolith, always available, never obtrusive.<\/p>\n<p>And, in that ideal world, the pieces of the program would be written in a modern language (i.e. not C\/C++).<\/p>\n<p>Telling experience: A few years ago, I needed the Perl POP3 module to do something. Since the source was part of Perl, I simply modified it, sent the author\/owner (whose contact information was at the top of the source file) the change and moved on. Soon thereafter, I noticed he had imported the change in a better, more general way. That was all good and pleasant. That the program ran directly from the source was the enabling factor there.<\/p>\n<p>I wonder how much FireFox and Thunderbird would be improved if there were a Tools|Advanced button to toggle the UI\/Javascript source between the .jar file format it&#8217;s in and a fully expanded form. &#8230; And much more of the program were moved up to Javascript from C++. &#8230; Or if writing extensions weren&#8217;t so chaotic a process.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;s funny how the promise of open source is an unreachable ideal. Let&#8217;s take a popular open source project: Thunderbird. Gosh, it would be nice to make a few changes to it. But it&#8217;s too big. And, as a guess, &hellip; <a href=\"https:\/\/www.tranzoa.net\/~alex\/blog\/?p=34\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,5],"tags":[],"class_list":["post-34","post","type-post","status-publish","format-standard","hentry","category-bloggy-things","category-programing"],"_links":{"self":[{"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/posts\/34","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=34"}],"version-history":[{"count":0,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=\/wp\/v2\/posts\/34\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=34"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=34"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tranzoa.net\/~alex\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=34"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}