<!DOCTYPE html>
<html lang="en"><head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1"><!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Our Founders look back on 20 Years of the ASF! | Blogs Archive</title>
<meta name="generator" content="Jekyll v3.9.3" />
<meta property="og:title" content="Our Founders look back on 20 Years of the ASF!" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="We recently connected with eight of the original 21 Founders of The Apache Software Foundation to take a look back at 20 years of the ASF. Joining us are Sameer Parekh Brenn, Mark Cox, Lars Eilebrecht, Jim Jagielski, Aram Mirzadeh, Bill Stoddard, Randy Terbush, and Dirk-Willem van Gulik, who were generous enough to take a walk down memory lane with us. Q: When did you first get involved with the Apache HTTP Server? What was your role? &nbsp;Mark: during my PhD work in 1993 I was creating new features and bug fixes for the NCSA Web server; I&#39;d also found and fixed a number of security issues and was invited by Brian Behlendorf to join the core development team of Apache in April 1995, a few weeks after it was formed. &nbsp;Randy: I first got involved through finding a few like minded people that were working with the NCSA Web server. I began exchanging patches and ideas for how to make the NCSA server scale to some of the hosting challenges that we were all facing as commercial use of the Web began to grow. Late 1994 if I remember correctly. &nbsp;Dirk: I got involved in the early NCSA Web server days &ndash;I was working for a research lab; and we needed specific functionality to allow us to make small geographic subset on huge satellite images available as an &#39;image&#39;. Something novel at that time &ndash;as the normal way to get such images was to fill out a form; fax it and then wait a few months for a large box or container with tapes to arrive. It would then take weeks or months to load up those tapes and extract just the area you needed. &nbsp;Jim: in 1995, initially in providing portability patches to Apple&#39;s old UNIX operating system, A/UX and then in adding features, fixing bugs and working on the configuration and build system. &nbsp;Lars: around 1995 during my studies I developed an interest in Unix and Internet technologies, and in Web servers in particular. I actually set up the first official Web site for the University of Siegen in Germany. Well, we didn&#39;t use Apache in the very beginning, but very quickly realized that the Apache HTTP Server is the way forward. I started helping other Apache users in various online forums, and about a year later I was asked by a German publishing company to write about the Apache HTTP Servers which was published in 1998. &nbsp;Sameer: I became involved when I perceived a need in the marketplace for an Open Source HTTP server that supported SSL. Ben Laurie had developed Apache-SSL but it was not possible to use it within the United States due to patent restrictions. My company developed a solution. &nbsp;Bill: it was 1997, and I had just become Chief Programmer for IBM&#39;s proprietary Lotus Domino Go Webserver. LDGW needed a lot of enhancements but the code base was fragile and HTTP servers, by this time, were no longer a source of revenue. Exploring alternatives to continuing development on LDGW, we found that the Apache HTTP Server had almost everything we needed in a rock solid implementation. I can&#39;t overstate how big a deal it was in IBM at the time to consider using Open Source software. &nbsp;Aram: late 1990s ...I migrated Apache HTTPD v1 to Linux and SCO Unix. I also had the first easy to follow Website dedicated to guiding users on setting up IP-virtual hosts/websites. Q: How did you get involved with the original Apache Group? &nbsp;Dirk: satellite images were both bulky, required complex user interaction to select an area on the map, and someone sensitive from a security perspective; so we needed all sorts of functionality that was not yet common in the NCSA Server, or the more science oriented data server of CERN. &nbsp;Randy: I got involved through what was standard operating procedure for me: hunting Usenet for other people that were trying to solve the same challenges I was. &nbsp;Aram: I had been sending commits to NCSA and getting rejected when I heard about a bunch of guys leaving to go start a new Web server. I went along a bit after they had started to see if I can get some recognition for Linux and SCO which had been my responsibility at the company I was working for. &nbsp;Sameer: I got involved when I began work on our SSL solution. &nbsp;Lars: in 1997 I published the first German book about the Apache HTTP Server. When documenting and testing the various features of Apache I ran into some issues and bugs and ended up submitting a fairly large number of bug reports and some patches to the Apache Group. I guess after a while they got tired of all my bug reports and invited me to become a member of the Apache Group... and therefore allowing me to apply the bug fixes myself. &nbsp;Bill: the Apache Group&#39;s home page indicated that they would welcome company participation in the project. That opened the door for James Barry, an IBM Product Manager, and Yin Ping Shan, an IBM STSM, to contact Brian Behlendorf about IBM&#39;s participation in the project. I had the opportunity to meet Brian at IBM in RTP soon after and I was assigned to be the sole IBM developer to participate in the Open Source community. Did I mention how terrified IBM was of Open Source? My ability to work on future proprietary IBM products &ndash;and stay employed with IBM&ndash; was deemed &#39;at risk&#39; because of &#39;contamination&#39;. Q: When did you first meet other members of the Apache Group in person? How did it feel? &nbsp;Sameer: I&#39;ve known Brian since we were both undergrads at UC Berkeley, so I met him before my involvement in the Group. &nbsp;Randy: I first met other members face-to-face when we all gathered at Brian Behlendorf&#39;s apartment in San Francisco. Someone else will need to help me with what year that was. &nbsp;Bill: ApacheCon 1998 in San Francisco. &nbsp;Jim: The first time I met other members was at the first ApacheCon. I was, and still am, located on the East Coast of the US and most of the other members, who were not based in Europe, were on the West Coast, or close to it. What was cool was how despite not meeting each other face-to-face until then, how much it felt like we were old friends. &nbsp;Mark: IBM had sponsored a get-together of the team in 1998 in California. We&#39;d only ever communicated by email and so meeting in person really helped us to understand each others motivations and interests as well as set the stage for the legal entity. [photos attribution (CC BY) Mark Cox. Gallery at https://www.flickr.com/photos/iamamoose/albums/1381277/with/63963566/] &nbsp;Lars: the first time I met the members of the Apache Group was at the very first ApacheCon held in San Francisco in 1998. I had just finished my master degree and it was my first trip to the USA. Don&#39;t forget to show them the first picture that shows all Apache core developers at ApacheCon 1998! &lt;/p&gt; [photo attribution (CC BY) Mark Cox. Tagged image at https://www.flickr.com/photos/iamamoose/63963722/in/album-1381277/&nbsp;; gallery at https://www.flickr.com/photos/iamamoose/albums/1381277] &nbsp;Dirk: extremely natural; as if you knew these people for years, which we did at that point. Just a few minutes to adjust to how people looked; and another hour or so to adjust to their particular flavor, accent or dialect of English; something which is not easily apparent for a non-native speaker from their emails. And strangely &ndash;from that moment on&ndash; reading their emails would ring that accent, that regional voice; while the actual physical appearance would fade quickly. &nbsp;Aram: I believe it was a while before I attended an Apache Conference. It was in Florida, before Y2K. It was pretty weird sense of being anonymous (since I didn&#39;t have any other online profile) and being known. I sort of hid my name tag inside of my shirt walking around and at the table conference I sort of stood to the side and let the other guys take questions. I&#39;m not sure most of the other developers knew who I was for most of the conference.&nbsp; Q: What made the Apache Group decide to incorporate the ASF? How quickly was this decision made? &nbsp;Jim: as the Internet and the Web started really getting entrenched, we knew that we needed something more legal to protect ourselves. Also, at the time, IBM wanted to use Apache httpd as the basis of their Web server, and they were uncomfortable with the idea of using software from some nebulous, semi-official gathering of people informally called &quot;The Apache Group&quot;. So it was a perfect storm situation where we were ready to incorporate and had an ally who could, and did, help us. The decision was reached very quickly. &nbsp;Dirk: we relied on the NCSA Server; we were just a bunch of patches on top of their software. So when key staffers left to form what ultimately would become Netscape &ndash;we had to consider the options. At the same time; the market was heating up. Apache was becoming quite dominant. Microsoft had entered the fray. The crypto needed for SSL security attracted regulatory attention. Some browser vendors had a hard time keeping up. And I strongly suspected that things like patents where being filed &#39;on our code&#39;.&nbsp; Simultaneously &ndash;IBM, whose Domino WebServer was rapidly losing market share...and they were looking at Apache&ndash;to switch to &#39;Open Source&#39;. But with NCSA dropping out &ndash;there was no clear legal owner of it all. And the impact of the USL vs. AT&amp;T trials over BSD had just started to sink in. So these things; all combined ...and of course the, for me as a European, rather aggressive litigation habits of Americans... conspired and made for a quick decision. &nbsp;Randy: we were operational as the Apache HTTPD Server Project for a few years before deciding to incorporate. This was motivated by a number of things. As I remember, some of those motivations were to put in place some legal protections for contributors and the companies that some of us worked for. Other reasons were to help us form an organization that could being receiving both cash and other donations to help fund the vision that we were developing.&nbsp; The ultimate goal was to build an organization that would support growing the mission of Open Source development participation and adoption. &nbsp;Bill: the decision to incorporate was triggered by IBM&#39;s interest in participating in the project.&nbsp; Apache Group was very open minded in listening to IBM&#39;s concerns and together, Apache Group, and IBM hammered out an engagement model that we believed would be reasonably lightweight while protecting the core interests of Apache Group and participants. I think IBM&#39;s interest in the project also provided another data point validating the viability of Open Source. &nbsp;Mark: see the notes in Apache Week which gives the background...http://www.apacheweek.com/issues/98-07-10#coremeeting Q: What Apache projects were you contributing to? &nbsp;Aram: HTTPD, HTTPD/2, Commons, a couple of minor ones here and there. &nbsp;Dirk: mostly the Web server back in those days. And helping various XML and Java projects, such as Tomcat, getting out of the gate. &nbsp;Randy: my primary involvement was the Apache HTTPD Project along with my participation as a Board member. &nbsp;Jim: I am still contributing to Apache httpd, even to this day. I also contribute to several other Apache projects, to various degrees, including Apache Portable Runtime, Apache OpenOffice, Apache Pulsar, the Apache Incubator &hellip; &nbsp;Mark: my involvement in the Apache HTTP Server continued for some years and I handled security issues, occasional release manager, and wrote modules like mod_status. Outside of the ASF, together with Paul Sutton, another core developer, we launched Apache Week. Apache Week was a weekly look at the state of Apache development and ran from February 1996 through to 2004. My work life revolved around Apache too, founding C2Net in Europe which created Stronghold, a commercially supported version of Apache with security. &nbsp;Sameer: just the HTTP Server. &nbsp;Bill: Apache HTTP Server, Apache Portable Runtime. &nbsp;Lars: apart from the Apache HTTP Server project I joined the Conference Planning project when it started. Attending ApacheCon in 1998 left a big impression on me. Meeting the other developers was amazing, but also having a chance to talk to some of the users. It made me realize that we needed to provide regular opportunities for users and developers to meet. A lot can be done via Web sites, Wikis, and mailing lists, but nothing beats meeting face to face. I helped plan ApacheCon events from 2000 until 2009 and served as VP for the Conference Planning project for the last two years. Q: What is your current involvement with the ASF? What are you up to today? &nbsp;Jim: I am still quite involved with the ASF and was fortunate enough to have served on the board since Day 1 until last year when I took a break. I accepted the nomination to run again this year so by the time this is published, who knows, I might be a Director again. But as I said, I still am very active on the Foundation and the Project efforts. &nbsp;Dirk: little; some ASF-wide stuff in general and security responses/coordination in particular. &nbsp;Randy: unfortunately, my schedule does not allow me to be involved with the ASF these days. &nbsp;Aram: I&#39;m emeritus. About 16 years ago I joined a company that does not allow contribution to Open Source and have been sidelined since then. I&#39;m still an avid reader of the mailing lists and try to keep up with the Board updates. The good news is that in the last few months I have changed enough minds that there is a new legal document going into effect that removes the no-contribution rule. &nbsp;Mark: one of the main things Apache Week did was track security issues in the HTTP Server project, providing a database of vulnerabilities as well as commentary and severity levels. I rolled this up back to the project and this led to me taking a more focused role on helping with security issues across Apache projects. As Vice President for ASF Security I still work every week on helping projects handle the security issues reported to them. I maintain the CVE Numbering Authority for Apache and am on the CVE board. Sameer: I don&#39;t do very much with the ASF other than use many ASF Open Source projects. These days I am primarily focused on being a Dad to my 3 kids. Bill: I watch from afar as an emeritus member of the ASF. I follow the Members mailing list. Lars: I&#39;m not as active any more than I used to be in the ASF. That&#39;s especially true since my son was born in 2017... as far as possible I still try to stay up-to-date with the Apache HTTP Server project, Community Development, and with the Apache Security Team. In my day job I am self employed working as an IT consultant, typically with a focus on IT Security Architecture. After living for 10 years in London I&#39;m currently in the process of moving to Berlin. Q: Could you share how the ASF and The Apache Way has impacted your work? How has it (the impact) changed over time? &nbsp;Dirk: like any industry/peer/professional society &ndash;it is a great place to learn, to refine, to socialize&ndash; that improves day to day professional work. &nbsp;Jim: we were lucky with the Apache Way... a lot of the decisions that made sense and were &quot;expedient&quot; when we made them have stood the test of time. I think this is because we wanted to create a place where people were welcomed and rewarded for volunteering their talents and skills and all contributions were appreciated. &nbsp;Randy: my involvement with the ASF helped me to solidify my belief that we are better at solving problems in collaborative processes. When I first discovered Open Source back in the late 1980s, it made so much sense that better solutions happened when groups of people were able to discuss and expose their work to peer review by some of the brightest minds in the computer industry. I&#39;ve had a great luxury to work with some of those people through collaboration in the ASF and other peer reviewed groups. This has made me better at what I do, and has helped me learn how to listen to others in these environments. &nbsp;Mark: the expertise and knowledge I gained through working on the Apache HTTP Server led directly to my first job offer; and through various acquisitions I&#39;m still in the same company. So I&#39;ve Apache to thank for several decades of interesting, challenging, and rewarding work. While I&#39;ve not got involved in coding for Apache projects for quite some time, my expertise and insights are still useful and I am able to keep my hand in writing the occasional script. &nbsp;Bill: the members of the original Apache Group and the Apache HTTP Server projects quite literally changed my life and world view. I walked in, as a developer &#39;assigned&#39; by IBM. Although I had to earn commit access through my contributions, the nature of my assignment was antithetical to Apache Group norms. The group accepted me, with some reluctance by some of the members. I cannot thank the members of the group enough for showing me the ropes. I listened, and learned and I am a better person for it. I am grateful for the good fortune of being in the right place at the right time to be at the center of the birth of the Open Source movement. I would like to thank all the members of the original Apache Group and my colleagues at IBM for making it possible. Q: What influence do you think the ASF and The Apache Way has had in the industry? &nbsp;Dirk: collectively we have, as an industry and as the ASF, found ways to collaborate &ndash;even though we intensively compete in other areas. And that collaboration was crucial for the open Internet; where interoperability was key. It kept the core of the World Wide Web relatively open; preventing large walled-gardens from appearing early. &nbsp;Randy: I believe that the biggest influence that the ASF has had on the industry is to facilitate participation in the process of Open Source development. While the ASF was not the first ever organization to do Open Source development, I believe that it was one of the first that actively solicited involvement from other corporations to get involved in the process. We had great experiences with a number of businesses that saw the advantages of being part of the solution and dedicated their development resources toward working with the ASF to improve the software that was being developed while bringing forward their customer&#39;s requirements. I spent a lot of time in the early days explaining these companies what Open Source was and why anyone would want to dedicate their free time to participating in software development without making money. I&#39;m happy to see that most leading technology companies understand those advantages today and many of them are active participants in the process. &nbsp;Aram: the Apache License is well known and followed by many non-ASF projects. Many of the ASF projects are leaders in their respective fields/technologies. &nbsp;Mark: the creation of the Apache License has spawned a whole generation of Open Source software that follows the ideals of Apache even when that software isn&#39;t necessarily created by The Apache Software Foundation. A meeting of a number of core Apache developers at an early ApacheCon led to the formation of OpenSSL; which, although not an ASF project, has followed the ideals of Apache and has now even adopted the Apache License for future versions. &nbsp;Lars: The Apache Way is certainly the ASF&#39;s biggest &quot;export&quot;. It has inspired many companies to implement similar principles for their internal development projects. Many of the projects at the ASF are cornerstones of the IT industry and the Internet. Open Source software and Apache software in general has enabled many startup companies to compete with the big players and be successful. Proprietary software is on the demise and Open Source software plays a central part of the long-term IT strategy of many companies. The ASF and especially the Apache License has played a big role in this. &nbsp;Bill: the ASF, and our licensing model, made Open Source acceptable to a much larger audience. The Apache Way provided an equitable way for anyone with the time and right set of skills to influence the direction of ASF projects. &nbsp;Jim: the ASF has served as the cradle and the crucible for just about every innovative technological advancement that has happened over the last decades. The Web, Java, Email, Wikis/blogs, databases, Big Data, PubSub, Machine Learning, AI... all of these technologies have their roots in the projects and communities within Apache. In many ways we have defined the industry and created several. The Apache Way is currently being recognized as the premier software development paradigm, and serves as the foundation for InnerSource, which is transforming Enterprise IT development. Q: What advice do you have for those starting in Open Source? Why is Apache a good community to become involved with? &nbsp;Jim: Open Source is about honing your skills and your talents, about working with like-minded people who value you and your talents and your contributions; a place where you gain merit based on what you do. Find a project you are passionate about and share that passion with those who feel the same; that&#39;s easy at Apache. &nbsp;Randy: for anyone wanting to participating in Open Source development, I believe that the ASF provides a great structure and community for helping newcomers navigate the challenges of getting started. You&#39;ll find a welcoming group of your peers there that will gladly guide you toward things that need to get done or hear you out about the things you believe you could start doing to participate. &nbsp;Aram: I just responded to something similar on Reddit. My advice would be to pick one or two projects where you are a user, a subscriber. Contribute to that project so that you can see the results right then and there. I have seen people try to bolster their resumes with Open Source project contributions but then when you ask about the project itself they don&#39;t know much about them. It&#39;s important not only to contribute code but to also contribute to the culture of the project and its direction. &nbsp;Mark: I&#39;ve yet to find an Open Source project that doesn&#39;t have something that someone new can help with; you don&#39;t have to be an expert with all the code to contribute to a project &ndash;I&#39;ve not written any code for Apache projects in over a decade yet there are still many ways I can add value to the ASF. With so many different projects with different userbases with different programming languages there&#39;s bound to be something that matches the skills and interest levels of folks starting out for the first time. &nbsp;Dirk: code cannot live in isolation, or on itself, for long periods of time. Code requires a community to evolve it, to nurture it, to make sure it grows in the right directions and to dampen others that may be just too esoteric to maintain long term. So it is Community Over Code. A very fragile balance. But once; if you get this right &ndash;can really make things fly. &nbsp;Bill: the ASF is an extremely open and accepting community full of really great people. Pick the project that interests you, then lurk, listen, and learn. Take the time to understand how the community works, then reach out to someone in the community and see if they would be willing to coach you. Go slow, learn, respect the sensibilities of community members and processes and you will be successful. Q: What do you think is needed to strengthen the ASF as it looks forward to the next 20 years? &nbsp;Dirk: one of our core drivers is &ndash;or was&ndash; the need for the Internet to be open and interoperable. And that this need drove all inclusive, forums such as the ASF where people could collaborate on technology and make it work well together. Even if their employers compete &ndash;or especially if their employers compete. The world has changed since &ndash;large platform players balkanize certain areas and are able to push through &#39;their&#39; technology on &#39;their&#39; agenda. This negating their need to collaboratively work with others to be interoperable. Or even their need to &#39;contribute&#39; back. And simultaneously &ndash;companies and investors are learning how to better control &ndash;or game&ndash; these collaborations; how to create &#39;pay to play&#39; Open Source foundations; and how to allow money to drive product direction. These two things break the feedback loop that allowed Apache to mature, grow, increase quality. So we need to learn how to deal with this; find new positive feedback loops and amplifiers to offset those we&#39;ve lost. &nbsp;Randy: I think that one of the things that any Open Source community would benefit from is active involvement in educational curricula. Through involvement in the education process in both K12 and beyond, Open Source communities gain relevance and participants. &nbsp;Aram: too many thoughts on this one ...I think we do need not only more communication, but better means of communication. As &quot;techies&quot; I think our communication is a bit too technical at times. One more P.S. here ... the &quot;ASF&quot; logo should be more of a brand. It&#39;s simply an umbrella project and a copyright today.&nbsp; Looking at the next 5, 10, 20 years the ASF brand should stand for good practices, open communication, Open Source, etc. &ndash;not that it isn&#39;t today ... it simply doesn&#39;t have the reach into the business world. &nbsp;Bill: interesting question. Is &#39;strengthen&#39; the right way to look at the future or is &#39;adapt&#39; a better word? People and company motivations for participating in Open Source communities have evolved and will continue to evolve in the future. The ASF, as a public charity, will need to adapt to changing requirements in order to survive and thrive. &nbsp;Lars: we must make sure that we strengthen the use of &quot;The Apache Way&quot; principles, and continue focusing on the community and individual contributors. We must learn from cases where a new contributor left a project, because the project wasn&#39;t welcoming or open enough and try to fix these issues. Innovation cannot happen without a healthy community. &lt;/p&gt; Reinforcing &quot;Community Over Code&quot; is a great way to close this out! Thank you, Aram, Bill, Dirk, Jim, Lars, Mark, Randy, and Sameer, for your thoughtful responses and sharing these great memories &ndash;it&#39;s so great to catch up with all of you. Thank you, and your fellow founders &ndash;Brian Behlendorf, Ken Coar, Miguel Gonzales, Ralf Engelschall, Roy Fielding, Dean Gaudet, Ben Hyde, Alexei Kosut, Martin Kraemer, Ben Laurie, Doug MacEachern, Cliff Skolnick, Marc Slemko, and Paul Sutton &ndash;for this tremendous gift to humanity. You have transformed our lives. Interviews by Sally Khudairi. # # #" />
<meta property="og:description" content="We recently connected with eight of the original 21 Founders of The Apache Software Foundation to take a look back at 20 years of the ASF. Joining us are Sameer Parekh Brenn, Mark Cox, Lars Eilebrecht, Jim Jagielski, Aram Mirzadeh, Bill Stoddard, Randy Terbush, and Dirk-Willem van Gulik, who were generous enough to take a walk down memory lane with us. Q: When did you first get involved with the Apache HTTP Server? What was your role? &nbsp;Mark: during my PhD work in 1993 I was creating new features and bug fixes for the NCSA Web server; I&#39;d also found and fixed a number of security issues and was invited by Brian Behlendorf to join the core development team of Apache in April 1995, a few weeks after it was formed. &nbsp;Randy: I first got involved through finding a few like minded people that were working with the NCSA Web server. I began exchanging patches and ideas for how to make the NCSA server scale to some of the hosting challenges that we were all facing as commercial use of the Web began to grow. Late 1994 if I remember correctly. &nbsp;Dirk: I got involved in the early NCSA Web server days &ndash;I was working for a research lab; and we needed specific functionality to allow us to make small geographic subset on huge satellite images available as an &#39;image&#39;. Something novel at that time &ndash;as the normal way to get such images was to fill out a form; fax it and then wait a few months for a large box or container with tapes to arrive. It would then take weeks or months to load up those tapes and extract just the area you needed. &nbsp;Jim: in 1995, initially in providing portability patches to Apple&#39;s old UNIX operating system, A/UX and then in adding features, fixing bugs and working on the configuration and build system. &nbsp;Lars: around 1995 during my studies I developed an interest in Unix and Internet technologies, and in Web servers in particular. I actually set up the first official Web site for the University of Siegen in Germany. Well, we didn&#39;t use Apache in the very beginning, but very quickly realized that the Apache HTTP Server is the way forward. I started helping other Apache users in various online forums, and about a year later I was asked by a German publishing company to write about the Apache HTTP Servers which was published in 1998. &nbsp;Sameer: I became involved when I perceived a need in the marketplace for an Open Source HTTP server that supported SSL. Ben Laurie had developed Apache-SSL but it was not possible to use it within the United States due to patent restrictions. My company developed a solution. &nbsp;Bill: it was 1997, and I had just become Chief Programmer for IBM&#39;s proprietary Lotus Domino Go Webserver. LDGW needed a lot of enhancements but the code base was fragile and HTTP servers, by this time, were no longer a source of revenue. Exploring alternatives to continuing development on LDGW, we found that the Apache HTTP Server had almost everything we needed in a rock solid implementation. I can&#39;t overstate how big a deal it was in IBM at the time to consider using Open Source software. &nbsp;Aram: late 1990s ...I migrated Apache HTTPD v1 to Linux and SCO Unix. I also had the first easy to follow Website dedicated to guiding users on setting up IP-virtual hosts/websites. Q: How did you get involved with the original Apache Group? &nbsp;Dirk: satellite images were both bulky, required complex user interaction to select an area on the map, and someone sensitive from a security perspective; so we needed all sorts of functionality that was not yet common in the NCSA Server, or the more science oriented data server of CERN. &nbsp;Randy: I got involved through what was standard operating procedure for me: hunting Usenet for other people that were trying to solve the same challenges I was. &nbsp;Aram: I had been sending commits to NCSA and getting rejected when I heard about a bunch of guys leaving to go start a new Web server. I went along a bit after they had started to see if I can get some recognition for Linux and SCO which had been my responsibility at the company I was working for. &nbsp;Sameer: I got involved when I began work on our SSL solution. &nbsp;Lars: in 1997 I published the first German book about the Apache HTTP Server. When documenting and testing the various features of Apache I ran into some issues and bugs and ended up submitting a fairly large number of bug reports and some patches to the Apache Group. I guess after a while they got tired of all my bug reports and invited me to become a member of the Apache Group... and therefore allowing me to apply the bug fixes myself. &nbsp;Bill: the Apache Group&#39;s home page indicated that they would welcome company participation in the project. That opened the door for James Barry, an IBM Product Manager, and Yin Ping Shan, an IBM STSM, to contact Brian Behlendorf about IBM&#39;s participation in the project. I had the opportunity to meet Brian at IBM in RTP soon after and I was assigned to be the sole IBM developer to participate in the Open Source community. Did I mention how terrified IBM was of Open Source? My ability to work on future proprietary IBM products &ndash;and stay employed with IBM&ndash; was deemed &#39;at risk&#39; because of &#39;contamination&#39;. Q: When did you first meet other members of the Apache Group in person? How did it feel? &nbsp;Sameer: I&#39;ve known Brian since we were both undergrads at UC Berkeley, so I met him before my involvement in the Group. &nbsp;Randy: I first met other members face-to-face when we all gathered at Brian Behlendorf&#39;s apartment in San Francisco. Someone else will need to help me with what year that was. &nbsp;Bill: ApacheCon 1998 in San Francisco. &nbsp;Jim: The first time I met other members was at the first ApacheCon. I was, and still am, located on the East Coast of the US and most of the other members, who were not based in Europe, were on the West Coast, or close to it. What was cool was how despite not meeting each other face-to-face until then, how much it felt like we were old friends. &nbsp;Mark: IBM had sponsored a get-together of the team in 1998 in California. We&#39;d only ever communicated by email and so meeting in person really helped us to understand each others motivations and interests as well as set the stage for the legal entity. [photos attribution (CC BY) Mark Cox. Gallery at https://www.flickr.com/photos/iamamoose/albums/1381277/with/63963566/] &nbsp;Lars: the first time I met the members of the Apache Group was at the very first ApacheCon held in San Francisco in 1998. I had just finished my master degree and it was my first trip to the USA. Don&#39;t forget to show them the first picture that shows all Apache core developers at ApacheCon 1998! &lt;/p&gt; [photo attribution (CC BY) Mark Cox. Tagged image at https://www.flickr.com/photos/iamamoose/63963722/in/album-1381277/&nbsp;; gallery at https://www.flickr.com/photos/iamamoose/albums/1381277] &nbsp;Dirk: extremely natural; as if you knew these people for years, which we did at that point. Just a few minutes to adjust to how people looked; and another hour or so to adjust to their particular flavor, accent or dialect of English; something which is not easily apparent for a non-native speaker from their emails. And strangely &ndash;from that moment on&ndash; reading their emails would ring that accent, that regional voice; while the actual physical appearance would fade quickly. &nbsp;Aram: I believe it was a while before I attended an Apache Conference. It was in Florida, before Y2K. It was pretty weird sense of being anonymous (since I didn&#39;t have any other online profile) and being known. I sort of hid my name tag inside of my shirt walking around and at the table conference I sort of stood to the side and let the other guys take questions. I&#39;m not sure most of the other developers knew who I was for most of the conference.&nbsp; Q: What made the Apache Group decide to incorporate the ASF? How quickly was this decision made? &nbsp;Jim: as the Internet and the Web started really getting entrenched, we knew that we needed something more legal to protect ourselves. Also, at the time, IBM wanted to use Apache httpd as the basis of their Web server, and they were uncomfortable with the idea of using software from some nebulous, semi-official gathering of people informally called &quot;The Apache Group&quot;. So it was a perfect storm situation where we were ready to incorporate and had an ally who could, and did, help us. The decision was reached very quickly. &nbsp;Dirk: we relied on the NCSA Server; we were just a bunch of patches on top of their software. So when key staffers left to form what ultimately would become Netscape &ndash;we had to consider the options. At the same time; the market was heating up. Apache was becoming quite dominant. Microsoft had entered the fray. The crypto needed for SSL security attracted regulatory attention. Some browser vendors had a hard time keeping up. And I strongly suspected that things like patents where being filed &#39;on our code&#39;.&nbsp; Simultaneously &ndash;IBM, whose Domino WebServer was rapidly losing market share...and they were looking at Apache&ndash;to switch to &#39;Open Source&#39;. But with NCSA dropping out &ndash;there was no clear legal owner of it all. And the impact of the USL vs. AT&amp;T trials over BSD had just started to sink in. So these things; all combined ...and of course the, for me as a European, rather aggressive litigation habits of Americans... conspired and made for a quick decision. &nbsp;Randy: we were operational as the Apache HTTPD Server Project for a few years before deciding to incorporate. This was motivated by a number of things. As I remember, some of those motivations were to put in place some legal protections for contributors and the companies that some of us worked for. Other reasons were to help us form an organization that could being receiving both cash and other donations to help fund the vision that we were developing.&nbsp; The ultimate goal was to build an organization that would support growing the mission of Open Source development participation and adoption. &nbsp;Bill: the decision to incorporate was triggered by IBM&#39;s interest in participating in the project.&nbsp; Apache Group was very open minded in listening to IBM&#39;s concerns and together, Apache Group, and IBM hammered out an engagement model that we believed would be reasonably lightweight while protecting the core interests of Apache Group and participants. I think IBM&#39;s interest in the project also provided another data point validating the viability of Open Source. &nbsp;Mark: see the notes in Apache Week which gives the background...http://www.apacheweek.com/issues/98-07-10#coremeeting Q: What Apache projects were you contributing to? &nbsp;Aram: HTTPD, HTTPD/2, Commons, a couple of minor ones here and there. &nbsp;Dirk: mostly the Web server back in those days. And helping various XML and Java projects, such as Tomcat, getting out of the gate. &nbsp;Randy: my primary involvement was the Apache HTTPD Project along with my participation as a Board member. &nbsp;Jim: I am still contributing to Apache httpd, even to this day. I also contribute to several other Apache projects, to various degrees, including Apache Portable Runtime, Apache OpenOffice, Apache Pulsar, the Apache Incubator &hellip; &nbsp;Mark: my involvement in the Apache HTTP Server continued for some years and I handled security issues, occasional release manager, and wrote modules like mod_status. Outside of the ASF, together with Paul Sutton, another core developer, we launched Apache Week. Apache Week was a weekly look at the state of Apache development and ran from February 1996 through to 2004. My work life revolved around Apache too, founding C2Net in Europe which created Stronghold, a commercially supported version of Apache with security. &nbsp;Sameer: just the HTTP Server. &nbsp;Bill: Apache HTTP Server, Apache Portable Runtime. &nbsp;Lars: apart from the Apache HTTP Server project I joined the Conference Planning project when it started. Attending ApacheCon in 1998 left a big impression on me. Meeting the other developers was amazing, but also having a chance to talk to some of the users. It made me realize that we needed to provide regular opportunities for users and developers to meet. A lot can be done via Web sites, Wikis, and mailing lists, but nothing beats meeting face to face. I helped plan ApacheCon events from 2000 until 2009 and served as VP for the Conference Planning project for the last two years. Q: What is your current involvement with the ASF? What are you up to today? &nbsp;Jim: I am still quite involved with the ASF and was fortunate enough to have served on the board since Day 1 until last year when I took a break. I accepted the nomination to run again this year so by the time this is published, who knows, I might be a Director again. But as I said, I still am very active on the Foundation and the Project efforts. &nbsp;Dirk: little; some ASF-wide stuff in general and security responses/coordination in particular. &nbsp;Randy: unfortunately, my schedule does not allow me to be involved with the ASF these days. &nbsp;Aram: I&#39;m emeritus. About 16 years ago I joined a company that does not allow contribution to Open Source and have been sidelined since then. I&#39;m still an avid reader of the mailing lists and try to keep up with the Board updates. The good news is that in the last few months I have changed enough minds that there is a new legal document going into effect that removes the no-contribution rule. &nbsp;Mark: one of the main things Apache Week did was track security issues in the HTTP Server project, providing a database of vulnerabilities as well as commentary and severity levels. I rolled this up back to the project and this led to me taking a more focused role on helping with security issues across Apache projects. As Vice President for ASF Security I still work every week on helping projects handle the security issues reported to them. I maintain the CVE Numbering Authority for Apache and am on the CVE board. Sameer: I don&#39;t do very much with the ASF other than use many ASF Open Source projects. These days I am primarily focused on being a Dad to my 3 kids. Bill: I watch from afar as an emeritus member of the ASF. I follow the Members mailing list. Lars: I&#39;m not as active any more than I used to be in the ASF. That&#39;s especially true since my son was born in 2017... as far as possible I still try to stay up-to-date with the Apache HTTP Server project, Community Development, and with the Apache Security Team. In my day job I am self employed working as an IT consultant, typically with a focus on IT Security Architecture. After living for 10 years in London I&#39;m currently in the process of moving to Berlin. Q: Could you share how the ASF and The Apache Way has impacted your work? How has it (the impact) changed over time? &nbsp;Dirk: like any industry/peer/professional society &ndash;it is a great place to learn, to refine, to socialize&ndash; that improves day to day professional work. &nbsp;Jim: we were lucky with the Apache Way... a lot of the decisions that made sense and were &quot;expedient&quot; when we made them have stood the test of time. I think this is because we wanted to create a place where people were welcomed and rewarded for volunteering their talents and skills and all contributions were appreciated. &nbsp;Randy: my involvement with the ASF helped me to solidify my belief that we are better at solving problems in collaborative processes. When I first discovered Open Source back in the late 1980s, it made so much sense that better solutions happened when groups of people were able to discuss and expose their work to peer review by some of the brightest minds in the computer industry. I&#39;ve had a great luxury to work with some of those people through collaboration in the ASF and other peer reviewed groups. This has made me better at what I do, and has helped me learn how to listen to others in these environments. &nbsp;Mark: the expertise and knowledge I gained through working on the Apache HTTP Server led directly to my first job offer; and through various acquisitions I&#39;m still in the same company. So I&#39;ve Apache to thank for several decades of interesting, challenging, and rewarding work. While I&#39;ve not got involved in coding for Apache projects for quite some time, my expertise and insights are still useful and I am able to keep my hand in writing the occasional script. &nbsp;Bill: the members of the original Apache Group and the Apache HTTP Server projects quite literally changed my life and world view. I walked in, as a developer &#39;assigned&#39; by IBM. Although I had to earn commit access through my contributions, the nature of my assignment was antithetical to Apache Group norms. The group accepted me, with some reluctance by some of the members. I cannot thank the members of the group enough for showing me the ropes. I listened, and learned and I am a better person for it. I am grateful for the good fortune of being in the right place at the right time to be at the center of the birth of the Open Source movement. I would like to thank all the members of the original Apache Group and my colleagues at IBM for making it possible. Q: What influence do you think the ASF and The Apache Way has had in the industry? &nbsp;Dirk: collectively we have, as an industry and as the ASF, found ways to collaborate &ndash;even though we intensively compete in other areas. And that collaboration was crucial for the open Internet; where interoperability was key. It kept the core of the World Wide Web relatively open; preventing large walled-gardens from appearing early. &nbsp;Randy: I believe that the biggest influence that the ASF has had on the industry is to facilitate participation in the process of Open Source development. While the ASF was not the first ever organization to do Open Source development, I believe that it was one of the first that actively solicited involvement from other corporations to get involved in the process. We had great experiences with a number of businesses that saw the advantages of being part of the solution and dedicated their development resources toward working with the ASF to improve the software that was being developed while bringing forward their customer&#39;s requirements. I spent a lot of time in the early days explaining these companies what Open Source was and why anyone would want to dedicate their free time to participating in software development without making money. I&#39;m happy to see that most leading technology companies understand those advantages today and many of them are active participants in the process. &nbsp;Aram: the Apache License is well known and followed by many non-ASF projects. Many of the ASF projects are leaders in their respective fields/technologies. &nbsp;Mark: the creation of the Apache License has spawned a whole generation of Open Source software that follows the ideals of Apache even when that software isn&#39;t necessarily created by The Apache Software Foundation. A meeting of a number of core Apache developers at an early ApacheCon led to the formation of OpenSSL; which, although not an ASF project, has followed the ideals of Apache and has now even adopted the Apache License for future versions. &nbsp;Lars: The Apache Way is certainly the ASF&#39;s biggest &quot;export&quot;. It has inspired many companies to implement similar principles for their internal development projects. Many of the projects at the ASF are cornerstones of the IT industry and the Internet. Open Source software and Apache software in general has enabled many startup companies to compete with the big players and be successful. Proprietary software is on the demise and Open Source software plays a central part of the long-term IT strategy of many companies. The ASF and especially the Apache License has played a big role in this. &nbsp;Bill: the ASF, and our licensing model, made Open Source acceptable to a much larger audience. The Apache Way provided an equitable way for anyone with the time and right set of skills to influence the direction of ASF projects. &nbsp;Jim: the ASF has served as the cradle and the crucible for just about every innovative technological advancement that has happened over the last decades. The Web, Java, Email, Wikis/blogs, databases, Big Data, PubSub, Machine Learning, AI... all of these technologies have their roots in the projects and communities within Apache. In many ways we have defined the industry and created several. The Apache Way is currently being recognized as the premier software development paradigm, and serves as the foundation for InnerSource, which is transforming Enterprise IT development. Q: What advice do you have for those starting in Open Source? Why is Apache a good community to become involved with? &nbsp;Jim: Open Source is about honing your skills and your talents, about working with like-minded people who value you and your talents and your contributions; a place where you gain merit based on what you do. Find a project you are passionate about and share that passion with those who feel the same; that&#39;s easy at Apache. &nbsp;Randy: for anyone wanting to participating in Open Source development, I believe that the ASF provides a great structure and community for helping newcomers navigate the challenges of getting started. You&#39;ll find a welcoming group of your peers there that will gladly guide you toward things that need to get done or hear you out about the things you believe you could start doing to participate. &nbsp;Aram: I just responded to something similar on Reddit. My advice would be to pick one or two projects where you are a user, a subscriber. Contribute to that project so that you can see the results right then and there. I have seen people try to bolster their resumes with Open Source project contributions but then when you ask about the project itself they don&#39;t know much about them. It&#39;s important not only to contribute code but to also contribute to the culture of the project and its direction. &nbsp;Mark: I&#39;ve yet to find an Open Source project that doesn&#39;t have something that someone new can help with; you don&#39;t have to be an expert with all the code to contribute to a project &ndash;I&#39;ve not written any code for Apache projects in over a decade yet there are still many ways I can add value to the ASF. With so many different projects with different userbases with different programming languages there&#39;s bound to be something that matches the skills and interest levels of folks starting out for the first time. &nbsp;Dirk: code cannot live in isolation, or on itself, for long periods of time. Code requires a community to evolve it, to nurture it, to make sure it grows in the right directions and to dampen others that may be just too esoteric to maintain long term. So it is Community Over Code. A very fragile balance. But once; if you get this right &ndash;can really make things fly. &nbsp;Bill: the ASF is an extremely open and accepting community full of really great people. Pick the project that interests you, then lurk, listen, and learn. Take the time to understand how the community works, then reach out to someone in the community and see if they would be willing to coach you. Go slow, learn, respect the sensibilities of community members and processes and you will be successful. Q: What do you think is needed to strengthen the ASF as it looks forward to the next 20 years? &nbsp;Dirk: one of our core drivers is &ndash;or was&ndash; the need for the Internet to be open and interoperable. And that this need drove all inclusive, forums such as the ASF where people could collaborate on technology and make it work well together. Even if their employers compete &ndash;or especially if their employers compete. The world has changed since &ndash;large platform players balkanize certain areas and are able to push through &#39;their&#39; technology on &#39;their&#39; agenda. This negating their need to collaboratively work with others to be interoperable. Or even their need to &#39;contribute&#39; back. And simultaneously &ndash;companies and investors are learning how to better control &ndash;or game&ndash; these collaborations; how to create &#39;pay to play&#39; Open Source foundations; and how to allow money to drive product direction. These two things break the feedback loop that allowed Apache to mature, grow, increase quality. So we need to learn how to deal with this; find new positive feedback loops and amplifiers to offset those we&#39;ve lost. &nbsp;Randy: I think that one of the things that any Open Source community would benefit from is active involvement in educational curricula. Through involvement in the education process in both K12 and beyond, Open Source communities gain relevance and participants. &nbsp;Aram: too many thoughts on this one ...I think we do need not only more communication, but better means of communication. As &quot;techies&quot; I think our communication is a bit too technical at times. One more P.S. here ... the &quot;ASF&quot; logo should be more of a brand. It&#39;s simply an umbrella project and a copyright today.&nbsp; Looking at the next 5, 10, 20 years the ASF brand should stand for good practices, open communication, Open Source, etc. &ndash;not that it isn&#39;t today ... it simply doesn&#39;t have the reach into the business world. &nbsp;Bill: interesting question. Is &#39;strengthen&#39; the right way to look at the future or is &#39;adapt&#39; a better word? People and company motivations for participating in Open Source communities have evolved and will continue to evolve in the future. The ASF, as a public charity, will need to adapt to changing requirements in order to survive and thrive. &nbsp;Lars: we must make sure that we strengthen the use of &quot;The Apache Way&quot; principles, and continue focusing on the community and individual contributors. We must learn from cases where a new contributor left a project, because the project wasn&#39;t welcoming or open enough and try to fix these issues. Innovation cannot happen without a healthy community. &lt;/p&gt; Reinforcing &quot;Community Over Code&quot; is a great way to close this out! Thank you, Aram, Bill, Dirk, Jim, Lars, Mark, Randy, and Sameer, for your thoughtful responses and sharing these great memories &ndash;it&#39;s so great to catch up with all of you. Thank you, and your fellow founders &ndash;Brian Behlendorf, Ken Coar, Miguel Gonzales, Ralf Engelschall, Roy Fielding, Dean Gaudet, Ben Hyde, Alexei Kosut, Martin Kraemer, Ben Laurie, Doug MacEachern, Cliff Skolnick, Marc Slemko, and Paul Sutton &ndash;for this tremendous gift to humanity. You have transformed our lives. Interviews by Sally Khudairi. # # #" />
<link rel="canonical" href="http://localhost:4000/foundation/entry/our-founders-look-back-on" />
<meta property="og:url" content="http://localhost:4000/foundation/entry/our-founders-look-back-on" />
<meta property="og:site_name" content="Blogs Archive" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2019-03-26T14:26:22-04:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Our Founders look back on 20 Years of the ASF!" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2019-03-26T14:26:22-04:00","datePublished":"2019-03-26T14:26:22-04:00","description":"We recently connected with eight of the original 21 Founders of The Apache Software Foundation to take a look back at 20 years of the ASF. Joining us are Sameer Parekh Brenn, Mark Cox, Lars Eilebrecht, Jim Jagielski, Aram Mirzadeh, Bill Stoddard, Randy Terbush, and Dirk-Willem van Gulik, who were generous enough to take a walk down memory lane with us. Q: When did you first get involved with the Apache HTTP Server? What was your role? &nbsp;Mark: during my PhD work in 1993 I was creating new features and bug fixes for the NCSA Web server; I&#39;d also found and fixed a number of security issues and was invited by Brian Behlendorf to join the core development team of Apache in April 1995, a few weeks after it was formed. &nbsp;Randy: I first got involved through finding a few like minded people that were working with the NCSA Web server. I began exchanging patches and ideas for how to make the NCSA server scale to some of the hosting challenges that we were all facing as commercial use of the Web began to grow. Late 1994 if I remember correctly. &nbsp;Dirk: I got involved in the early NCSA Web server days &ndash;I was working for a research lab; and we needed specific functionality to allow us to make small geographic subset on huge satellite images available as an &#39;image&#39;. Something novel at that time &ndash;as the normal way to get such images was to fill out a form; fax it and then wait a few months for a large box or container with tapes to arrive. It would then take weeks or months to load up those tapes and extract just the area you needed. &nbsp;Jim: in 1995, initially in providing portability patches to Apple&#39;s old UNIX operating system, A/UX and then in adding features, fixing bugs and working on the configuration and build system. &nbsp;Lars: around 1995 during my studies I developed an interest in Unix and Internet technologies, and in Web servers in particular. I actually set up the first official Web site for the University of Siegen in Germany. Well, we didn&#39;t use Apache in the very beginning, but very quickly realized that the Apache HTTP Server is the way forward. I started helping other Apache users in various online forums, and about a year later I was asked by a German publishing company to write about the Apache HTTP Servers which was published in 1998. &nbsp;Sameer: I became involved when I perceived a need in the marketplace for an Open Source HTTP server that supported SSL. Ben Laurie had developed Apache-SSL but it was not possible to use it within the United States due to patent restrictions. My company developed a solution. &nbsp;Bill: it was 1997, and I had just become Chief Programmer for IBM&#39;s proprietary Lotus Domino Go Webserver. LDGW needed a lot of enhancements but the code base was fragile and HTTP servers, by this time, were no longer a source of revenue. Exploring alternatives to continuing development on LDGW, we found that the Apache HTTP Server had almost everything we needed in a rock solid implementation. I can&#39;t overstate how big a deal it was in IBM at the time to consider using Open Source software. &nbsp;Aram: late 1990s ...I migrated Apache HTTPD v1 to Linux and SCO Unix. I also had the first easy to follow Website dedicated to guiding users on setting up IP-virtual hosts/websites. Q: How did you get involved with the original Apache Group? &nbsp;Dirk: satellite images were both bulky, required complex user interaction to select an area on the map, and someone sensitive from a security perspective; so we needed all sorts of functionality that was not yet common in the NCSA Server, or the more science oriented data server of CERN. &nbsp;Randy: I got involved through what was standard operating procedure for me: hunting Usenet for other people that were trying to solve the same challenges I was. &nbsp;Aram: I had been sending commits to NCSA and getting rejected when I heard about a bunch of guys leaving to go start a new Web server. I went along a bit after they had started to see if I can get some recognition for Linux and SCO which had been my responsibility at the company I was working for. &nbsp;Sameer: I got involved when I began work on our SSL solution. &nbsp;Lars: in 1997 I published the first German book about the Apache HTTP Server. When documenting and testing the various features of Apache I ran into some issues and bugs and ended up submitting a fairly large number of bug reports and some patches to the Apache Group. I guess after a while they got tired of all my bug reports and invited me to become a member of the Apache Group... and therefore allowing me to apply the bug fixes myself. &nbsp;Bill: the Apache Group&#39;s home page indicated that they would welcome company participation in the project. That opened the door for James Barry, an IBM Product Manager, and Yin Ping Shan, an IBM STSM, to contact Brian Behlendorf about IBM&#39;s participation in the project. I had the opportunity to meet Brian at IBM in RTP soon after and I was assigned to be the sole IBM developer to participate in the Open Source community. Did I mention how terrified IBM was of Open Source? My ability to work on future proprietary IBM products &ndash;and stay employed with IBM&ndash; was deemed &#39;at risk&#39; because of &#39;contamination&#39;. Q: When did you first meet other members of the Apache Group in person? How did it feel? &nbsp;Sameer: I&#39;ve known Brian since we were both undergrads at UC Berkeley, so I met him before my involvement in the Group. &nbsp;Randy: I first met other members face-to-face when we all gathered at Brian Behlendorf&#39;s apartment in San Francisco. Someone else will need to help me with what year that was. &nbsp;Bill: ApacheCon 1998 in San Francisco. &nbsp;Jim: The first time I met other members was at the first ApacheCon. I was, and still am, located on the East Coast of the US and most of the other members, who were not based in Europe, were on the West Coast, or close to it. What was cool was how despite not meeting each other face-to-face until then, how much it felt like we were old friends. &nbsp;Mark: IBM had sponsored a get-together of the team in 1998 in California. We&#39;d only ever communicated by email and so meeting in person really helped us to understand each others motivations and interests as well as set the stage for the legal entity. [photos attribution (CC BY) Mark Cox. Gallery at https://www.flickr.com/photos/iamamoose/albums/1381277/with/63963566/] &nbsp;Lars: the first time I met the members of the Apache Group was at the very first ApacheCon held in San Francisco in 1998. I had just finished my master degree and it was my first trip to the USA. Don&#39;t forget to show them the first picture that shows all Apache core developers at ApacheCon 1998! &lt;/p&gt; [photo attribution (CC BY) Mark Cox. Tagged image at https://www.flickr.com/photos/iamamoose/63963722/in/album-1381277/&nbsp;; gallery at https://www.flickr.com/photos/iamamoose/albums/1381277] &nbsp;Dirk: extremely natural; as if you knew these people for years, which we did at that point. Just a few minutes to adjust to how people looked; and another hour or so to adjust to their particular flavor, accent or dialect of English; something which is not easily apparent for a non-native speaker from their emails. And strangely &ndash;from that moment on&ndash; reading their emails would ring that accent, that regional voice; while the actual physical appearance would fade quickly. &nbsp;Aram: I believe it was a while before I attended an Apache Conference. It was in Florida, before Y2K. It was pretty weird sense of being anonymous (since I didn&#39;t have any other online profile) and being known. I sort of hid my name tag inside of my shirt walking around and at the table conference I sort of stood to the side and let the other guys take questions. I&#39;m not sure most of the other developers knew who I was for most of the conference.&nbsp; Q: What made the Apache Group decide to incorporate the ASF? How quickly was this decision made? &nbsp;Jim: as the Internet and the Web started really getting entrenched, we knew that we needed something more legal to protect ourselves. Also, at the time, IBM wanted to use Apache httpd as the basis of their Web server, and they were uncomfortable with the idea of using software from some nebulous, semi-official gathering of people informally called &quot;The Apache Group&quot;. So it was a perfect storm situation where we were ready to incorporate and had an ally who could, and did, help us. The decision was reached very quickly. &nbsp;Dirk: we relied on the NCSA Server; we were just a bunch of patches on top of their software. So when key staffers left to form what ultimately would become Netscape &ndash;we had to consider the options. At the same time; the market was heating up. Apache was becoming quite dominant. Microsoft had entered the fray. The crypto needed for SSL security attracted regulatory attention. Some browser vendors had a hard time keeping up. And I strongly suspected that things like patents where being filed &#39;on our code&#39;.&nbsp; Simultaneously &ndash;IBM, whose Domino WebServer was rapidly losing market share...and they were looking at Apache&ndash;to switch to &#39;Open Source&#39;. But with NCSA dropping out &ndash;there was no clear legal owner of it all. And the impact of the USL vs. AT&amp;T trials over BSD had just started to sink in. So these things; all combined ...and of course the, for me as a European, rather aggressive litigation habits of Americans... conspired and made for a quick decision. &nbsp;Randy: we were operational as the Apache HTTPD Server Project for a few years before deciding to incorporate. This was motivated by a number of things. As I remember, some of those motivations were to put in place some legal protections for contributors and the companies that some of us worked for. Other reasons were to help us form an organization that could being receiving both cash and other donations to help fund the vision that we were developing.&nbsp; The ultimate goal was to build an organization that would support growing the mission of Open Source development participation and adoption. &nbsp;Bill: the decision to incorporate was triggered by IBM&#39;s interest in participating in the project.&nbsp; Apache Group was very open minded in listening to IBM&#39;s concerns and together, Apache Group, and IBM hammered out an engagement model that we believed would be reasonably lightweight while protecting the core interests of Apache Group and participants. I think IBM&#39;s interest in the project also provided another data point validating the viability of Open Source. &nbsp;Mark: see the notes in Apache Week which gives the background...http://www.apacheweek.com/issues/98-07-10#coremeeting Q: What Apache projects were you contributing to? &nbsp;Aram: HTTPD, HTTPD/2, Commons, a couple of minor ones here and there. &nbsp;Dirk: mostly the Web server back in those days. And helping various XML and Java projects, such as Tomcat, getting out of the gate. &nbsp;Randy: my primary involvement was the Apache HTTPD Project along with my participation as a Board member. &nbsp;Jim: I am still contributing to Apache httpd, even to this day. I also contribute to several other Apache projects, to various degrees, including Apache Portable Runtime, Apache OpenOffice, Apache Pulsar, the Apache Incubator &hellip; &nbsp;Mark: my involvement in the Apache HTTP Server continued for some years and I handled security issues, occasional release manager, and wrote modules like mod_status. Outside of the ASF, together with Paul Sutton, another core developer, we launched Apache Week. Apache Week was a weekly look at the state of Apache development and ran from February 1996 through to 2004. My work life revolved around Apache too, founding C2Net in Europe which created Stronghold, a commercially supported version of Apache with security. &nbsp;Sameer: just the HTTP Server. &nbsp;Bill: Apache HTTP Server, Apache Portable Runtime. &nbsp;Lars: apart from the Apache HTTP Server project I joined the Conference Planning project when it started. Attending ApacheCon in 1998 left a big impression on me. Meeting the other developers was amazing, but also having a chance to talk to some of the users. It made me realize that we needed to provide regular opportunities for users and developers to meet. A lot can be done via Web sites, Wikis, and mailing lists, but nothing beats meeting face to face. I helped plan ApacheCon events from 2000 until 2009 and served as VP for the Conference Planning project for the last two years. Q: What is your current involvement with the ASF? What are you up to today? &nbsp;Jim: I am still quite involved with the ASF and was fortunate enough to have served on the board since Day 1 until last year when I took a break. I accepted the nomination to run again this year so by the time this is published, who knows, I might be a Director again. But as I said, I still am very active on the Foundation and the Project efforts. &nbsp;Dirk: little; some ASF-wide stuff in general and security responses/coordination in particular. &nbsp;Randy: unfortunately, my schedule does not allow me to be involved with the ASF these days. &nbsp;Aram: I&#39;m emeritus. About 16 years ago I joined a company that does not allow contribution to Open Source and have been sidelined since then. I&#39;m still an avid reader of the mailing lists and try to keep up with the Board updates. The good news is that in the last few months I have changed enough minds that there is a new legal document going into effect that removes the no-contribution rule. &nbsp;Mark: one of the main things Apache Week did was track security issues in the HTTP Server project, providing a database of vulnerabilities as well as commentary and severity levels. I rolled this up back to the project and this led to me taking a more focused role on helping with security issues across Apache projects. As Vice President for ASF Security I still work every week on helping projects handle the security issues reported to them. I maintain the CVE Numbering Authority for Apache and am on the CVE board. Sameer: I don&#39;t do very much with the ASF other than use many ASF Open Source projects. These days I am primarily focused on being a Dad to my 3 kids. Bill: I watch from afar as an emeritus member of the ASF. I follow the Members mailing list. Lars: I&#39;m not as active any more than I used to be in the ASF. That&#39;s especially true since my son was born in 2017... as far as possible I still try to stay up-to-date with the Apache HTTP Server project, Community Development, and with the Apache Security Team. In my day job I am self employed working as an IT consultant, typically with a focus on IT Security Architecture. After living for 10 years in London I&#39;m currently in the process of moving to Berlin. Q: Could you share how the ASF and The Apache Way has impacted your work? How has it (the impact) changed over time? &nbsp;Dirk: like any industry/peer/professional society &ndash;it is a great place to learn, to refine, to socialize&ndash; that improves day to day professional work. &nbsp;Jim: we were lucky with the Apache Way... a lot of the decisions that made sense and were &quot;expedient&quot; when we made them have stood the test of time. I think this is because we wanted to create a place where people were welcomed and rewarded for volunteering their talents and skills and all contributions were appreciated. &nbsp;Randy: my involvement with the ASF helped me to solidify my belief that we are better at solving problems in collaborative processes. When I first discovered Open Source back in the late 1980s, it made so much sense that better solutions happened when groups of people were able to discuss and expose their work to peer review by some of the brightest minds in the computer industry. I&#39;ve had a great luxury to work with some of those people through collaboration in the ASF and other peer reviewed groups. This has made me better at what I do, and has helped me learn how to listen to others in these environments. &nbsp;Mark: the expertise and knowledge I gained through working on the Apache HTTP Server led directly to my first job offer; and through various acquisitions I&#39;m still in the same company. So I&#39;ve Apache to thank for several decades of interesting, challenging, and rewarding work. While I&#39;ve not got involved in coding for Apache projects for quite some time, my expertise and insights are still useful and I am able to keep my hand in writing the occasional script. &nbsp;Bill: the members of the original Apache Group and the Apache HTTP Server projects quite literally changed my life and world view. I walked in, as a developer &#39;assigned&#39; by IBM. Although I had to earn commit access through my contributions, the nature of my assignment was antithetical to Apache Group norms. The group accepted me, with some reluctance by some of the members. I cannot thank the members of the group enough for showing me the ropes. I listened, and learned and I am a better person for it. I am grateful for the good fortune of being in the right place at the right time to be at the center of the birth of the Open Source movement. I would like to thank all the members of the original Apache Group and my colleagues at IBM for making it possible. Q: What influence do you think the ASF and The Apache Way has had in the industry? &nbsp;Dirk: collectively we have, as an industry and as the ASF, found ways to collaborate &ndash;even though we intensively compete in other areas. And that collaboration was crucial for the open Internet; where interoperability was key. It kept the core of the World Wide Web relatively open; preventing large walled-gardens from appearing early. &nbsp;Randy: I believe that the biggest influence that the ASF has had on the industry is to facilitate participation in the process of Open Source development. While the ASF was not the first ever organization to do Open Source development, I believe that it was one of the first that actively solicited involvement from other corporations to get involved in the process. We had great experiences with a number of businesses that saw the advantages of being part of the solution and dedicated their development resources toward working with the ASF to improve the software that was being developed while bringing forward their customer&#39;s requirements. I spent a lot of time in the early days explaining these companies what Open Source was and why anyone would want to dedicate their free time to participating in software development without making money. I&#39;m happy to see that most leading technology companies understand those advantages today and many of them are active participants in the process. &nbsp;Aram: the Apache License is well known and followed by many non-ASF projects. Many of the ASF projects are leaders in their respective fields/technologies. &nbsp;Mark: the creation of the Apache License has spawned a whole generation of Open Source software that follows the ideals of Apache even when that software isn&#39;t necessarily created by The Apache Software Foundation. A meeting of a number of core Apache developers at an early ApacheCon led to the formation of OpenSSL; which, although not an ASF project, has followed the ideals of Apache and has now even adopted the Apache License for future versions. &nbsp;Lars: The Apache Way is certainly the ASF&#39;s biggest &quot;export&quot;. It has inspired many companies to implement similar principles for their internal development projects. Many of the projects at the ASF are cornerstones of the IT industry and the Internet. Open Source software and Apache software in general has enabled many startup companies to compete with the big players and be successful. Proprietary software is on the demise and Open Source software plays a central part of the long-term IT strategy of many companies. The ASF and especially the Apache License has played a big role in this. &nbsp;Bill: the ASF, and our licensing model, made Open Source acceptable to a much larger audience. The Apache Way provided an equitable way for anyone with the time and right set of skills to influence the direction of ASF projects. &nbsp;Jim: the ASF has served as the cradle and the crucible for just about every innovative technological advancement that has happened over the last decades. The Web, Java, Email, Wikis/blogs, databases, Big Data, PubSub, Machine Learning, AI... all of these technologies have their roots in the projects and communities within Apache. In many ways we have defined the industry and created several. The Apache Way is currently being recognized as the premier software development paradigm, and serves as the foundation for InnerSource, which is transforming Enterprise IT development. Q: What advice do you have for those starting in Open Source? Why is Apache a good community to become involved with? &nbsp;Jim: Open Source is about honing your skills and your talents, about working with like-minded people who value you and your talents and your contributions; a place where you gain merit based on what you do. Find a project you are passionate about and share that passion with those who feel the same; that&#39;s easy at Apache. &nbsp;Randy: for anyone wanting to participating in Open Source development, I believe that the ASF provides a great structure and community for helping newcomers navigate the challenges of getting started. You&#39;ll find a welcoming group of your peers there that will gladly guide you toward things that need to get done or hear you out about the things you believe you could start doing to participate. &nbsp;Aram: I just responded to something similar on Reddit. My advice would be to pick one or two projects where you are a user, a subscriber. Contribute to that project so that you can see the results right then and there. I have seen people try to bolster their resumes with Open Source project contributions but then when you ask about the project itself they don&#39;t know much about them. It&#39;s important not only to contribute code but to also contribute to the culture of the project and its direction. &nbsp;Mark: I&#39;ve yet to find an Open Source project that doesn&#39;t have something that someone new can help with; you don&#39;t have to be an expert with all the code to contribute to a project &ndash;I&#39;ve not written any code for Apache projects in over a decade yet there are still many ways I can add value to the ASF. With so many different projects with different userbases with different programming languages there&#39;s bound to be something that matches the skills and interest levels of folks starting out for the first time. &nbsp;Dirk: code cannot live in isolation, or on itself, for long periods of time. Code requires a community to evolve it, to nurture it, to make sure it grows in the right directions and to dampen others that may be just too esoteric to maintain long term. So it is Community Over Code. A very fragile balance. But once; if you get this right &ndash;can really make things fly. &nbsp;Bill: the ASF is an extremely open and accepting community full of really great people. Pick the project that interests you, then lurk, listen, and learn. Take the time to understand how the community works, then reach out to someone in the community and see if they would be willing to coach you. Go slow, learn, respect the sensibilities of community members and processes and you will be successful. Q: What do you think is needed to strengthen the ASF as it looks forward to the next 20 years? &nbsp;Dirk: one of our core drivers is &ndash;or was&ndash; the need for the Internet to be open and interoperable. And that this need drove all inclusive, forums such as the ASF where people could collaborate on technology and make it work well together. Even if their employers compete &ndash;or especially if their employers compete. The world has changed since &ndash;large platform players balkanize certain areas and are able to push through &#39;their&#39; technology on &#39;their&#39; agenda. This negating their need to collaboratively work with others to be interoperable. Or even their need to &#39;contribute&#39; back. And simultaneously &ndash;companies and investors are learning how to better control &ndash;or game&ndash; these collaborations; how to create &#39;pay to play&#39; Open Source foundations; and how to allow money to drive product direction. These two things break the feedback loop that allowed Apache to mature, grow, increase quality. So we need to learn how to deal with this; find new positive feedback loops and amplifiers to offset those we&#39;ve lost. &nbsp;Randy: I think that one of the things that any Open Source community would benefit from is active involvement in educational curricula. Through involvement in the education process in both K12 and beyond, Open Source communities gain relevance and participants. &nbsp;Aram: too many thoughts on this one ...I think we do need not only more communication, but better means of communication. As &quot;techies&quot; I think our communication is a bit too technical at times. One more P.S. here ... the &quot;ASF&quot; logo should be more of a brand. It&#39;s simply an umbrella project and a copyright today.&nbsp; Looking at the next 5, 10, 20 years the ASF brand should stand for good practices, open communication, Open Source, etc. &ndash;not that it isn&#39;t today ... it simply doesn&#39;t have the reach into the business world. &nbsp;Bill: interesting question. Is &#39;strengthen&#39; the right way to look at the future or is &#39;adapt&#39; a better word? People and company motivations for participating in Open Source communities have evolved and will continue to evolve in the future. The ASF, as a public charity, will need to adapt to changing requirements in order to survive and thrive. &nbsp;Lars: we must make sure that we strengthen the use of &quot;The Apache Way&quot; principles, and continue focusing on the community and individual contributors. We must learn from cases where a new contributor left a project, because the project wasn&#39;t welcoming or open enough and try to fix these issues. Innovation cannot happen without a healthy community. &lt;/p&gt; Reinforcing &quot;Community Over Code&quot; is a great way to close this out! Thank you, Aram, Bill, Dirk, Jim, Lars, Mark, Randy, and Sameer, for your thoughtful responses and sharing these great memories &ndash;it&#39;s so great to catch up with all of you. Thank you, and your fellow founders &ndash;Brian Behlendorf, Ken Coar, Miguel Gonzales, Ralf Engelschall, Roy Fielding, Dean Gaudet, Ben Hyde, Alexei Kosut, Martin Kraemer, Ben Laurie, Doug MacEachern, Cliff Skolnick, Marc Slemko, and Paul Sutton &ndash;for this tremendous gift to humanity. You have transformed our lives. Interviews by Sally Khudairi. # # #","headline":"Our Founders look back on 20 Years of the ASF!","mainEntityOfPage":{"@type":"WebPage","@id":"http://localhost:4000/foundation/entry/our-founders-look-back-on"},"url":"http://localhost:4000/foundation/entry/our-founders-look-back-on"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/main.css"><link type="application/atom+xml" rel="alternate" href="http://localhost:4000/feed.xml" title="Blogs Archive" /></head>
<body><header class="site-header" role="banner">

  <div class="wrapper"><a class="site-title" rel="author" href="/">Blogs Archive</a><nav class="site-nav">
        <input type="checkbox" id="nav-trigger" class="nav-trigger" />
        <label for="nav-trigger">
          <span class="menu-icon">
            <svg viewBox="0 0 18 15" width="18px" height="15px">
              <path d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z"/>
            </svg>
          </span>
        </label>

        <div class="trigger"><a class="page-link" href="/about/">About</a></div>
      </nav></div>
