|
|
||
Kirill Grouchnikov's BlogJune 2007 ArchivesSubstance module will not be supported in NetBeans 6.0Posted by kirillcool on June 19, 2007 at 09:17 PM | Permalink | Comments (1)It saddens me to say this, but Substance module for NetBeans, which allows you to play with all the available themes, watermarks, skins, and even set an arbitrary image as the IDE watermark (a feature that was used extensively in the NetBeans look and feel contest about a year ago) will not be supported in NetBeans 6.0. You can see the comments on issue 66335 and issue 103361. The first one was opened more than two years ago, and asked to clean up the code of the custom tabbed pane used for the NetBeans editor. The vast majority of the code there is either private or package-protected, and as such, i had to copy a lot of it into Substance module. This led to quite significant code bloat on my part (which was completely unnecessary), making the code base much less readable and maintainable. Nonetheless, the module was functioning as expected in 5.0 and in 5.5 (without any code changes). However, the upcoming version 6.0 introduces binary incompatibilities in the tabbed pane component (see the second issue above), which breaks the Substance module. In order to address this, i would have to copy yet more classes into my module, since the base implementation is, once again, either private or package-protected. Unfortunately, NetBeans developers view this as internal implementation details, saying this in the comments on the first bug that i filed: The code is not designed for extensibility to other UI delegates (which is btw complicated task, believe me) and I doubt it will ever be, currently we have no plan to support it, simply because this library was intended primarily as private use-only-in-IDE library and we can't afford to maintain it as public extensible library with nice API. Too little effect for too much work for us, sorry. Hopefully this decision will be reconsidered, since this plugin is quite a popular one (featuring in the top ten most popular NetBeans plugins). If not, you will have to uninstall it if you're planning to upgrade to NetBeans 6.0. Cross-posted at Pushing Pixels. Update: NetBeans developers have unrolled the changes the broke Substance module. Use the latest drop of Substance 4.0dev module and NetBeans 6.0 daily builds after July 26th. Moving onPosted by kirillcool on June 14, 2007 at 10:37 PM | Permalink | Comments (0)After more than two years with java.net, it's time to start with my own domain. So, you're welcome to subscribe to the RSS feed of Pushing Pixels, which will be my primary blog from now on. For starters, it has two posts: Note that i'm not closing this blog or permanently moving the existing entries. I'll still post here. See you at Pushing Pixels. Thanks to Romain and Ben for help. Java 6, Mac OS and SubstancePosted by kirillcool on June 07, 2007 at 06:37 PM | Permalink | Comments (4)The topic of Apple being late to release the final JDK 6.0 for Mac is being discussed on the web in the past few months (see here, here, here, here and here for a small sample). One question that is always asked in return is what exactly is missing in the latest dev build (b88) that Apple has provided? Dean Iverson has been kind enough to work with me to provide a AHIG-compliant implementation of Mac-specific font policy (based on the excellent initial work done by Karsten in Looks). After a few iterations, we made sure that the font family (Lucida Grande) and the font sizes match the AHIG guidelines (except the list and tree fonts which are still one point larger than they should be). And so, the latest development drop of version 4.0 of Substance (code-named Key Largo) should provide platform-consistent fonts for Mac as well. However, one thing was still missing - proper support for desktop antialias settings. There are two new features in JDK 6.0 for the AA settings (more on this in Chet's blog), the new Toolkit property to query the desktop settings, and the VM flag to override the desktop settings. Unfortunately, it appears that the latest dev build of Apple VM supports neither (and ignores the 5.0-specific undocumented swing.aatext VM flag). And so, the latest Substance 4.0dev drop provides a temporary workaround until Apple makes the final JDK 6.0 release that supports the features mentioned above. When you're running under Mac and JVM version is 6.0, all components will have anti-aliased texts. Here is a screenshot to illustrate this. On the left hand side, the Aqua look and feel, in the middle, the previous Substance version (note that it's not antialiased) and on the right the latest Substance version. A sidenote - the AA quality in Aqua is visibly better than in Substance (which delegates to the basic implementation). This is most probably due to the fact that i can only set
Once again, thanks to Dean Iverson for taking the time to work with me on these two issues. Licenses in ten words or lessPosted by kirillcool on June 07, 2007 at 08:48 AM | Permalink | Comments (6)Following my yesterday's entry on the letter and spirit of software licenses, i started thinking about translating the intent into the words. Some manage to do it in a few sentences, some require sizeable chunks of Amazon forests to be printed. But i say this - if you can't express your intent in less than ten words, just pick an existing license. So, here is my take on the three licenses that i understand best:
Going through EPL, MPL, CDDL, ASL and a variety of others, i see a lot of words about patents, indemnification, and general hand-waving about issues that were never taken to the court (as far as i know). And now, here are my favorite acronyms that everybody uses in conjunction with the license discussion:
Note that these are usually followed by grand statements that divide the good from the bad, the white from the black and the world from Microsoft :) Software licenses, the letter and the spiritPosted by kirillcool on June 06, 2007 at 06:00 PM | Permalink | Comments (6)Some of you most probably have heard about the latest round of "Microsoft against open source". It all started here when a developer of a plugin for various versions of VS.NET has decided to vent his feelings over a two-year long dispute with Microsoft over the license terms of free version of the Microsoft IDE and whether his plugin is in violation of its EULA. There's a lengthy e-mail exchange (hopefully complete and unabridged), and it's quite an interesting read. I highly recommend reading it before jumping to any conclusions. The lead product manager of Microsoft has promptly responded here and here, and the comments are interesting as well (coming from both sides of the "fence"). And now it gets interesting. The story was picked up by The Register, providing a highly biased and opinionated view on the subject. The plugin developer is portrayed as the ultimate victim, and Microsoft is portrayed as the ultimate villain. From here, the story was picked by the usual suspects, including SlashDot and others, making its way to JavaLobby as well. I usually don't do this, but i have decided to copy-paste the comment i left on that Javalobby thread to my own blog. So here it is: ---------------------------------- Everybody applauds FSF for making a special clause in GPLv3 that was added because Microsoft has found a legal loophole allowing the deal with Novell. Microsoft didn't break the terms of GPLv2, but they're the bad guys for breaking the spirit of GPL. This guy (allegedly technically) didn't break EULA (although he's the one that provided the correspondence, i guess Microsoft would be very quick to point the legal violation on its blog), but most certainly broke the spirit of EULA. Somehow, Microsoft is the bad guy here once again. The end result - bad publicity for Microsoft, a lot of people suddenly aware of this guy's product (which is sold for some versions), most probably Microsoft won't go to the court (especially since the guy resides in UK), and most definitely the next EULA will have much more verbose clause regarding the limitation, alienating people along the way (anyone complaining that it takes weeks to read GPLv3? all i hear are complaints about Windows licenses and how they go on and on). ---------------------------------- So, what are your thoughts on this? Removing functionality from a stable APIPosted by kirillcool on June 01, 2007 at 08:51 PM | Permalink | Comments (5)For the past year, Substance has been a fairly popular and stable project, making the top ten java.net lists in hits and accesses for most of the months (even given the presence of the such heavy hitters as JDK, Looking Glass and AppFuse). I get about 70 mails a month (most of them private, as people feel more comfortable without going through the hassle of public mailing lists and forums), and most of them are about bugs and problems. This is completely understandable - i almost never write a "thank you" mail when something works as advertised myself :) And so, this steady stream of user feedback provides an interesting tool to measure the relative success of the features that i'm adding. Now, I have three main reasons to add a feature:
As mentioned earlier, pretty much the only time that i have a feedback about some feature, it's either a bug or request for enhancement (which is, once again, totally acceptable). So, what happens when i don't hear anything (and i mean anything) about a feature. As far as i can tell, there are only two reasons:
I'm way too old to believe in the first :) There are always bugs. In fact, as of today, the issue tracker has 221 reported issues, with many more reported privately via e-mail or found by myself and fixed without reporting them (i know, bad dog). And i do believe that if people want to use a feature and find a bug or a limitation, they'll at least shoot me an e-mail. So, this leaves the only option - people don't need the specific feature. And so, the code lays around, gathering virtual dust, making the testing harder, complicating other code paths, requiring extra time to synchronize the documentation and adding to the total size of the runtime libraries. Which eventually has lead me to the decision of pruning the features that nobody commented upon since their inception (some more than a year ago). Now, before you start accusing me of breaking the existing applications and alienating my users, i do have an explanation about the development process of Substance. Up until now, the release cycle was pretty tight, with releases every ten weeks. This doesn't leave too much time to polish and completely finish every new feature, so most new features mature during two or sometimes even three releases. During this time, i wait for the user feedback to see if the API is adequate, the feature itself is stable and, most important, the feature is used (if there is a bug report, it means that the feature is used or at least tested to see if it's useful). Some of the new features don't get that much attention if there is no feedback - i do tend to spend more time on user requests (since my time is limited). So, there are some features that have been added experimentally (a request from a single user, a posting on a forum that has asked how to do something, or a stray thought during a boring movie). I know that they are not complete, and yet there hasn't been a single request for enhancement. I know that there are always bugs, and yet there hasn't been a single bug report. I feel that the time is right to start removing such features. Here is the list of first four features scheduled to be removed in the next major release of Substance (code-named Key Largo).
While some of these may sound an interesting problem to solve (all of them were such to me), i do have very good reasons to remove each one of them. If you use one of these and have a strong case against removing it, i'm open to talk (comments, project mailing lists, project forums or private e-mail). Note that the usual release schedule has been relaxed from 10 weeks to about 20 weeks (due to the big change to the theming mechanism and the proposed removal of the features mentioned above), with the release scheduled late September. Hopefully this gives enough time for the discussion and will make the codebase a little cleaner and clearer. | ||
|
|