Showing posts with label james. Show all posts
Showing posts with label james. Show all posts

Friday, May 25, 2012

If Google and Oracle made aeroplanes where would your sympathy lie then?


There's been a lot of talk about the Oracle vs Google court case, and I was reading this when it occurred to me that I have a few reservations about the strength of Google's argument, and perhaps you'd like to hear them.

If you know about the technology you might want to skip ahead a bit, but I have to cover off some background, so we all know what we're talking about.

My thinking first took shape when the Apache Software Foundation (ASF), of which I am a member, was making its initial steps towards developing a Java Virtual Machine(JVM). At its most simple abstraction the JVM is the thing that runs on your computer, and in its turn it executes the java programs, they are loaded into it. The JVM "hides" the differences between operating systems from the Java programs. For example Mac's and Windows might have different ways for a program to interact with memory, the JVM provides memory management which is the same for all java programs, to make this happen a Windows JVM will be different "inside" than a Mac one.

So Apache were attempting to create an Open Source JVM called Harmony, and it was during early discussions about the "Java Mail API" which I was involved in that I first ran into the issue which is being tested in court right now. (we will ignore the definition of an API at the moment, because we come to that a bit later, it stands for "Application Program Interface" but you don't need to know what that means)

 I was PMC Chair of Apache James, a 100% Java email application server, and I had got chatting to the Harmony folks about one thing and another when the subject came up about whether an ASF licenced version of the JavaMail API  would have a more natural home amongst the java email fanbois of the James project because it is a framework that allows people to write java programs that handle email more easily.

So I started to think about what this would mean from a code perspective, and began to untangle things in my head, here's where I get to the point, stop skipping!

The thing that we call "JavaMail" is composed of three parts, and this is true for many other Java API's including the ones in the court case, and in fact much of the JVM itself. Those parts are:

i) A specification or definition, this part is the API specification.

b) An internal component which makes one half of the software, This part is the API interface.

2a) An example of the other half that you are free to use, or to replace with an implementation of your own. This part is an implementation of the API, whoever wrote it.
 
If we use an analogy here, to avoid getting bogged down in abstract descriptions of computer science ideas, we can imagine that an airliner manufacturer would manufacture the floor in such a way as a seat manufacturer could manufacture seats which could be installed after the plane is built, without the plane having to be adapted.

In order for this to happen the specification for the floor connections would be published and made available to seat manufacturers, who would then compete their little hearts out to make the best/cheapest/lightest seats on the market compatible with the floor specification, and sell them directly to the owners of the planes to be installed after the plane is delivered.

The airliner manufacturer will make floors and install them in customers planes.

The specification is a piece of intellectual property, it has taken time to produce and does have some intrinsic value.

The situation in the Oracle v Google case would be analogous to the situation in which a rival airline manufacturer has published an identical copy of the specification of the floor, manufactured compatible floors and is wooing customers and seat manufacturers from the originator of the specification with the promise of compatibility for all the seats and tooling and expertise that they have invested in.

What Oracle are contending, or trying to, or failing to, or *ought to be* saying, is that the specification is not in the public domain, it is their intellectual property and they are within their rights to restrict its use to allow people to implement the replaceable parts (the implementations, the seats), and not the internal part (the interfaces, the floor). In other words, not only is it breach of copyright (as the court has recently determined) but it is also probably not "Fair Use" (which they are still to decide upon) for Google to produce an API of their own to Oracle's specification. If it is, then people are going to very quickly stop publishing API's that allow competitors to benefit from years of research and development.

Of course this is then masked by a big shit-storm of FUD and misdirection by both sides, trying to veer off the subject onto other more easily determined areas of IP law where they believe they have an edge, such as:

The "field of use" restrictions, which are important but not directly relevant to the API arguments.

Patent infringement, of course, which is the modern lawyer's soup-of-the-day for the whole decade and IMHO totally irrelevant here.

And the distracting but easy to comprehend copy'n'paste IP crime where code appears to have been copied from somewhere that it couldn't have been legally.

The last one is the worst FUD of the lot because that is copyright infringement, as is the case where the specification is used in contradiction to the terms of its licence, but its a different crime, a separate incident, qualitatively something else altogether .

From this point of view I don't think Google's position is as solid as they might want it to be, or as solid as the judgements may suggest, but the truth of the matter is that Sun caused this whole debacle by vacillating over the legal status of Java, the API's the JVM, the TCK and a raft of other things that they thought morally *ought* to be open source and free for people to use for any purpose but weren't in law, because they never made it clear enough what was being explicitly permitted and what was being benignly tolerated.

And that is why I have mixed feelings about the merit of Google's case, and some grudging understanding of Oracle's position, and a bad taste in the mouth about Sun's failed attempts to be Machiavellian with the IP laws.

