More LGPLv2.1/GPLv3 Crap

Someone calling himself "textshell" left a comment on my previous post that made me think about a few things.

If I release something under "GPL version 2 ONLY" (which is what I usually do), I expect it to stay released under that license.

If I release something under "LGPL version 2.1 ONLY," I expect it to either stay as the LGPL or be converted to GPL version 2 -- and ONLY GPL version 2.

I'm not sure I understand textshell's rationale here: "If you used LGPL before you seem to have been ok with the code used in commercial software, so why do you want to make sure it’s not usable in GPLv3 software?" Those are two very different things. LGPL allows proprietary software vendors to link with my code, which -- for any software I release under the LGPL -- I have no problem with. But allowing people to re-release my code under a license I do not fully understand and do not fully agree with (GPLv3) is not ok.

"Compatibility with other licenses" is not the main criterion by which I choose a license for my code. I choose a license that has terms with which I feel comfortable. At this time, I do not feel comfortable with the GPLv3. That may change, but for now, that's just how it is.

The merits of the various additions in the GPLv3 can be (and have been) debated quite a bit, but I think it's safe to say that the GPLv3 as a license is more restrictive than the GPLv2. Say I release something under LGPLv2.1, and in my license header, I say "version 2.1 of the license ONLY." This means that -- weirdly enough -- no one can relicense my code as LGPLv3 (or even use it with LGPLv3 code as-is), BUT, they can "convert" (aka relicense) the code to GPLv3, and, presumably, they're allowed to add the "or, at your option, any later version" clause. Now, the GPL is of course more restrictive than the LGPL. The GPLv3 is more restrictive than the GPLv2. I'm not currently comfortable with the restrictions imposed by the GPLv3, and I have no idea if I'll be comfortable with GPLv4, GPLv5, etc., but the LGPLv2.1 unfortunately appears to have terms that directly contradict my wishes that the code stay as LGPLv2.1/GPLv2.

We don't know what the GPLv4 will look like. Say through some unlikely twist of fate, Microsoft buys the FSF (currently the only organisation "allowed" to release new versions of the LGPL/GPL). Microsoft then goes and releases GPLv4, which adds a clause that basically says "if you receive GPLv4 code, you may relicense it under a proprietary software license." In this instance, anyone who has released code under "GPLv2 or later" or "GPLv3 or later" has granted MS (or any other company) the right to make a proprietary fork of their code. It's this thinking that leads me to release all my code under a license that says "GPL, version 2 ONLY."

Now, do I really expect MS to somehow acquire the FSF and release an "evil" GPLv4? No, I don't. But the fact remains that I have no idea what will happen in the future. Trusting an organisation full of people I don't know to produce future versions of a license that I'm happy with doesn't sound like a good idea. Indeed, they've already released a new version of my license of choice that I don't fully agree with, so why should I trust them to do so in the future?

If and when I feel comfortable with the GPLv3, I'll probably re-release all my software under a "GPLv3 ONLY" license. But that's it for the LGPL -- I have no intention of releasing any new code using the LGPL, with the exception of stuff contributed to LGPL libraries (like libxfce4util and libxfcegui4) that are mainly "LGPLv2.1 or later" and are 'owned' by other people.

If you don't like GPLv3...

... then it's best not to use LGPLv2.1 either. According to this footnote of the GPLv3 draft FAQ:

Every version of the LGPL gives you permission to relicense the code under the corresponding version, or any later version, of the GPL.

This is a bit disturbing to me. According to this, if I release software under a license which states "LGPL version 2.1 ONLY," someone can go and re-release this software as GPLv3. And indeed, section 3 of the LGPLv2.1 states:

You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. [...] (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.)

That's ridiculous. The license explicitly ignores whether you release under "LGPL version 2.1 or any later version" or "LGPL version 2.1 ONLY." Amusingly, it looks like, under these terms, if you release LGPL-2.1-only, someone can't go and re-release as LGPLv3, even though they can re-release as GPLv3. To illustrate the retardedness, here's my interpretation:

Release under:Can be converted to:
GPLv2 or laterGPLv3 or later; GPLv3 only
GPLv2 onlynothing else
LGPLv2.1 or laterLGPLv3 or later; LGPLv3 only; GPLv2 or later; GPLv2 only; GPLv3 or later; GPLv3 only
LGPLv2.1 onlyGPLv2 or later; GPLv2 only; GPLv3 or later; GPLv3 only

