All Posts Tagged With: "apache"

ApacheCon Review and Slides

I got back from jApacheCon last night. I like the show, but the ASF has certainly shifted over the years from programs written in C (httpd, mod_perl, PHP) to programs written in Java (Ant, Axis, Beehive, Cocoon, Geronimo, Jakarta, Struts, etc.).

This has caused the show to have an increasingly large amount of Java content — Day 1 and Day 2 were almost 100% pure Java. Since I can’t even figure out what an application server does (serve up applications?), most of the sessions are wasted on me.

The nice Java programmers try to explain how their sites take advantage of all these nifty Java projects, and I’m always forced to apologize that I really have no idea what they’re talking about. Seriously, what are Tomcat and Jackrabbit? I don’t know.

This has caused the PHP crowd to dub ApacheCon with new names. Chris prefers JApacheCon; Andrei likes JAvacheCon; I want either ApacheCon4J or jApacheCon.

However, Day 3 was a nice mix of PHP, Ruby, and Michael’s httpd talks. Fun stuff.

I think my talk on “Consuming Web Services Using pHP 5” went over well. I was a little rushed at the end because there was a 5 minute delay getting started due to technical difficulties reassembling the sliding wall panels used to split up the ballroom into the separate session halls. It was also the first time I gave the talk, so I didn’t quite have the timing and pacing down pat. (I was also way hopped up on the six glasses of iced tea I drank during lunch.)

I usually find that I need one slide for every two minutes of session time. However, I had 43 slides for a 60 minute talk, which was about 5 too many today. Fortunately, I intentionally put some slides I could skip quickly by at the end of the deck, so there was a few minutes for Q&A. Still, I wish I had left more time for audience participation.

For those of you who are interested, here is a PDF of my slides.

There’s a short over view of REST and SOAP; three increasingly complex REST demos: reading a RSS feed, searching flickr and creating an image gallery, and adding tags to a flicker photo; and an eBay SOAP example leading up to my eBay Motors Google Maps mashup. The final few slides are my overall takeaways from playing around with Web services for the past 18 months.

Afterward, I answered questions for a bit and then managed to stand by for an earlier flight — getting me back to San Jose at 6:30 instead of 8:30 — and letting me drop in on our holiday party at Zibibbo.

Zend Framework, IP, and Big Company Lawyers

IP Concerns are very real; I’ve had a couple of customers bring them up in the past. It boils down to trust; It doesn’t matter if you and a thriving community have written the best code in the world; without someone to vouch that all proper measures were taken, there is an increased risk associated with your project.

This is the second time I’ve heard IP as one of the motivations behind the Zend Framework.. The first time was from David, and now there’s this line from Wez.

I never used to think about clean IP. I knew that some organizations, such as the Apache Foundation, make committers sign contributor license agreements, but as I am not an ASF contributor, it wasn’t something I had to deal with.

That’s changed now that I’m at eBay.

Last June, we announced that we were going to open source our Windows and Java SDKs. These are wrappers around our Web services for developers that make it easier to write code that links up with eBay. There’s nothing fancy about them, so the benefits of open sourcing them far outweigh the risks.

However, all of a sudden I have a whole new set of issues to worry about:

  1. What open source license will I use?
  2. What about eBay IP that might be part of the SDKs?
  3. What if someone contributes something they don’t own the rights to, or is under a non-compatible license, or has a patent on, etc, etc.?

What a mess. It’s not easy open sourcing anything non-trivial when you’re a big company — especially when it’s part of an active project.

I must admit our legal team was surprisingly clueful when it came to open source. Somethings they knew. Others they didn’t, but they found a firm to assist who knows a lot about open source licensing and issues.

I had a long conference call with four lawyers, and at no point was I forced to explain that all open source licenses were not like the GPL. Actually, that’s unfair because these guys not only said smart things, they asked smart questions, and had smart answers to my questions.

The original license I suggested was the good old MIT License. However, that didn’t pass our internal IP test. The MIT License was written in a world where software patents weren’t a major legal issue, and for better or worse we no longer live in that world.

So, to protect ourselves, we moved away from the MIT License. At first, our legal team wanted to write their own custom license, but I pushed back and asked them to explore the Apache 2.0 and CDDL. Apache 2.0 didn’t work for them, but the CDDL did. (Much to their surprise. Big shout out to the Netscape and Sun lawyers for writing something the eBay team was happy with.)

Things are not 100% final, but I hope that we’ll be able to release our code under the CDDL late this year or early next year.

Of course, that had some additional side effects, as we had to scour our existing code to make sure there were no license incompatibilities with the CDDL. Apache Axis uses Apache 2.0, which looks to be okay.

Unfortunately, we had spent some time writing an example that hooks up to a MySQL database using MySQL Connector/J. Frankly, I’m not sure if it was ever legal for us to bundle the MySQL code or even publish the sample code given MySQL’s interpretation of the GPL. Anyway, that code is out. It’s not worth it for me to get a commercial license from MySQL and I can’t tell what is or isn’t allowed.

Actually, if someone from MySQL can update their FLOSS exemption page to include the CDDL, we may be good. Since CDDL is similar to MPL, I hope they don’t have any problems doing this. But my lawyers don’t enjoy me playing with GPLed code, so we may not be good after all. We’ll see.

In the reverse direction, we patched Apache Axis with some improvements. However, I believe we just supply the patches with our SDKs as standalone files, and we’ve never contributed those back to the main trunk. I don’t know why. I don’t know if it was for technical or legal reasons, or just because we were lazy. But I would love to figure out what I can do to help share these changes with the extended Apache Axis community.