And if you're wondering what happened to James and the JavaMail API, we never did take it on, its a very poorly designed API and would have brought us a lot of work with precious little benefit.


Wednesday, November 18, 2009

Apache James is 10 years old too.


Happy Birthday Apache!

I was checking out the 10th anniversary press release

Several Apache projects also celebrated their 10th anniversary
and realised that Apache James is 10 years old this year as well. Way to go James Team, 10 years and we still haven't resorted to physical violence. Check the wayback machine if you don't believe me.

The top level project was established by the Board on January 22, 2003, with these ugly dudes on the 1st PMC:
Serge Knystautas
Danny Angus
Peter Goldstein
Noel Bergman
Charles Bennet

And I read the two documents The ASF was sent, I think I'm going to move to Oakland, or at least adopt their public holidays.

The Mayor of Oakland's proclamation that november 4th is Apache Software Foundation day wierd, but cool.

The Letter from Arnie. Question: Will he be back?


Tuesday, November 17, 2009

What people are saying about Apache James


Here are some links I found for James related things,

Most notably I found this site JavaEye I can find a few mentions of James but the content is in Chinese. This really begs the question how can we encourage Chinese, Japanese, and people from other cultures who are not as likely to communicate in English as Americans, Europeans, and people from India, to engage with our projects?
I would love for the people who are writing on JavaEye to make themselves known to the James community, we'd be happy to help spread the word about James, and are always grateful to people who can help us to get in front of a non English speaking audience.

"James is a very solid and reliable piece of software" Thanks Ant, nice of you to say so.

Niall Commiskey wrote EMAIL notifications with Oracle SOA Suite 11g which illustrates nicely what a useful role James can plan in enterprise systems. Even if it is only used to provide a development or test environment for email, James gives java developers standards compliant protocols *and* full control over the message content and routing, you can create testing stubs, reports, and integrations into other systems that will fully expose the output from your system.

And finally this Yet another email client – Apache James Hupa from Sree Balakrishnan, talking about the latest James sub-project Hupa (IMAP-based Webmail written in GWT) If you're interested in Hupa check out the site first but you may want to read this, if there haven't been any releases yet.


Wednesday, March 19, 2008

Google Summer of Code 2008 - Apache James email Projects


The Apache James team have submitted two proposed student projects for Google Summer of Code 2008, you can read them here.

In brief they are:

1) Develop a VERP Mailet to allow James to write VERP modified return addresses on outbound messages, and an inbound mailet/matcher to identify VERP bounces and invoke configurable "do something" code.

And 2) James' provided mailing list manager is fine for small closed groups, but lacks the functionality of a more robust MLM, the project is to add some all or more of the following features subscriber and message moderation, double opt-in and bounce handling.

Spread the word, James needs Students!


Saturday, February 02, 2008

Storing MIME email in JCR with James and Jackrabbit


I read a post on the James dev list that mentioned this blog posting which goes into some detail of the method Jukka Zitting used to create a JCR message repository (using Apache Jackrabbit) for Apache James in the James sandbox. I thought this would be a good excuse to mention that work here.

I find it an exciting idea because it takes the inherently richly structured MIME messages and stores them in a way that can cope with the full richness of the structure including the mixture of content types, the recursion of nesting, and the mixture of encodings and character sets supported very well by the totally fan-bloody-tastic MIME spec. In fact JCR is much more aptly suited to storing MIME structures than a traditional RDBMS or the filesystem because it is flexible in the right ways and can also manage the metadata.

The expensive act of parsing the MIME message is only carried out once, when the message is exploded into the store, and thereafter the whole message, or just specific parts of it, can be passed around as a serialisable reference to a location rather than as unserialisable streams, or big byte[]'s.

What's more any system that can manipulate the JCR repository can become involved in the life of the messages, for example web mail stops being a web interface for traditional mail protocols and becomes a first class citizen, web applications built straight ontop of the repository.

Add Web Services and the repository can participate in CRM systems which use WS to integrate channels and systems into a single Agent Desktop and a Single Customer View.

The fact that Jukka made the James JCR repository (with an html viewer as well) in a few hours at Apachecon EU is testament to the suitability of JCR, the extensibility of JAMES and the value of the Hackathon as a tool for innovation.

Have a look at the code here or subscribe to the server-dev@james.apache.org list to discuss it.


Wednesday, January 02, 2008

New Chair for Apache James PMC


Its been a long holiday, and I meant to blog this much sooner, but I've been too busy hanging out with the family.
On December 19th the ASF board passed a motion to recognise the change of the Apache James PMC chair from Serge Knystautas to myself.
This is a big honour for me, and I intend to work hard in 2008 to live up to the example Serge has set.
I haven't much to say about James right now, but I'm sure I will be saying more as the months progress.


Thursday, November 15, 2007

Bugger off! email is still great.