Is this correct? It seems so horribly wrong.

I need to go through my stuff and make sure I'm not using LGPL for anything, though I suppose I'll have to leave libxfce4util and libxfcegui4 alone since most of the parts I don't own are LGPLv2.1-or-later, so it's probably not worth the effort. And, I'd better be more careful about understanding the licenses I use.

HW Project

Sometime, when I have energy and time, I will build one of these for my HTPC.

My Stuff Hates Me

Yeah, it's been a while since I've posted, most of my posts over the past month being private. But, I feel like ranting semi-publicly, so, here goes.

My car is dying. A few months ago when I had some unrelated work done, my mechanic told me the rotors and axles need to be replaced (not dangerously so, but they're not in good shape), at a cost of roughly $1000. I decided to put this off. A few weeks ago, my car wouldn't start. My mechanic found a leak in the head gasket. It's been band-aided, but who knows how long it will last. That's at least another $1000, probably more if the head gasket fails while I'm driving it. The car is old, but not exceptionally so: it's a 1997 Honda Accord which my parents bought used for me in 2000. The mileage was somewhat high when I got it (around 65k miles), and now it's up to around 140k. While that's not particularly impressive, it's not like the car hasn't been used.

So, I'm looking for a new car (well, not new, used, but only a couple years old, hopefully). While I was initially somewhat opposed to the idea of another Accord, I'm starting to change my mind. I'm looking at a 2004 Accord coupe (my current car is a sedan) on Tuesday, and I have a few more in my list that I need to call.

I'm considering a Honda Civic, but I'm not sure I want one (no good reason). Ditto for Nissans in general. Not really interested in an American car. Toyota is a possibility. Open to European makes, but only if the cars generally have histories of not being in the shop too often (so that leaves out Saab and Volkswagen, among others). I'm buying used to avoid the good old new-car premium and immediate depreciation. I can also get a much nicer car for my money if it's a couple years old. I'm not willing to spend more than $20k (even with that amount I'll have to take out a loan), but I'd like to spend less, of course.

I'd like this car to be a bit more "fun" than my previous few cars. Manual transmission, decent engine (V6 preferred, though a high-hp 4 cylinder will do). Gas mileage should be decent, though, to be honest, I don't mind current gas prices too much, and I'd be ok (but annoyed) even if they doubled. (Well, I do mind current gas prices; I much preferred the $1/gal we were charged just 10 years ago, but I'm saying current prices aren't much of a financial burden to me.) I'd consider a diesel-fuel car if it met my other requirements. A better-than-standard audio system, bluetooth, and an in-dash GPS would be nice, but aren't required.

So, that's that.

In other news, tonight my laptop's (the 12" PowerBook G4) hard drive decided it doesn't like data integrity anymore, so I just ordered a new Seagate 80GB hard drive from newegg. Putting $60 into the machine kinda hurts, as I was hoping to be able to live with it as-is for another 8-12 months until hopefully Apple wises up and starts selling a 12" MacBook Pro -- or even a 13.3", but I'd prefer the 12"; I have a 13.3" MacBook from work, and it's just a little less portable than I'd like it to be. Fortunately, it looks like the drive is still mostly alive; even though it won't boot anymore (Linux says the root filesystem is hosed), the /home partition appears to be completely intact (just made 2 images of it).

So, don't expect much work on Xfce (xfconf, mainly) for the rest of the week, as I don't expect the HD to get here before Weds or Thurs, and then I'll likely spend the next couple days rebuilding the system (I might be able to recover the root partition, but I'm not sure I'd trust it). Yeah, still running Gentoo, so I gotta wait for shit to compile (though fortunately I can offload 2/3 of that to my HTPC and server in the closet).