</header>
<main class="page-content" aria-label="Content">
      <div class="wrapper">
        <article class="post h-entry" itemscope itemtype="http://schema.org/BlogPosting">

  <header class="post-header">
    <h1 class="post-title p-name" itemprop="name headline">Our Founders look back on 20 Years of the ASF!</h1>
    <p class="post-meta">
      <time class="dt-published" datetime="2019-03-26T14:26:22-04:00" itemprop="datePublished">Mar 26, 2019
      </time>• <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span class="p-author h-card" itemprop="name">{"display_name"=>"Sally Khudairi", "login"=>"sk", "email"=>"sk@haloworldwide.com"}</span></span></p>
  </header>

  <div class="post-content e-content" itemprop="articleBody">
    <p><span style="font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;"><strong><em>We recently connected with eight of the original 21 Founders of The Apache Software Foundation to take a look back at 20 years of the ASF. Joining us are Sameer Parekh Brenn, Mark Cox, Lars Eilebrecht, Jim Jagielski, Aram Mirzadeh, Bill Stoddard, Randy Terbush, and Dirk-Willem van Gulik, who were generous enough to take a walk down memory lane with us.</em></strong></span> </p>
<p><img src="https://blogs.apache.org/foundation/mediaresource/e8c7f1d8-1245-494c-b015-35d15bb1988c" /></p>
<p></p>
<p><strong>Q: When did you first get involved with the Apache HTTP Server? What was your role?</strong></p>
<p><strong><em>&nbsp;Mark</em></strong>: during my PhD work in 1993 I was creating new features and bug fixes for the NCSA Web server; I'd also found and fixed a number of security issues and was invited by Brian Behlendorf to join the core development team of Apache in April 1995, a few weeks after it was formed.</p>
<p><strong><em>&nbsp;Randy</em></strong>: I first got involved through finding a few like minded people that were working with the NCSA Web server. I began exchanging patches and ideas for how to make the NCSA server scale to some of the hosting challenges that we were all facing as commercial use of the Web began to grow. Late 1994 if I remember correctly.</p>
<p><strong><em>&nbsp;Dirk</em></strong>: I got involved in the early NCSA Web server days &ndash;I was working for a research lab; and we needed specific functionality to allow us to make small geographic subset on huge satellite images available as an 'image'. Something novel at that time &ndash;as the normal way to get such images was to fill out a form; fax it and then wait a few months for a large box or container with tapes to arrive. It would then take weeks or months to load up those tapes and extract just the area you needed.</p>
<p><strong><em>&nbsp;Jim</em></strong>: in 1995, initially in providing portability patches to Apple's old UNIX operating system, A/UX and then in adding features, fixing bugs and working on the configuration and build system.</p>
<p><strong><em>&nbsp;Lars</em></strong>: around 1995 during my studies I developed an interest in Unix and Internet technologies, and in Web servers in particular. I actually set up the first official Web site for the University of Siegen in Germany. Well, we didn't use Apache in the very beginning, but very quickly realized that the Apache HTTP Server is the way forward. I started helping other Apache users in various online forums, and about a year later I was asked by a German publishing company to write about the Apache HTTP Servers which was published in 1998.</p>
<p><strong><em>&nbsp;Sameer</em></strong>: I became involved when I perceived a need in the marketplace for an Open Source HTTP server that supported SSL. Ben Laurie had developed Apache-SSL but it was not possible to use it within the United States due to patent restrictions. My company developed a solution.</p>
<p><strong><em>&nbsp;Bill</em></strong>: it was 1997, and I had just become Chief Programmer for IBM's proprietary Lotus Domino Go Webserver. LDGW needed a lot of enhancements but the code base was fragile and HTTP servers, by this time, were no longer a source of revenue. Exploring alternatives to continuing development on LDGW, we found that the Apache HTTP Server had almost everything we needed in a rock solid implementation. I can't overstate how big a deal it was in IBM at the time to consider using Open Source software.</p>
<p><strong><em>&nbsp;Aram</em></strong>: late 1990s ...I migrated Apache HTTPD v1 to Linux and SCO Unix. I also had the first easy to follow Website dedicated to guiding users on setting up IP-virtual hosts/websites.</p>
<p><strong>Q: How did you get involved with the original Apache Group?</strong></p>
<p><strong><em>&nbsp;Dirk</em></strong>: satellite images were both bulky, required complex user interaction to select an area on the map, and someone sensitive from a security perspective; so we needed all sorts of functionality that was not yet common in the NCSA Server, or the more science oriented data server of CERN.</p>
<p><strong><em>&nbsp;Randy</em></strong>: I got involved through what was standard operating procedure for me: hunting Usenet for other people that were trying to solve the same challenges I was.</p>
<p><strong><em>&nbsp;Aram</em></strong>: I had been sending commits to NCSA and getting rejected when I heard about a bunch of guys leaving to go start a new Web server. I went along a bit after they had started to see if I can get some recognition for Linux and SCO which had been my responsibility at the company I was working for.</p>
<p><strong><em>&nbsp;Sameer</em></strong>: I got involved when I began work on our SSL solution.</p>
<p> <strong><em>&nbsp;Lars</em></strong>: in 1997 I published the first German book about the Apache HTTP Server. When documenting and testing the various features of Apache I ran into some issues and bugs and ended up submitting a fairly large number of bug reports and some patches to the Apache Group. I guess after a while they got tired of all my bug reports and invited me to become a member of the Apache Group... and therefore allowing me to apply the bug fixes myself.</p>
<p><strong><em>&nbsp;Bill</em></strong>: the Apache Group's home page indicated that they would welcome company participation in the project. That opened the door for James Barry, an IBM Product Manager, and Yin Ping Shan, an IBM STSM, to contact Brian Behlendorf about IBM's participation in the project. I had the opportunity to meet Brian at IBM in RTP soon after and I was assigned to be the sole IBM developer to participate in the Open Source community. Did I mention how terrified IBM was of Open Source? My ability to work on future proprietary IBM products &ndash;and stay employed with IBM&ndash; was deemed 'at risk' because of 'contamination'.</p>
<p><strong>Q: When did you first meet other members of the Apache Group in person? How did it feel?</strong></p>
<p><strong><em>&nbsp;Sameer</em></strong>: I've known Brian since we were both undergrads at UC Berkeley, so I met him before my involvement in the Group.</p>
<p><strong><em>&nbsp;Randy</em></strong>: I first met other members face-to-face when we all gathered at Brian Behlendorf's apartment in San Francisco. Someone else will need to help me with what year that was.</p>
<p><strong><em>&nbsp;Bill</em></strong>: ApacheCon 1998 in San Francisco.</p>
<p><strong><em>&nbsp;Jim</em></strong>: The first time I met other members was at the first ApacheCon. I was, and still am, located on the East Coast of the US and most of the other members, who were not based in Europe, were on the West Coast, or close to it. What was cool was how despite not meeting each other face-to-face until then, how much it felt like we were old friends.</p>
<p><strong><em>&nbsp;Mark</em></strong>: IBM had sponsored a get-together of the team in 1998 in California. We'd only ever communicated by email and so meeting in person really helped us to understand each others motivations and interests as well as set the stage for the legal entity.</p>
<p><img src="https://blogs.apache.org/foundation/mediaresource/da4bdc44-c36d-4c50-b0f3-0208954d689b" /><br /><span style="font-size: x-small;">[photos attribution (CC BY) Mark Cox. Gallery at </span><a href="https://www.flickr.com/photos/iamamoose/albums/1381277/with/63963566/" style="font-size: x-small;">https://www.flickr.com/photos/iamamoose/albums/1381277/with/63963566/</a><span style="font-size: x-small;">]</span></p>
<p> <strong><em> <br />&nbsp;Lars</em></strong>: the first time I met the members of the Apache Group was at the very first ApacheCon held in San Francisco in 1998. I had just finished my master degree and it was my first trip to the USA. Don't forget to show them the first picture that shows all Apache core developers at ApacheCon 1998!</p></p>
<p><img src="https://blogs.apache.org/foundation/mediaresource/13c72b0f-8698-4b0d-a3ba-ae1179c4cf53" /><br /><span style="font-size: x-small;">[photo attribution (CC BY) Mark Cox. Tagged image at </span><a href="https://www.flickr.com/photos/iamamoose/63963722/in/album-1381277/" style="font-size: x-small;">https://www.flickr.com/photos/iamamoose/63963722/in/album-1381277/</a><span style="font-size: x-small;">&nbsp;; gallery at </span><a href="https://www.flickr.com/photos/iamamoose/albums/1381277" style="font-size: x-small;">https://www.flickr.com/photos/iamamoose/albums/1381277</a><span style="font-size: x-small;">]</span></p>
<p><strong><em>&nbsp;Dirk</em></strong>: extremely natural; as if you knew these people for years, which we did at that point. Just a few minutes to adjust to how people looked; and another hour or so to adjust to their particular flavor, accent or dialect of English; something which is not easily apparent for a non-native speaker from their emails. And strangely &ndash;from that moment on&ndash; reading their emails would ring that accent, that regional voice; while the actual physical appearance would fade quickly.</p>
<p><strong><em>&nbsp;Aram</em></strong>: I believe it was a while before I attended an Apache Conference. It was in Florida, before Y2K. It was pretty weird sense of being anonymous (since I didn't have any other online profile) and being known. I sort of hid my name tag inside of my shirt walking around and at the table conference I sort of stood to the side and let the other guys take questions. I'm not sure most of the other developers knew who I was for most of the conference.&nbsp; Q: What made the Apache Group decide to incorporate the ASF? How quickly was this decision made?</p>
<p> <strong><em>&nbsp;Jim</em></strong>: as the Internet and the Web started really getting entrenched, we knew that we needed something more legal to protect ourselves. Also, at the time, IBM wanted to use Apache httpd as the basis of their Web server, and they were uncomfortable with the idea of using software from some nebulous, semi-official gathering of people informally called "The Apache Group". So it was a perfect storm situation where we were ready to incorporate and had an ally who could, and did, help us. The decision was reached very quickly.</p>
<p><strong><em>&nbsp;Dirk</em></strong>: we relied on the NCSA Server; we were just a bunch of patches on top of their software. So when key staffers left to form what ultimately would become Netscape &ndash;we had to consider the options. At the same time; the market was heating up. Apache was becoming quite dominant. Microsoft had entered the fray. The crypto needed for SSL security attracted regulatory attention. Some browser vendors had a hard time keeping up. And I strongly suspected that things like patents where being filed 'on our code'.&nbsp; Simultaneously &ndash;IBM, whose Domino WebServer was rapidly losing market share...and they were looking at Apache&ndash;to switch to 'Open Source'. But with NCSA dropping out &ndash;there was no clear legal owner of it all. And the impact of the USL vs. AT&amp;T trials over BSD had just started to sink in. So these things; all combined ...and of course the, for me as a European, rather aggressive litigation habits of Americans... conspired and made for a quick decision.</p>
<p><strong><em>&nbsp;Randy</em></strong>: we were operational as the Apache HTTPD Server Project for a few years before deciding to incorporate. This was motivated by a number of things. As I remember, some of those motivations were to put in place some legal protections for contributors and the companies that some of us worked for. Other reasons were to help us form an organization that could being receiving both cash and other donations to help fund the vision that we were developing.&nbsp; The ultimate goal was to build an organization that would support growing the mission of Open Source development participation and adoption.</p>
<p><strong><em>&nbsp;Bill</em></strong>: the decision to incorporate was triggered by IBM's interest in participating in the project.&nbsp; Apache Group was very open minded in listening to IBM's concerns and together, Apache Group, and IBM hammered out an engagement model that we believed would be reasonably lightweight while protecting the core interests of Apache Group and participants. I think IBM's interest in the project also provided another data point validating the viability of Open Source.</p>
<p><strong><em>&nbsp;Mark</em></strong>: see the notes in Apache Week which gives the background...<a href="http://www.apacheweek.com/issues/98-07-10#coremeeting">http://www.apacheweek.com/issues/98-07-10#coremeeting</a></p>
<p><a href="http://www.apacheweek.com/issues/98-07-10#coremeeting"></a><br /><strong>Q: What Apache projects were you contributing to?</strong></p>
<p><strong></strong><strong><em>&nbsp;Aram</em></strong>: HTTPD, HTTPD/2, Commons, a couple of minor ones here and there.</p>
<p> <strong><em>&nbsp;Dirk</em></strong>: mostly the Web server back in those days. And helping various XML and Java projects, such as Tomcat, getting out of the gate.</p>
<p> <strong><em>&nbsp;Randy</em></strong>: my primary involvement was the Apache HTTPD Project along with my participation as a Board member.</p>
<p> <strong><em>&nbsp;Jim</em></strong>: I am still contributing to Apache httpd, even to this day. I also contribute to several other Apache projects, to various degrees, including Apache Portable Runtime, Apache OpenOffice, Apache Pulsar, the Apache Incubator &hellip;</p>
<p> <strong><em>&nbsp;Mark</em></strong>: my involvement in the Apache HTTP Server continued for some years and I handled security issues, occasional release manager, and wrote modules like mod_status. Outside of the ASF, together with Paul Sutton, another core developer, we launched Apache Week. Apache Week was a weekly look at the state of Apache development and ran from February 1996 through to 2004. My work life revolved around Apache too, founding C2Net in Europe which created Stronghold, a commercially supported version of Apache with security.</p>
<p> <strong><em>&nbsp;Sameer</em></strong>: just the HTTP Server.</p>
<p> <strong><em>&nbsp;Bill</em></strong>: Apache HTTP Server, Apache Portable Runtime.</p>
<p> <strong><em>&nbsp;Lars</em></strong>: apart from the Apache HTTP Server project I joined the Conference Planning project when it started. Attending ApacheCon in 1998 left a big impression on me. Meeting the other developers was amazing, but also having a chance to talk to some of the users. It made me realize that we needed to provide regular opportunities for users and developers to meet. A lot can be done via Web sites, Wikis, and mailing lists, but nothing beats meeting face to face. I helped plan ApacheCon events from 2000 until 2009 and served as VP for the Conference Planning project for the last two years.</p>
<p><strong>Q: What is your current involvement with the ASF? What are you up to today?</strong></p>
<p> <strong><em>&nbsp;Jim</em></strong>: I am still quite involved with the ASF and was fortunate enough to have served on the board since Day 1 until last year when I took a break. I accepted the nomination to run again this year so by the time this is published, who knows, I might be a Director again. But as I said, I still am very active on the Foundation and the Project efforts.</p>
<p> <strong><em>&nbsp;Dirk</em></strong>: little; some ASF-wide stuff in general and security responses/coordination in particular.</p>
<p> <strong><em>&nbsp;Randy</em></strong>: unfortunately, my schedule does not allow me to be involved with the ASF these days.</p>
<p><strong><em>&nbsp;Aram</em></strong>: I'm emeritus. About 16 years ago I joined a company that does not allow contribution to Open Source and have been sidelined since then. I'm still an avid reader of the mailing lists and try to keep up with the Board updates. The good news is that in the last few months I have changed enough minds that there is a new legal document going into effect that removes the no-contribution rule.</p>
<p> <strong><em>&nbsp;Mark</em></strong>: one of the main things Apache Week did was track security issues in the HTTP Server project, providing a database of vulnerabilities as well as commentary and severity levels. I rolled this up back to the project and this led to me taking a more focused role on helping with security issues across Apache projects. As Vice President for ASF Security I still work every week on helping projects handle the security issues reported to them. I maintain the CVE Numbering Authority for Apache and am on the CVE board.</p>
<p> <strong><em>Sameer</em></strong>: I don't do very much with the ASF other than use many ASF Open Source projects. These days I am primarily focused on being a Dad to my 3 kids.</p>
<p> <strong><em>Bill</em></strong>: I watch from afar as an emeritus member of the ASF. I follow the Members mailing list.</p>
<p> <strong><em>Lars</em></strong>: I'm not as active any more than I used to be in the ASF. That's especially true since my son was born in 2017... as far as possible I still try to stay up-to-date with the Apache HTTP Server project, Community Development, and with the Apache Security Team. In my day job I am self employed working as an IT consultant, typically with a focus on IT Security Architecture. After living for 10 years in London I'm currently in the process of moving to Berlin.</p>
<p><strong>Q: Could you share how the ASF and The Apache Way has impacted your work? How has it (the impact) changed over time?</strong></p>
<p><strong></strong><strong><em>&nbsp;Dirk</em></strong>: like any industry/peer/professional society &ndash;it is a great place to learn, to refine, to socialize&ndash; that improves day to day professional work.</p>
<p> <strong><em>&nbsp;Jim</em></strong>: we were lucky with the Apache Way... a lot of the decisions that made sense and were "expedient" when we made them have stood the test of time. I think this is because we wanted to create a place where people were welcomed and rewarded for volunteering their talents and skills and all contributions were appreciated.</p>
<p><strong><em>&nbsp;Randy</em></strong>: my involvement with the ASF helped me to solidify my belief that we are better at solving problems in collaborative processes. When I first discovered Open Source back in the late 1980s, it made so much sense that better solutions happened when groups of people were able to discuss and expose their work to peer review by some of the brightest minds in the computer industry. I've had a great luxury to work with some of those people through collaboration in the ASF and other peer reviewed groups. This has made me better at what I do, and has helped me learn how to listen to others in these environments.</p>
<p> <strong><em>&nbsp;Mark</em></strong>: the expertise and knowledge I gained through working on the Apache HTTP Server led directly to my first job offer; and through various acquisitions I'm still in the same company. So I've Apache to thank for several decades of interesting, challenging, and rewarding work. While I've not got involved in coding for Apache projects for quite some time, my expertise and insights are still useful and I am able to keep my hand in writing the occasional script.</p>
<p> <strong><em>&nbsp;Bill</em></strong>: the members of the original Apache Group and the Apache HTTP Server projects quite literally changed my life and world view. I walked in, as a developer 'assigned' by IBM. Although I had to earn commit access through my contributions, the nature of my assignment was antithetical to Apache Group norms. The group accepted me, with some reluctance by some of the members. I cannot thank the members of the group enough for showing me the ropes. I listened, and learned and I am a better person for it. I am grateful for the good fortune of being in the right place at the right time to be at the center of the birth of the Open Source movement. I would like to thank all the members of the original Apache Group and my colleagues at IBM for making it possible.</p>
<p><strong>Q: What influence do you think the ASF and The Apache Way has had in the industry?</strong></p>
<p><strong><em>&nbsp;Dirk</em></strong>: collectively we have, as an industry and as the ASF, found ways to collaborate &ndash;even though we intensively compete in other areas. And that collaboration was crucial for the open Internet; where interoperability was key. It kept the core of the World Wide Web relatively open; preventing large walled-gardens from appearing early.</p>
<p> <strong><em>&nbsp;Randy</em></strong>: I believe that the biggest influence that the ASF has had on the industry is to facilitate participation in the process of Open Source development. While the ASF was not the first ever organization to do Open Source development, I believe that it was one of the first that actively solicited involvement from other corporations to get involved in the process. We had great experiences with a number of businesses that saw the advantages of being part of the solution and dedicated their development resources toward working with the ASF to improve the software that was being developed while bringing forward their customer's requirements. I spent a lot of time in the early days explaining these companies what Open Source was and why anyone would want to dedicate their free time to participating in software development without making money. I'm happy to see that most leading technology companies understand those advantages today and many of them are active participants in the process.</p>
<p> <strong><em>&nbsp;Aram</em></strong>: the Apache License is well known and followed by many non-ASF projects. Many of the ASF projects are leaders in their respective fields/technologies. </p>
<p> <strong><em>&nbsp;Mark</em></strong>: the creation of the Apache License has spawned a whole generation of Open Source software that follows the ideals of Apache even when that software isn't necessarily created by The Apache Software Foundation. A meeting of a number of core Apache developers at an early ApacheCon led to the formation of OpenSSL; which, although not an ASF project, has followed the ideals of Apache and has now even adopted the Apache License for future versions.</p>
<p> <strong><em>&nbsp;Lars</em></strong>: The Apache Way is certainly the ASF's biggest "export". It has inspired many companies to implement similar principles for their internal development projects. Many of the projects at the ASF are cornerstones of the IT industry and the Internet. Open Source software and Apache software in general has enabled many startup companies to compete with the big players and be successful. Proprietary software is on the demise and Open Source software plays a central part of the long-term IT strategy of many companies. The ASF and especially the Apache License has played a big role in this.</p>
<p> <strong><em>&nbsp;Bill</em></strong>: the ASF, and our licensing model, made Open Source acceptable to a much larger audience. The Apache Way provided an equitable way for anyone with the time and right set of skills to influence the direction of ASF projects.</p>
<p><strong><em>&nbsp;Jim</em></strong>: the ASF has served as the cradle and the crucible for just about every innovative technological advancement that has happened over the last decades. The Web, Java, Email, Wikis/blogs, databases, Big Data, PubSub, Machine Learning, AI... all of these technologies have their roots in the projects and communities within Apache. In many ways we have defined the industry and created several. The Apache Way is currently being recognized as the premier software development paradigm, and serves as the foundation for InnerSource, which is transforming Enterprise IT development.</p>
<p><strong><br />Q: What advice do you have for those starting in Open Source? Why is Apache a good community to become involved with?</strong></p>
<p> <strong><em>&nbsp;Jim</em></strong>: Open Source is about honing your skills and your talents, about working with like-minded people who value you and your talents and your contributions; a place where you gain merit based on what you do. Find a project you are passionate about and share that passion with those who feel the same; that's easy at Apache.</p>
<p> <strong><em>&nbsp;Randy</em></strong>: for anyone wanting to participating in Open Source development, I believe that the ASF provides a great structure and community for helping newcomers navigate the challenges of getting started. You'll find a welcoming group of your peers there that will gladly guide you toward things that need to get done or hear you out about the things you believe you could start doing to participate.</p>
<p> <strong><em>&nbsp;Aram</em></strong>: I just responded to something similar on Reddit. My advice would be to pick one or two projects where you are a user, a subscriber. Contribute to that project so that you can see the results right then and there. I have seen people try to bolster their resumes with Open Source project contributions but then when you ask about the project itself they don't know much about them. It's important not only to contribute code but to also contribute to the culture of the project and its direction.</p>
<p><strong><em>&nbsp;Mark</em></strong>: I've yet to find an Open Source project that doesn't have something that someone new can help with; you don't have to be an expert with all the code to contribute to a project &ndash;I've not written any code for Apache projects in over a decade yet there are still many ways I can add value to the ASF. With so many different projects with different userbases with different programming languages there's bound to be something that matches the skills and interest levels of folks starting out for the first time.</p>
<p> <strong><em>&nbsp;Dirk</em></strong>: code cannot live in isolation, or on itself, for long periods of time. Code requires a community to evolve it, to nurture it, to make sure it grows in the right directions and to dampen others that may be just too esoteric to maintain long term. So it is Community Over Code. A very fragile balance. But once; if you get this right &ndash;can really make things fly.</p>
<p> <strong><em>&nbsp;Bill</em></strong>: the ASF is an extremely open and accepting community full of really great people. Pick the project that interests you, then lurk, listen, and learn. Take the time to understand how the community works, then reach out to someone in the community and see if they would be willing to coach you. Go slow, learn, respect the sensibilities of community members and processes and you will be successful.</p>
<p><strong>Q: What do you think is needed to strengthen the ASF as it looks forward to the next 20 years?</strong></p>
<p><strong></strong><strong><em>&nbsp;Dirk</em></strong>: one of our core drivers is &ndash;or was&ndash; the need for the Internet to be open and interoperable. And that this need drove all inclusive, forums such as the ASF where people could collaborate on technology and make it work well together. Even if their employers compete &ndash;or especially if their employers compete. The world has changed since &ndash;large platform players balkanize certain areas and are able to push through 'their' technology on 'their' agenda. This negating their need to collaboratively work with others to be interoperable. Or even their need to 'contribute' back. And simultaneously &ndash;companies and investors are learning how to better control &ndash;or game&ndash; these collaborations; how to create 'pay to play' Open Source foundations; and how to allow money to drive product direction. These two things break the feedback loop that allowed Apache to mature, grow, increase quality. So we need to learn how to deal with this; find new positive feedback loops and amplifiers to offset those we've lost.</p>
<p> <strong><em>&nbsp;Randy</em></strong>: I think that one of the things that any Open Source community would benefit from is active involvement in educational curricula. Through involvement in the education process in both K12 and beyond, Open Source communities gain relevance and participants.</p>
<p> <strong><em>&nbsp;Aram</em></strong>: too many thoughts on this one ...I think we do need not only more communication, but better means of communication. As "techies" I think our communication is a bit too technical at times. One more P.S. here ... the "ASF" logo should be more of a brand. It's simply an umbrella project and a copyright today.&nbsp; Looking at the next 5, 10, 20 years the ASF brand should stand for good practices, open communication, Open Source, etc. &ndash;not that it isn't today ... it simply doesn't have the reach into the business world.</p>
<p> <strong><em>&nbsp;Bill</em></strong>: interesting question. Is 'strengthen' the right way to look at the future or is 'adapt' a better word? People and company motivations for participating in Open Source communities have evolved and will continue to evolve in the future. The ASF, as a public charity, will need to adapt to changing requirements in order to survive and thrive.</p>
<p> <strong><em>&nbsp;Lars</em></strong>: we must make sure that we strengthen the use of "The Apache Way" principles, and continue focusing on the community and individual contributors. We must learn from cases where a new contributor left a project, because the project wasn't welcoming or open enough and try to fix these issues. Innovation cannot happen without a healthy community.</p></p>
<p><strong><br />Reinforcing "Community Over Code" is a great way to close this out! Thank you, Aram, Bill, Dirk, Jim, Lars, Mark, Randy, and Sameer, for your thoughtful responses and sharing these great memories &ndash;it's so great to catch up with all of you.</strong></p>
<p><strong>Thank you, and your fellow founders &ndash;Brian Behlendorf, Ken Coar, Miguel Gonzales, Ralf Engelschall, Roy Fielding, Dean Gaudet, Ben Hyde, Alexei Kosut, Martin Kraemer, Ben Laurie, Doug MacEachern, Cliff Skolnick, Marc Slemko, and Paul Sutton &ndash;for this tremendous gift to humanity. You have transformed our lives.</strong></p>
<p><em>Interviews by <a href="https://apache.org/foundation/press/pr_1999_06_30.txt">Sally Khudairi</a>.</em></p>
<p># # #</p>

  </div><a class="u-url" href="/foundation/entry/our-founders-look-back-on" hidden></a>
</article>

      </div>
    </main><footer class="site-footer h-card">
  <data class="u-url" href="/"></data>

  <div class="wrapper">

    <h2 class="footer-heading">Blogs Archive</h2>

    <div class="footer-col-wrapper">
      <div class="footer-col footer-col-1">
        <ul class="contact-list">
          <li class="p-name">Blogs Archive</li><li><a class="u-email" href="mailto:issues@infra.apache.org">issues@infra.apache.org</a></li></ul>
      </div>

      <div class="footer-col footer-col-2"><ul class="social-media-list"><li><a href="https://github.com/jekyll"><svg class="svg-icon"><use xlink:href="/assets/minima-social-icons.svg#github"></use></svg> <span class="username">jekyll</span></a></li><li><a href="https://www.twitter.com/jekyllrb"><svg class="svg-icon"><use xlink:href="/assets/minima-social-icons.svg#twitter"></use></svg> <span class="username">jekyllrb</span></a></li></ul>
</div>

      <div class="footer-col footer-col-3">
        <p>This is an archive of the Roller blogs that were previously hosted on blogs.apache.org</p>
      </div>
    </div>

  </div>

</footer>
</body>

</html>