Enterprise 2.0 is the term for the technologies and business practices that liberate the workforce from the constraints of legacy communication and productivity tools like email

Bollocks to you, I say, email is still a great productivity tool. We're just starving it of attention, and innovation, because we can't be bothered solving the problem of spam.

IM is not email 2.0, and it is high time we figured out what email 2.0 should be.


Thursday, November 08, 2007

James power MarkMail


I blogged the other day about a cool new list archive tool, MarkMail.

Well it turns out that the man behind it is Jason Hunter, and he was kind enough to post this message to the James list the other day.

Turns out that it is none other than our own Apache James that is the spider in the middle of the web, handling all the mail, with, I assume, bespoke mailets converting them into XML and storing them in the the Mark Logic server.

Nice one Jason, and thanks for sharing.

I wonder what other people are doing with James? Do you have a James case study I could share? If so get in touch!


Monday, August 20, 2007

Open Source, Spectrum of liberty


I just read Stefano Mazzocchi's post "On Version Control Architectures and the Fear of Displacing Innovation" he paints an eloquent picture of a tension which I'm sure is familiar to most, if not all, contributors to open source projects. How far do we have to constrain what we let each other do in order for our project to have a discrete identity which exceeds the sum of its parts, and at what point towards the libertarian end of the spectrum does our project loose coherence and become equal to or even less than the sum of its parts.

Stefano says "how many potential contributors did we miss because we didn't give them commit access soon enough" and I know exactly what he means. I'd like to broaden the question though, and ask why we choose to encumber ourselves with unweildy processes and centralised infrastructure?

I recently proposed that Apache James could lower the bar to publishing news stories if we used a blog. The ASF doesn't provide any blogging infrastructure, and if we used an off-site service, such as blogger (as used to publish this blog), it would be a "turnkey" operation and not involve Apache infrastructure in any effort. However my proposal has been met by a resounding "Hmmm... I'm not sure..." with most of the reservations being around hosting official content off-site. To me there seem to be many concrete benefits and very few drawbacks with out-sourcing this function and I was surprised that others didn't share my point of view.

So reading Stefano's post made me wonder, why *do* we feel that we have to control the infrastructure in order to "own" the project? Why do we want even to consider expending our limited resources on hosting for ourselves services which we can have for free?

Ok Initially we had to own the infrastructure so that we could operate the services we needed, and, yes, today we could argue that we want to retain full control over certain key services, websites, email, source control. But I always believed that the Apache Way was about community, proven processes and best practice, a brand and some world class products.

Don't take this the wrong way, I know that ASF infrastructure is vital to the ability of the projects to operate, and that it will never be possible for me to repay the people who set it up and who volunteer to maintain it on our behalf, but I never really thought the infrastructure was anything other than the key enabler. We have dozens of people hosting mirrors of our downloads, and no one complains about that, why would they, it benefits everyone.

Using a no-cost off-site service doesn't IMHO automatically compromise your reputation or undermine the moral authority of your message.


Monday, August 13, 2007

Apache James At Apachecon US 07


== UPDATE ==
I've had to withdraw this talk, because it coincided to closely with the New Job. Sorry.

===

My Talk "Apache James - The Complete Email Application Platform" has been accepted for Apachecon US 07 in Atlanta on the 15th of November at 15:00. Be there!

If you didn't see me at Apachecon EU 07 in May you can look forward to a description of the major features and components of the Apache James mail server, with a focus on how the modular architecture can enable extending, customising and embedding of email functionality into systems and products of all kinds with an email related need.
If you want to integrate email with your enterprise systems, or want to add an open source email application server to your J2EE stack this talk is for you.

Since I first gave the talk in Amsterdam in May life and art have converged, the Mailet API has its own sub-project and the componentisation of James' trunk has proceeded along very similar lines to those anticipated by that talk.

I will be presenting the same outline but with some added detail, news of progress and further plans from the James team, so even if you heard me in Amsterdam I'm sure I will have things to say which will interest you.


Thursday, May 31, 2007

Mime4J version 0.3 released


The Apache JAMES team is pleased to announce the release of Apache
Mime4J version 0.3. Apache Mime4J mime4j provides parsing for e-mail
message streams in plain rfc822 and MIME format.

The 0.3 release is the first official release under The Apache Software
Foundation umbrella.

Distributions are available from the download page here:
* http://james.apache.org/download.cgi

More information on Apache Mime4j can be found at the Apache JAMES
project site:
* http://james.apache.org/mime4j/index.html

The released packages will be also deployed to the central maven
repositories in the next days.


Monday, May 21, 2007

My James slides from Apachecon EU07


Slides from my Apachecon EU talk on James can now be found here


Wednesday, May 09, 2007

Mailet Site goes up


Thanks to everyone who helped, we now have a site for the Mailet API.