It just goes to show how licenses and IP really do matter, and big companies really do take this seriously. This is a good thing, and only goes to strengthen open source licenses. However, I think it’s come as a surprise to some open source developers.

I always see open source developers worry immensely about mashing up GPL code with BSD code, yet, at the same time, they don’t bother to check to see where their commits are coming from and if they’re clean. Therefore, they’re even more surprised when a big company cares.

Again, I think this is another big step in the right direction for open source. We all know free refers to more than just cost. It’s also the freedom to modify and redistribute code. At the same time, the cost of something is more than the purchase price. It’s also the risk associated with it. By reducing risk in all forms, we make the code even more free.

Adam’s Fall Conference Schedule

Now that’s I’m back from FOO Camp, I’m checking my calendar to see what conference events I have coming up. For those of you keeping track (hi mom!), here they are:

  • Microsoft PDC: September 13-16 in LA. I haven’t managed to wrangle a chance to speak yet. :)
  • Zend/PHP Conference: October 18-21 in Silicon Valley. Speaking about eBay Web services. Final talk TBD.
  • ApacheCon US 2005: December 10-14 in San Diego. Speaking on “Consuming Web Services Using PHP 5”.

I may also go to Web 2.0 and the 4D Summit, but I have yet to finalize those events.

The ApacheCon talk should be quite cool, as I will be showing off nifty real-world web services examples. For example, sucking RSS bookmarks into a WordPress blog, or mashing up eBay Web services search results with the Google mapping API. Here’s the full abstract:

As we move into the world of Web 2.0, PHP developers must increasing include Web services in their toolkit of skills. This session covers how to implement REST and SOAP clients using the latest PHP 5 extensions, such as ext/soap, SimpleXML, and xsl.

This is not an academic talk discussing theory and specifications. Examples show applications of popular Web services, including, eBay, and Google Maps.

Don’t be left behind. Come to this session and learn how to integrate Web services into your code.

I have most of the code already written in various places, so there’s only the problem of creating the slides. Once I know more about my other talks, I will pimp them here, so stay tuned for all the details.

Vegas baby! Speaking at ApacheCon 2004

I just heard that I’m going to be speaking at ApacheCon 2004 in Las Vegas on Tuesday, November 16th. I’m going to be giving my “PHP 5 Sucks! PHP 5 Rocks!” talk. If you missed it at OSCON, here’s your second chance.

I will also be hosting an eBay BOF. Place and time TBA. If you’re an eBay developer, want to write applications that talk to our Web services APIs, or just interested in hearing stories about why eBay is cool, be sure to come on by. At our last BOF, we talked about clear plastic raincoats, so this one is bound to be just as interesting, if not more so.

There are quite a few excellent PHP talks this year at ApacheCon: Chris Shiflett’s speaking on PHP Security and co-presenting with Geoff Young on testing PHP applications using Perl. (Honest! It’s a serious talk. In fact, it may be the first PHP talk I expect to learn something from in years.)

Also, Christian Stocker is giving two talks on XML in PHP 5: “XML on Crack” and “XML on Speed.” (Really. I can’t make this stuff up.) Christian’s been a big force behind XML in PHP for years. If you’re at all interested in PHP and XML, you’ll want to listen to his presentations, as you’re bound to learn three or seven new tidbits you can use at home.

And, of course, Andi Gutmans is giving the obligitory “Introduction to PHP 5” presentation. (He seems to come to quite a few more conferences now that he lives in Silicon Valley instead of Israel, doesn’t he?)

apxs2 causes PHP install to barf under Suse 9.1 and Apache 2

At work, I’m forced to use a Windows XP machine largely because eBay’s addicted to Outlook, but also because that’s the type of thing you need to do to play nice within a big company. However, that doesn’t mean I can’t route around this pain, so I installed VMWare and loaded up Suse Linux 9.1 in a virtual machine. Now I can hack on PHP in a somewhat familiar environment.

I say “somewhat” because this is my first time using Suse. I used to run Red Hat and then I moved to Mac OS X on my home machine, so it’s taking me a little bit of time to get used to Suse. (I picked Suse because my boss has a copy of the Suse CDs lying around and I decided it was easier to install from CDs than over the Internet.)

For one, Suse has a package for Apache 2.0, but not for Apache 1.3, which is a first for me. Also, Suse has organized its httpd.conf file in such a way that all the master file does is Include a variety of specialized child configuration files. Unfortuntately, this breaks the PHP install process.

When you run PHP’s make install command, it kicks off a request to apxs2 to handle the Apache 2.0 specific stuff. apxs2 loads in your httpd.conf file and looks for a LoadModule directive, so it knows how it should format the line it should add to httpd.conf to enable PHP.

However, apxs2 only slurps in the master file. It doesn’t resolve any of the Includes, so it can’t find any LoadModule lines. This triggers an error, it dies, and as a result, PHP aborts the install.

I reported this as an Apache bug, but it was closed with a status of “Won’t Fix” because they don’t want reimplement the parser inside of apxs2.

From looking at the apxs2 code, I see there is a simple work around, which is to put a commented out LoadModule directive in the master file. apxs2 allows you to fool it into thinking it’s found a valid line, and you can go from there. You still need to fix up your configuration file, but at least the install doesn’t die.

However, when I tried to report this back to Suse, I was totally defeated. I could find no place anywhere on their Web site to access a bug database. Hum… That seems to defeat the notion of open source as a environment for parallel debugging. Oh well.

So I’ll blog it and hope that someone who Googles for “At least one LoadModule Directive already has to exist” will find this.

PS: Some further searching has uncovered that Debian was also affected by this issue. I don’t know it they’ve fixed it, however.