Welcome!

Linux Authors: Elizabeth White, Liz McMillan, Kevin Benedict, Greg Akers, Patrick Carey

Related Topics: Java, Linux

Java: Article

Filtering the FUD from Java Politicking on "Open-Source Java"

Filtering the FUD from Java Politicking on "Open-Source Java"

  • Read "Let Java Go" - ESR Writes an Open Letter to Scott McNealy
    ·
  • Read "No Sun Is An Island," Says Javalobby Founder
  • Read Should Sun "Let Java Go"? Counter-Arguments vs Open-Sourcing Java
  • Read "Let's Collaborate on Open-Sourcing Java": IBM Writes Open Letter to Sun
  • Read Sun's Schwartz: IBM's Request "Seems a Little Bonky"

    Until recently,  the ongoing Sun-IBM "open" Java debate had been a quiet collaboration (witness the agreement to allow Apache a "scholarship" for certification of Geronimo). That quiet debate had the lid blown clean off it recently by a series of very public (some might even say grandstanding) moves by Sun and IBM. The results are less about who's right than they are about who can play the media trump card better.

    I've spoken with people from IBM and Sun over the past few weeks, as well as some of the other players in this developer melodrama. And here, best I can tell, is the gist of the ongoing thumb-wrestling match for world domination between the two:

    First of all, there are people within both companies who very much want to see a single, unified, open-source implementation of Java--without forks, without compatibility breakdown-- to help widen adoption of the technology (and get it in the same CD set with every Linux distribution).

    But Sun wants to continue to derive revenue from Java licensing; Sun spokespeople say that the Technology Compatibility Kit license fees barely support the organization that puts them together, so all of the actual money that Sun derives from Java (aside from the sale of its own Java products) is from licensing the source code to the reference implementation (including, on the J2EE side, the same source code that makes up the Sun Java Enterprise Systen application server).

    Obviously, IBM is less concerned about whether Sun will be able to continue to derive revenue from licensing the reference implementation. And it appears some business-side people at IBM see some advantage to following a different route to open source--one that leaves compatibility (and the need for them to continue to license Java code) out of the final equation.

    You can understand, at some level, IBM business managers' frustration. They've dumped a considerable amount of IP into Java, and they still have to pay license fees for it. About 80% of the original J2EE was written by IBM.

    On the other hand, you could see IBM's recent comments as a friendly push. At least that's how IBM sees it. "We've tried to be relentlessly cheerful about this," Bob Sutor, IBM s director of Websphere infrastructure software products, told me. "We're really trying to be positive and constructive about this. We're not saying tomorrow you have to do this. "We're saying,Java's big when you look at the whole thing, let's start s lowly, figure out what we're talking about, see how we can phase this thing in, what makes sense so all the stakeholders can get what they want out of this thing, and take it from there. "

    Regardless of the intent, the whole thing has taken what had been a very long, quiet conversation about the open source future of Java and turned it into something of a circus. Open-source true believers, like Eric Raymond, have been lobbing their own grenades from the sidelines, making the last month a very interesting one, in a Chinese-curse sense.

    The Build-up to This Week

    About a month ago, as the community surrounding the IBM-led Eclipse open-source development tool project prepared to attend EclipseCon, Sun's Rich Green issued an open letter to Eclipsites, detailing why Sun would not (for the moment) be joining the Eclipse. The letter got mixed reviews.

    Basically, Sun decided to not adopt Eclipse as part of its toolset, because the company didn't want to abandon its investment in netBeans, another (Sun-led) open source project. It wasn't a definitive, final blowoff to Eclipse. But it was clear that Sun wasn't going to work on something it wasn't planning on using. "Diversity" and all that.

    At the EclipseCon conference, Simon Phipps, Sun's technical evangelist was on hand, mostly to just speak about the importance of open source. But in the Q&A, members of the audience steered the conversation in a more specific direction. Here's a verbatim transcript of part of Simon's answer to questions about why Sun hadn't yet open-sourced Java:

    " If you're going to ask, 'Why hasn't Sun given its implementation to the open source community?', I would retort, 'Why hasn't IBM given its Java implementation to the open source community?' 'Cause I don't believe it has. I believe IBM has at least three clean-room implementations of Java; I don't recall IBM ever creating an open source community with any one of them. Why hasn't anybody else, who has a Java implementation, created an open source community? I think that's the real question to ask."

    Perhaps he meant to ask that in the future tense, considering who his audience was. Because in the present tense, that's an easy question to answer: the Java Community Process rules haven't let them, at least up until now. Under the new JCP rules (JCP 2.5), that got fixed. The existing implementations of Java were all set under older rules, which were not friendly to open-source implementations. Under the new rules--which govern Java 2 Standard Edition 1.5--open-source implementations don't have to pay for the Technology Compatibility Kits (TCKs) required to certify compatiblility with the Java standard. But no one could do an open-source reference implementation of any of the previous Java stacks because of the contractual rules that govern them--at least not without the cooperation of Sun and the other major JCP members.

    That's why only bits and pieces of Java have thus far made it into the open source realm; up until recently, the cost of compatibility was too high to justify a full-blown open-source Java implementation -- and those who have done them (anybody remember Lutris and Enhydra ?). It's something folks at IBM are well-aware of.

    Regardless of what Phipps really meant to say, IBM's Rod Smith used Phipps' Q&A comments as the launching pad for an "open letter" of his own, addressed to Rob Gingell at Sun:

    "Simon's comment appears to be an offer to jointly work towards this common goal. IBM is a strong supporter of the open source community and we believe that a first class open source Java implementation would further enhance Java's position in the industry by spurring growth of new applications and encouraging new innovation in the Java platform. Here is the offer: IBM would like to work with Sun on an independent project to open source Java."
    Of course, IBM execs probably knew all too well that Simon's comment was nothing of the sort. But Smith's letter was an open play not to Sun so much as to the press, and to the open source faithful, calling Phipps' bluff.

    Sun Is Forced to Respond

    It worked. It put Sun on the defensive. Jonathan Schwartz, Sun's VP of software, was forced to respond directly. He called Smith's letter and offer "bonky" or something like that, and reiterated Sun's open-source dealbreaker--while opening the door a little further for some actual progress.

    Schwartz said that Sun was concerned about Java code forking like Linux, eliminating compatibility. But he said Sun was open to giving control over certification of Java to a neutral third party, like KeyLabs.
    "Java licensing places an imperative on compatibility, unlike what's happening in Linux servers," Schwartz said. Without compatibility testing he predicted Java for Red Hat would become the defacto standard for Java on Linux in North America, where Red Hat is the dominant Linux platform distribution. (from CBROnline)
    Sun spokespeople stress that Sun wants to maintain compatibility with the Java spec across all implementations - they don't want anybody to be able to take the Java code and go down their own road to implementation because the whole reason for Java's existence is its promise of portability of code from one implementation to another. Innovation is great,they say, but Sun doesn't want innovation to break compatibility.

    Some folks at Sun believe that IBM management wants just the opposite - they want an open source license for the Java stack that frees them of having to develop new standards within the Java Community Process, in a more ad-hoc way with other vendors. In other words, they want their own Java, without a Sun veto vote, or compatibility requirements, hanging over their extension of the platform.

    For example, if Java were licensed under a straight Apache license, IBM (and everyone else) would be able to create derivative products from the source code, and develop those products down their own code branches without having to maintain anything more than core code compatibility. (There could be some form of Apache license that didn't allow for forks in Java, but that's a topic for a separate discussion in itself).

    What IBM Stands To Gain

    A Linux-like (and balkanized) Java plays right into IBM's business interests. With a market-leading J2EE server in WebSphere, and a preponderance of professional services business based on its Java implementations, IBM could create its own open-source splinter cell of Java and extend it however it liked, without concern for standards or compatibility. That would give it lock-in with its application customers, who wouldn't be able to take "pure" Java applications and simply package them for redeployment on a different Enterprise Java Beans container (like BEA, JBoss, or Sun ONE).

    Bob Sutor told me that IBM isn't even to the point where it's even thinking about what the licensing of an open-source Java should be. " I don't think truthfully that we've gotten to that level of discussion. There are a bunch of open source licenses - frankly, it's one of those things where you have to sit down and figure out what's the goal of what we're doing here, see if there are existing licenses that we can tweak. We haven't gotten that far yet."

    I'm not sure that I buy that - especially in the context of his comments on compatibility. " I'm very much in favor of interoperability and testing. But there's always the balance of doing it by law, or giving the market some credit. Customers will say, 'If you're doing something wildly different, I'm not buying it'. "

    That's assuming that the software market behaves like a classic free market. Of course, what the market chooses isn't always good for it.

    Sutor recently told an IDG reporter that IBM and Sun will be meeting to discuss open source (a statement a Sun spokesperson will not comment on). And when asked about Schwartz's concerns about the forking of Java code under GPL like with Linux, he said:

    "I think that's overstated. Yes, there are different Linux distributions, but there are main distributions, and the kernel tends to be very consistent," he said. "If you're doing 'bonky' things then the market will reject them very quickly, you have to give the market, and the customers, credit."
    Which is FUD. Yes, the kernel is consistent. But there's not binary compatibility between all the versions of Linux - which is why there was all that hoopla over "UnitedLinux" a few years ago before SCO turned into an IP lawsuit disguised as a software company. You can't take a SuSE implementation of something and just drop it on a Red Hat system and run it, for example. Even on the same processor with the same kernel, there are enough significant differences in things like library support and other supporting code to make a binary move of many applications a pipe dream.

    When I asked Sutor about the Linux comparison, and the problems with portability from, say, Debian to Red Hat, he said:

    "Yes, you start getting some library issues that you can work out, then there are all the packages ... but I could also throw that back and say that from version to version of Windows there's not complete interoperability. It's really not that hard to get around. (With Linux), the market ended up making that work."

    (Well, the market, and IBM's backing of Red Hat.)

    Some people might say the same is true of the current state of Java. Moving pieces of Java applications might not be overly painful, but taking an enterprise application from one inplementation of J2EE to another is certainly non-trivial.

    IBM has been historically slow to get certified on the current release of the Java standard, so it has almost by default created a fork in the Java code base on several occasions. And While Enterprise Java Bean portability is light years ahead of where it was a few years ago, the major Java application server vendors are doing their best to "innovate" in ways that make it tougher for customers to move.

    Sutor defends that approach (evident in the way IBM and BEA brought Service Data Objects and other recent JSRs to the table). "Sometimes there are things our customers want us to do , and we have to respond to them. We don't twiddle our thumbs and wait three years and say we'll all get around to it...Frankly, we make no apologies, because we're getting stuff out there and seeing if it works, and people are giving feedba... If it has to be changed, that's cool."

    If Java gets balkanized in open-source, IBM will be the clear winner: revenue from Java would shift from software licenses to consulting and services. And neither Sun nor BEA have significant professional services units (especially when compared to IBM).

    You can see why IBM is eager to get its way. Of course, there are ways for IBM to get what it is asking for and not get its way.

    Let's say, for example, that Sun decided that an open source reference implementation was a great idea, but wanted to preserve its ability to derive commercial value from it. How would the company be able to manage that? By using, ironically, the same license scheme used by the Linux kernel: the GNU Public License.

    b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

    So, an open-source implementation of Java would be freely available, as IBM claims it wants--an implementation compatible in licensing terms to Linux, which could be freely redistributed with Linux. It would pass the Open Source Definition, and make the open source community happy, presumably. But at the same time, the GPL version of the Java reference implementation would be a "dirty bomb" for anyone creating derivative products from it -- everyone who worked with the reference implementation would either have to distribute their own derivative products under GPL, because they had become contaminated, or jump through some major hoops to avoid code cross-pollenation, or purchase a separate commercial license.

    From Sun.

    Now, Sun couldn't do this with all of Java on its own. However, it's likely that Sun could do it with parts of Java--like Java 2 Standard Edition. Or even just the Java Runtime Environment (JRE).

  • More Stories By Sean M. Gallagher

    Sean Gallagher is technology editor, Baseline Magazine, and blogs as the dotcommunist at http://weblog.dendro.com.

    Comments (26) View Comments

    Share your thoughts on this story.

    Add your comment
    You must be signed in to add a comment. Sign-in | Register

    In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


    Most Recent Comments
    MacFlecknoe 03/16/04 10:24:22 AM EST

    I don't understand the authors points concerning forking. Under a GPL license a company would be forced to GPL any extentions they make to the platform; the best extensions then weasel their way back into the main trunk of the project. All this would do is speed up the evolution of the language. If the author is concerned with a faster evolving fork forming off the main branch, I say DONT WORRY! As long as it remains backward compatible if shouldnt make any difference, if a company chooses to develop off that faster forming branch they make an educated descision to break compatibility with containers running off the slower moving trunk. In an open source world this is the way things work... you increase competition by allowing anyone to diddle with the code... the best diddlers get their code pushed back into the main trunk or (if the trunk maintainers are too slow to react to the market) the trunk withers in favor of a more flexibly maintained branch.

    dador 03/16/04 07:56:07 AM EST

    I would hate to see Java devolve into the standards quagmire that IBM (and others) have created with Web services. What a mess. The Java Community Process and Sun seem to have done a good job so far in sheparding Java. The APIs are open -- nothing proprietary. And it all works together. Would that happen if IBM were leading Java?

    Sean Gallagher 03/15/04 07:30:54 PM EST

    Someone asked:"Quick question: did M$ code themselve their java implementation or they lifted some code from elsewhere ?
    "
    Microsoft licensed the Java source code from Sun, then wrote their own implementation. But they ignored the TCK requirements, which triggered the Sun/MS lawsuit.

    Benjamin Fan 03/15/04 04:28:43 AM EST

    I don''t care how controls Java so long as interoperability continues to be guaranteed (as much as humanly possible). Open source per se is not the issue: standardisation and interoperabliity is the issue. I left years of C/C++/VB MS development behind to move to Java because of the "write-once run-anywhere" goal. If I''m not assured that this will continue then I might as well go back to M$ & .NET and forget the last few years as a bad dream.

    Someone 03/13/04 02:43:10 AM EST

    Opening the code doesn't mean giving up control,pretty much every Open Source or Free Software project has a maintainer who's job is to keep control of the code (and the cvs tree),he's the one who decide what goes in and what doesn't and in this (java) case,it would still be Sun,they just need to have an appropriate licence to go with the code (i.e. a licence preventing M$ from forking it and add their proprietary extensions :-D ).

    Quick question: did M$ code themselve their java implementation or they lifted some code from elsewhere ?

    mike 03/12/04 11:59:18 AM EST

    >"I think that''s overstated. Yes, there are different Linux distributions, but there are main distributions, and the kernel tends to be very consistent,"

    I''m a big supporter of open source, however, I don''t care how many Java distributions there are. More than one is too many.

    Is Sun fighting the Evil Empire because it?s benevolent? No. Is IBM? No. They are corporations that exist to make money. If they could become the Evil Empire they would jump in a heart beat. Making Java open source to foster innovation sounds great.

    Java the language would sill exist, however I truly believe incapability between "forks" would be the DEATH of Java as the best counter to the Evil Empire.

    There must be a better way to innovate without the possibility of ?forks.? Just stop the madness!

    JavaLover 03/12/04 07:49:02 AM EST

    As the RealMindChild says, dumping Java into open source would undermine it''s value, as it would be quickly hijacked by Microsoft and divergent implementations (they call it inovative) would follow. Then Java would become just another programing language. As it stands, it is the only widely accepted consistent cross platform environment available today. Some of us really want to have such an environment. Don''t kill it, just to stop Sun''s revenue stream.

    Why doesn''t anyone want to deal with this and present a different model. Open source just does not cut it in this particular case.

    If you do not believe this divergence would happen just read kindofblue above. This is exactly what many people are dying to do. Let them go and invent their own C#, C^, C!!!, and whatever and leave Java alone. There are sufficient Java JVMs around to guarantee that Sun will never have a stranglehold. It is now necessary to put pressure on Sun to open up - but not by destroying the base for success.

    MrPippin 03/09/04 05:52:11 PM EST

    Are we sure that Java is not a derivative work of AT&T SYSV Unix, and thus the property of SCO?

    :-)

    gnupun 03/09/04 04:00:45 PM EST

    I don''t really get what the great benefits of open-sourcing Java are, other than Red Hat, Suse etc. being able to distribute JREs freely.

    seancallaway 03/09/04 03:22:16 PM EST

    I've been waiting for Sun to open up Java for a long time. If you're giving it away for free, their is little purpose in keeping it closed source, especially when other people have JVMs out there, too. The only point of freeware vs. open source is that people must use your software or visit your website to get it, but that's not the case with Java. I hope Sun goes for it.

    joelparker 03/09/04 03:20:22 PM EST

    Sun & IBM both want Java to succeed. But does IBM honestly think that open-source is the best path to creating successful software? If so, how about an open-source WebSphere & DB2?

    It would be great if IBM could use its muscle to move Java forward in the areas that need it, like advocating for open-source J2EE servers, and ideally more sensible ways to deploy J2EE.

    Anyone here playing with Java 1.5? Sun made things more sensible like autoboxing and generics and loops--how about making J2EE more sensible?

    IMHO, Sun & IBM both need this to happen before MS gets momentum on the big servers.

    Cheers, Joel

    laymil 03/09/04 03:12:00 PM EST

    Opening Java systematically would make it more appealing to a wider user base - No longer would its major uses have to be confined to web, Sun, or CS classes at major universities.

    Sun made a nice start on Java, but like most closed, standardized software, a better alternative could probably be written.

    Kudos to IBM for their support. Hopefully Sun will accept their offer and a better, OSS version of Java will be released.

    TheRealMindChild 03/09/04 03:10:37 PM EST

    I think most people, and obviously IBM, are missing some key points to why Sun treats Java how it does.

    Things are tight fisted because Sun wants a solid, CONSISTENT platform. This was a MAJOR REASON for the lawsuit that they fought and WON against Microsoft and their VM implementation.

    Opening it up not only kills that idea (anyone can alter the platform specifications for whatever selfish reasons), but it would undermine all of the fight they have put up at this point.

    vidarh 03/09/04 03:09:28 PM EST

    Frankly I see IBM's comments as an ingenious PR move. Either Sun opens Java, and it will be a great PR win for IBM and great for business, or Sun doesn't in which case it's a big PR win for IBM towards customers (look guys, we're promoting open standards, but Sun just doesn't want to play ball - do you REALLY want to get tied in to a company like that?)

    shirov 03/09/04 02:53:43 PM EST

    >"Yes, the Java specification is not open--you can't just
    >implement it without violating Sun's intellectual property."

    Not true at all.

    Go read Sun's license for use of their Java API docs:

    Sun also grants you a perpetual, non-exclusive, worldwide, fully paid-up, royalty free, limited license (without the right to sublicense) under any applicable copyrights or patent rights it may have in the Specification to create and/or distribute an Independent Implementation of the Specification that: (i) fully implements the Spec(s) including all its required interfaces and functionality; (ii) does not modify, subset, superset or otherwise extend the Licensor Name Space, or include any public or protected packages, classes, Java interfaces, fields or methods within the Licensor Name Space other than those required/authorized by the Specification or Specifications being implemented; and (iii) passes the TCK (including satisfying the requirements of the applicable TCK Users Guide) for such Specification. The foregoing license is expressly conditioned on your not acting outside its scope. No license is granted hereunder for any other purpose.

    Or in English:

    You can use this to implement your own Java, as long as it is fully compliant with the Java specification.

    ajagci 03/09/04 02:51:13 PM EST

    Until a couple of years ago, it mattered to me that Java was closed source and that the Java specification itself was closed. (Yes, the Java specification is not open--you can't just implement it without violating Sun's intellectual property.)

    Now, I just don't care anymore. Java has fulfilled its function: it has made garbage collection and runtime safety acceptable among commercial programmers. The Java language and libraries themselves are nothing to write home about and never were. Java could have become a good, general-purpose language and a good, general-purpose platform, but it never really fulfilled its promise. It's become a mediocre specialty language mostly for some kinds of server-side hacking. Open sourcing it or opening the spec would only prolong the agony.

    People should move forward and widen their intellectual horizons again. Look at languages other than Java and get over this illusion that we will ever have a single language in which everything will be done on every platform.

    Francisco D''Anconia 03/09/04 02:48:39 PM EST

    Don''t forget - any old fool can get the Java source code. It's not like it's hidden.

    ajs318 03/09/04 02:39:01 PM EST

    While Java stays Sun''s closed-source product, Sun retains control over it. Releasing it open-source would mean relinquishing that control forever. Imagine, if you will, the overthrow of an essentially benevolent dictator followed by a less desirable character seizing power.

    The questions Sun needs to ask itself are (1) whether or not Java is ready for that -- or is it more likely that differing implementations would lead to fragmentation, and thus nullify the whole point of Java?; and (2) if Java is ready to go open-source {and I personally believe it is}, what would be the best licence to ensure against fragmentation whilst not putting off purists?

    All these things being said, Java is only a programming language -- a means to an end. Programming languages come and go. There is no reason why another contender should not arise to solve the same problems for which Java was invented, and eventually displace Java. (Mono may be that, of course.) It is just as likely that something totally new could arrive on the scene and change the whole picture.

    StandardCell 03/09/04 02:36:55 PM EST

    The worst thing that could happen is that Sun allows Java to wallow in limbo until its development becomes unsustainable and people start using other languages and development environments like .NET, and then make it open source because it became a black hole for them.

    I mean, Sun could still have a vested interest in an open source Java and still derive revenue from custom design services and support while displacing the Beast. It isn''t even like the implementation is a trade secret. Heck, the Beast has developed Java bytecode interpreters in the past. But the Beast would love to displace Java with .NET as a universal development language. You can bet diamonds to dollars that Microsoft will never open source their version though.

    Hence, Sun has a great opportunity here. Will they see it?

    Gr8Apes 03/09/04 02:34:37 PM EST

    Incompatibility would ruin the cross-platform appeal of Java.

    kindofblue 03/09/04 02:33:29 PM EST

    The C# way (and the way some java tools worked before the JIT VM) is that byte-code is distributed but the client-side machine compiles it ahead of time and saves the compiled code. There is no difference to the sandbox security, with respect to ahead-of-time compilation, as long as the cached code on disk is secure. JIT VM always compile it as the code runs and then discards the compiled byte-code.

    So basically what I want is that the compiled code should be cached and stored on disk, e.g. like a browser loading cached pages when they are still up to date. Not everything needs to be cached, since profiling (that is behind the current Hotspot technology) could be used to identify those parts of the code that should be aggressively optimized. So those critical areas should automatically be aggressively optimized, which takes time and that should be cached. That''s what I would ideally like to see in Java.

    Also, as for unsafe constructs, I''ve read about them in C# but haven''t developed with it. However, I have used the java native interface. It is really ugly and very cumbersome and intrinsically system-dependent. Sometimes it is necessary to use JNI for performance and for low-level interfaces to the machine. I want something that''s low-level but easier to use than JNI for those rare occasions where you''ve gotta have it.

    gidds 03/09/04 02:31:46 PM EST

    Either would remove some of what makes Java great.

    Unsafe constructs would risk punching huge holes through Java's nice safe sandbox.

    And precompilation would probably mean that compiled code gets distributed rather than bytecode; 'Write Once, Run Anywhere' doesn''t mean much if you can't get hold of anything you can run!

    kindofblue 03/09/04 02:30:20 PM EST

    The big plus side to open sourcing is perhaps that Java could be forced to match the nice features of C#, like unsafe constructs and precompilation, both for performance reasons. There's only so much JIT optimization you can do. But precompiling (like GCJ, but intrinsic to the VM) would provide greater opportunities for large scale full source tree optimizations. Compiler writers have been doing this stuff for 50+ years.

    JavaCre 03/09/04 02:04:34 PM EST

    Sun must open-source Java or risk relegating it, while .NET on commodity hardware gobbles up both the development and hardware markets - to Sun''s eventual doom. Working with IBM would keep Java strong as many eyes and hands (ours included) clean it up and expand it where need and demand lay. If Sun ignore this request, IBM will probably pick up java anyway...at its bankruptcy auction.

    JoeLinux 03/09/04 02:01:42 PM EST

    Does anyone actually think any of this is actually gonna happen??? Sun has always impressed me as a Microsoft wannabe. The only reason they are currently allying themselves with Linux is because "The enemy of my enemy is my friend."

    'course, that's just my opinion. I could be wrong.

    ashishK 03/09/04 02:00:00 PM EST

    Sun doesn''t sell Java. IBM isn't asking them to give up a revenue product. This could work.