Thursday, May 03, 2007

Apache Mailet API lives


We've just finished setting up subversion and the build stuff for the Mailet API sub project of James.

There are still tasks to complete:

  1. Fix james-server trunk before the next nightly build
  2. Change the server website "mailet" links
  3. Create some decent content for the API website
  4. Get the web-site updated
  5. sort the svn commit emails so they go to the right list
  6. release the current version from the sub-project.
However its a big step, and one I've been looking forward to since James became a TLP.


Talk done



img_6490.jpg, originally uploaded by herberts.

Gave my talk on James yesterday, I'm not sure how it went, I can never tell. However its done now. I could've done with less material, or more time, which isn't such a bad thing.
If it gets accepted for Apachecon US 07 I'll definitely rationalise it a bit.


Tuesday, May 01, 2007

Hackathon



Hackathon, originally uploaded by ki113rb33s.

Well I got here, after a 1hr delay to my flight, and a further delay while the pilot drove round the airport looking for a parking place. "There's a space over there dad" we all yelled.

And lo! The hackathon is already progress.


Monday, April 30, 2007

Apache JAMES Server 2.3.1 released


The Apache JAMES project is happy to announce the final version
of JAMES Server 2.3.1. This is a bugfix release. You should upgrade as soon as possible.


JAMES Server 2.3.1 can be downloaded at:

http://james.apache.org/download.cgi


The bugfixes / tasks since 2.3.0 are:

* Remove ordb.org from docs
* OOM caused by unbounded cache in InetAddress (was James leaks memory slowly)
* sendmail.py doesn't handle multiple TO-recipient
* sendmail.py crashes on line "from_addr = os.environ['USER'] + '@' + socket.getfqdn()"
* ServerConnection doesn't properly handle the TCP/IP backlog
* Search & Fix broken links on the new website
* MBoxMailRepository.remove(String key) causes ClassCastException
* Failure to correctly set mail.smtp.localhost leads to mail servers
being listed on cbl.abuseat.org and mail being rejected by Spamhaus.
* MailAddress not check for valid syntax if new MailAddress(user, domain) is used
* sendmail.py use localhost to connect to local smtpserver. We should use 127.0.0.1
* exporting variables using build.sh on solaris breaks
* James will not start if there is directory with too many files and folders in the repostiory path
* python/sendmail.py is not added to the binary distribution package

* Update license headers to follow the latest ASF requirements as of November the 1st
* Merge 2.3.0a1 to 2.3.0 final releases on JIRA
* Upgrade dnsjava to 2.0.3 when available
* Add documentation for the dns ttl issue
* Make sure our container use an expiration for cached dns data


For more information see the changelog page.

Apache James Team


Tuesday, April 17, 2007

Apache James at Apachecon US 2007


Well the Call For Papers for Apachecon US 2007 is now open:

  • The Call for Papers is now open for ApacheCon US, to be held November
  • 12-16 at the Peachtree Westin, Atlanta. The conference will consist
  • of two day of tutorials (November 12-13) and three days of regular
  • conference sessions (November 14-16).
  • Please log in to the website at http://apachecon.com/html/login.html
  • to submit your proposal.
I've submitted the talk on James which I'm giving in Amsterdam on May 2nd.


Wednesday, April 11, 2007

Apache James at Apachecon EU 2007


While I'm blogging I ought to tell you that I finished, and submitted, the slides for my talk on Apache James at Apachecon EU 2007 and let me tell you, if you like diagrams you're in for a treat!

Now I need to put some polish on the lyrics.


Friday, March 09, 2007

James - Google Summer Of Code 2007


Google Summer of Code '07 will soon be accepting applications from students.

If you have an idea for a student to work on as a James SoC project send it to general@james.apache.org or post it on this wiki

If you are a student and want to submit an application to google about James, please discuss it on the general@james.apache.org mailinglist as well.

Not only do we have a lot of knowledge about what James needs (and doesn't need) we also have two years of experience of evaluating the proposals and experience mentoring two former SoC students.

We can help you to polish your application, and introduce you to our project.

James missed out on a SoC '06 student so I want to make sure we do everything we can to get good proposals and have them accepted.


I know nothing, I'm not a fortune teller, and you'd be insane to think that I am. This disclaimer was cribbed from an email footer I once received. It is so ridiculous I had to have it for myself.

Statements in this blog that are not purely historical are forward-looking statements including, without limitation, statements regarding my expectations, objectives, anticipations, plans, hopes, beliefs, intentions or strategies regarding the future. Factors that could cause actual results to differ materially from the forward looking statements include risks and uncertainties such as any unforeseen event or any unforeseen system failures, and other risks. It is important to note that actual outcomes could differ materially from those in such forward-looking statements.

Danny Angus Copyright © 2006-2013 (OMG that's seven years of this nonsense)