Oh, and speaking of stuff breaking... I bought a Samsung SGH-T619 (that's a cell phone) 4 months ago when I switched carriers from Verizon to T-Mobile. End of August, the external screen breaks. No, not the outer plastic, but the actual LCD screen cracked. I really don't know how: I set it down on my nightstand to charge before I went to bed, like I do every night, and it was fine. I wake up in the morning, pick up the phone, and the screen is cracked. Go figure. I bought the phone from a company called LetsTalk (online, but I don't feel like linking to them); I emailed their returns department, not really expecting much, as they only guarantee the product for 30 days. But I at least expected an email back telling me to get stuffed; no, I didn't even warrant that: I got no response at all. Great customer service, assholes.

I need to give Samsung a call to see if they're replace/repair it under warranty; I read the terms online, and, surprisingly, they don't exclude the screen from warranty protection. Assuming they'll repair it, hopefully I can find an unlocked GSM phone to use while my phone is "in the shop."

I was debating getting an iPhone given my semi-broken phone. My semi-broken phone was better than free: after activation fees, I got $15 back due to rebates and discounts and whatnot. So I wouldn't actually be losing anything by buying a new phone. My old iPod Mini is starting to show its age (it's almost 3 years old): the battery barely lasts 3 hours (even with the backlight disabled), and it's a bit scratched from use. The battery life makes it somewhat useless on planes (where I find myself quite frequently lately), though it's ok for bringing to work and plugging into my laptop to listen to music while I work. So, I figured, I could either get a new iPod Touch for $300, or an iPhone for $400. Of course, the T-Mobile contract makes things difficult, as does Apple's stance toward phone unlockers/modders. This post by Mark Pilgrim kinda did it for me: I'm not going to buy an iPhone. I had a bunch of niggling doubts about my desire to buy one, but it helps to have them in block text right in front of me. I especially like this bit (in this case about the AppleTV):

I don’t understand this continuing obsession with buying things that you need to break before they do what you want... I thought the big draw for Apple hardware was that "It Just Works." By breaking it, you must know you’re giving up the "Just Works" factor, so what’s left? Rounded corners?

Hell, with things like this, I'm feeling less inclined to even buy a new iPod... ever. Why should I buy from a company that appears to be openly hostile toward allowing me to use their hardware with a non-blessed OS?

Though, to be fair, I like Apple products not solely due to logical reasons. (Hell, I still have no 3D video acceleration on my PowerBook while running Linux, and the 2D accel is virtually nonexistant as well, and yet I still love my little PowerBook.) The hardware is pretty. It's a status symbol; as much as I'd like to believe I'm immune to status symbols, I'd hate to deceive myself. And I do like MacOS X. I have a MacBook from work that only has OS X on it; I do some Mac development at work (seriously, working with Cocoa and Interface Builder is an absolute joy, even though Xcode's text editor sucks ass), and I can get by using Citrix to access my mail (sadly we're a MS/Outlook shop, and I hate Outlook webmail) such that I don't need to use my WinXP work laptop all that often. I'm not totally pleased by the aesthetics of the MacBook (vs. the MacBook Pro), but I do like it.

And why shouldn't my laptop look cool by my standards? People buy cars with dual reasons, too: your average car buyer wants something reliable and safe, but also something that conforms to their sense of aesthetics. That's why there are so many different car designs and you can pick from a variety of colors.

Anyway, that's the state of my electronics, and then some. I should get to bed; busy day tomorrow.

ObjC > C

After spending 6 weeks at work learning Cocoa/OpenStep and Objective C and then writing some GUI apps, coming back to Gtk+ and C makes me kinda sad. I hate typing out really long function names. I hate the class casts required to do just about anything. I hate the boilerplate code I have to write every time I make a new GObject subclass (yes, I know about GOB, but just the presence of that code annoys me). I hate crap like G_OBJECT_CLASS(foo_object_parent_class)->finalize(obj) -- yes, I know you often have to do things like [super dealloc] in Objective C, but look how shorter that is.

I love Objective C. Is it perfect? No, of course not. Not having class variables seems a little weird (but a 'global' static variable in the implementation file will do). It's a bit slower than C (though probably only about 10% in a typical GUI app). Is the syntax a little weird? Yeah, but it's not bad. Having to type out method parameter names along with the parameters themselves can be a little annoying, but it's often more clear.

I really wish there was an up-to-date Objective C binding for GObject and Gtk+. I found GTKKit and GToolkit, but they were written for Gtk+ 1.2.

Anybody know of a more recent ObjC binding for Gtk+ that I didn't notice?

Oh, and on a side note, I also love Interface Builder. Maybe I should look at Glade sometime.

Best-of Best-of

I'm a huge fan of the Craigslist best-of list. For the uninitiated, Craigslist readers can vote for the best posts on the site, whether it's an amusing rant, a creative furniture ad, or a sappy story. Some are great, some are not. I present, without further ado, my best-of best-of list:

The aww that's so sweet and sappy award - Honorable mention, aww that's so sweet and sappy award

New Phone

On a couple occasions (too lazy to find the post), I've written about cell phones, and what I'd want to see in my next phone. Well, I more or less decided to throw all that away, or, rather, to just concentrate on a few key features, and let the rest of the phone sort itself out.

Seb arrived last week from China, and he needed a new cell phone. I found Let's Talk, which cells carrier-branded phones and service contracts, but somehow manages to give ridiculous deals on phones such that you can often make money by buying a phone. This was too good to pass up, so I figured I might as well order a new phone (a Samsung T619) and new service (T-Mobile) myself.

I ordered the phone Thursday night, and it arrived on Tuesday, with free 2nd-day shipping. Not too shabby. I love the new phone, though it's not perfect. It's quite a bit thinner than my old phone, which is great, since I keep my phone in my side pocket. It has a 1.3 megapixel camera, which isn't particularly exciting or wonderful, but it's decent for taking quick shots of things where the quality doesn't matter and I don't have my real camera. I also realised that I like that the phone just has a camera, period, so I can take pictures of my friends to use as caller ID photos. Call quality is very clear, and it's able to make calls even when I have only one bar (my old phone had trouble with that, though that may not be an apples-to-apples comparison). It's a quad-mode phone, so I should be able to use it anywhere in the world (though I'd want to find an unlock code so I can buy regional SIM cards since T-Mobile's international roaming charges are pretty high, or so I hear). The UI is clean and the default setup is very pleasing, with light text on a black background. It has Bluetooth, and I've already successfully done file transfers with it (even using Linux on my PowerBook).

The downsides are few, but notable. The external screen turns off after a few seconds to conserve power. This means if I want to pull it out of my pocket to check the time, I have to hold down the volume up button for a couple seconds to make it turn on. It's a minor annoyance, I suppose, especially considering I've started wearing a watch again.

The earpiece volume is a little lower than what I'm used to, which could be a problem, but I've been ok so far.

Likely due to commercial interests, the phone is retarded when dealing with ringtones. If I transfer an MP3 to the phone over Bluetooth, it won't let me assign it as a ringtone. Apparently there's some trick you can do where you reencode the MP3 using AAC in a .mp4 container, and then rename the file to have a .3gp extension. This somehow "fools" the phone into letting you play it as a ringtone. I tried it, and it appeared to work, though the volume was too low (fixable, probably), and the first quarter- to half-second of the clip got cut off (probably fixable by prepending some silence to the file).

It uses a proprietary connector for the headset, which is super lame. Fortunately, it came with a (cheap) earbud headset, and I have a Motorola Bluetooth headset somewhere in one of my packed boxes.

One final thing it doesn't have (or at least I haven't found it yet) is the ability to vibrate and ring simultaneously. The vibrate function also feels a little weak, but it's not bad.

Overall, I think I'm pretty happy with the new phone, and with the service, at least so far.

Bastard Spammers

Last week, Xfce Bugzilla got its first spam. Someone created an account, and attached some HTML cialis ads to an existing bug. I quickly disabled the account, and marked the attachments as obsolete and changed their content types to application/octet-stream, so browsers wouldn't attempt to display them.

I figured, eh, whatever, it's a one-off thing.

Nope. Someone just did it again, with a new account.

So I figured I'd google a bit to see if I can find some Bugzilla spam solutions, and I came upon this mailing list thread. How fucking devious. The spammers are attaching their HTML ad files to Bugzilla bugs, and then linking to the Bugzilla attachment URL in email spam, or blog spam, or whatever, instead of using their own websites to host the ads.

There's talk of implementing some optional CAPTCHAs (which suck), but aside from active filtering of comments and attachments using some sort of heuristics (i.e., building an email junk filter into Bugzilla), there don't appear to be any solutions. If anyone has seen anything to combat Bugzilla spam, or has some tips to make this more difficult, please let me know.

God dammit.

« prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 next »