Plug-In Architecture On the Way For GCC
VonGuard writes "This year marks the 25th anniversary of the GNU Operating System. A major part of that system has always been the GNU Compiler Collection. This year, some of the earliest bits of GCC also turn 25, and yet some of the collection's most interesting years of growth may still be ahead. The GCC team announced today that the long-standing discussion over how to allow plug-ins to be written for GCC has been settled. The FSF and the GCC team have decided to apply the GPL to plug-ins. That means all that's left is to build a framework for plug-ins; no small task to be sure. But building this framework should make it easier for people to contribute to the GCC project, and some universities are already working on building windows into the compilation process, with the intent of releasing plug-ins."
nuff said.. why do people still try to attach GNU/ to Linux? It makes no sense.
you mean hurd?
Can someone explain what kind of plugins might be made? What extra functionality wold I want in a compiler?
... was a plugin for emacs.
If you disagree with me on social issues, then it's pretty clear that you are a narrow-minded bigot.
Does this mean they want to force all plugins to use the GPL? How is that possible? I was under the impression that the GPL is purely a distribution license. It comes into force when you distribute software licensed under it, and requires you to distribute (or make available) source code and other things.
If I write a plugin and do not distribute it with GCC, what legal basis do they have to force me to GPL it? Nothing I distribute is copyrighted by the FSF, and so how can their distribution license apply to my code? I'm confused.
This year marks the 25th anniversary of the GNU Operating System.
No, this year marks the 25th year of work on the GNU OS. There is still no GNU OS as such, and it's pretty obvious there never will be.
I'm not saying that there's nothing to show for all that work. The GNU libraries and many GNU utilities are key components in many projects, not the least of which is Linux. (<Sarcasm> Oh, excuse me, GNU/Linux.</Sarcasm> ) These are real achievements, and so is the introduction of a new collaborative model of joint software development.
But the original goal of GNU, to create a free alternative to Unix, has never been achieved. No big loss, there are other free Unix alternatives and even true Unixes for free. I just wish that GNU and its fanboys would stop and ask themselves why they never achieved their primary goal.
I have used GCC and a few other GNU tools for years now and I never knew that it was an OS.
My bad. I must really get around to downloading and installing it sometime.
That depends on your definition of "has produced". GNU certainly is actively developing an operating system, but I would say that an OS project that has managed to go 25 years without a stable kernel release cannot fairly be said to "have produced" an operating system.
All the exciting complier action going on now is with LLVM and Clang. It's incredibly clean and modern code. It has an free and open non-viral license.
The GNU crowd sees it as a massive threat to the stranglehold GCC has over open source compilers. This is nothing but a desperation move by GCC to try to fend off the massive migration to LLVM that is going on. The GNU crowd has been acting in ways that would put Microsoft to shame in their efforts to keep their stranglehold on compliers. All the way from the way GCC is coded to anonymous trolling of everything they see as a threat to non-GPL complier tech.
LLVM is going to be the one of and perhaps the single most important thing in the history of compliers. The academic world, business world, hardware manufactures are migrating to LLVM.
To quote the rationale document:
This is the kind of ideological arrogance that drives me up the wall with the FSF and GPL. There is this over riding presumption that they're right, and further more, anything contrary to their aims is "Bad for society". What childish bullshit.
It's not even as if they soften it by making it a question of belief. They could just as easily say "We believe developing non-free software is not good for society". The absolutism in their position reminds me of religious fundamentalism. Which also bugs the shit out of me.
That is clearly the easy part, should only take a few years, much shorter than the decision at least. I'll bang my head against the wall while I wait.
Lars T.
To the guy who modded me down from perfect to terrible Karma - Apple haters still suck
marketing surveys charnel house. The in time. For all goals. It's when to foster a gay and has ground to a dead. It is a dead feelow travellers? To them...then
Spell check for identifiers might actually be useful. When you get an "undefined symbol 'plyaer'" error, it'd be nice if GCC could search the symbols in scope for with the shortest Levenshtein distance. The error message could look like this: "undefined symbol 'plyaer': did you mean 'player'?"
DWIM
Help stamp out iliturcy.
Require all plugins to link against a small (512 byte or so?) GPL'ed blob, and check for it at load time.
The wiki article mentions this legal theory. Search for "A gcc-based scripting interpreter could by default check for a mandatory license statement". But other companies have tried this in the United States, and courts have rejected the originality (and therefore the copyright) of such magic cookies. Look up Sega v. Accolade (pre-DMCA) and Lexmark v. Static Control (post-DMCA).
Or just do what the rest of us are doing, and hack on LLVM. It's BSDL, so you can license your plugins however you want, and it's very modular so it's easy to reuse parts of it. Oh, and it's actively backed by Apple, Adobe, Sun, Cray, and a few others including a number of universities.
I am TheRaven on Soylent News
but trying to run an open source based box without any of the software that gnu has touched is pretty hard
I for one say "GNU/Linux" to distinguish an operating environment designed for a workstation or server from embedded Linux. It's possible to run a useful box, especially one handling embedded style workloads such as IP packet routing, with very little FSF-owned code. A "uClinux" environment might use uClibc or Newlib instead of glibc, uClibc++ instead of GNU libstdc++, and BusyBox instead of Bash and GNU Coreutils.
You remember that?
Who gives a shit about writing plugins for GCC? It's just a compiler for God's sake!
GCC project, and some universities are already working on building windows into the compilation process, with the intent of releasing plug-ins."
The last thing GCC needs is Windows OS dependence.
Windows isn't reliable enough to run ordinary desktop software, why should we trust it to compile important things with?
I'll bang my head against the wall while I wait.
Careful. The reason developments in GNU are so slow is because they've been banging their heads against the wall.
True confidence comes not from realising you are as good as your peers, but that your peers are as bad as you are.
It is not in Greg's employers interest for him to push this issue. Remember, they've tried to play fast and loose with the GPL before.
Bruce Perens.
Mod me as a troll if you must but... People ought to read the link given by the parent. Wow.
Nice. You know, in a very funny way, the FSF and their jiahad against the evils of proprietary software are basically creating their own twisted form of DRM. Witness this brilliant idea:
Nice. The Linux kernel guys did this and look at the result--it is a bitch for hardware guys to write drivers for Linux. I'm sure deliberately altering the API with a script will work really well for the GCC guys! Makes me want to participate. Not! In truth, it makes me feel like I'm some kind of criminal--only guilty until proven innocent.
Sadly, the FSF did some very nice things, but I think they are becoming so extreme they are going to marginalize themselves and fade away. You know what the biggest hurdle for the BSD guys go separate themselve from GPL? The compiler. The compiler really is the last bit of power the FSF holds over the open source world as a whole. Pretty much every other bit of the toolchain has been replaced with a non-GPL lisence except a good compiler.
LLVM seems to be coming along nicely with major players backing it. I'd be pretty nervous if I was the FSF.
And running any of the GNU tools without a suitable kernel is kind of difficult also - so should we call it Linux/GCC? perhaps BSD/Linux/Windows/GCC?
And yes, of course I know it runs also on windows, even though that makes the 'pure blood' GNU aims seem somewhat odd, but does that actually help things?
Call me when HURD becomes workable for every day purposes (you know, like supporting hardware other than that of the core developers..) and we can talk.
While the idea of GCC having plugins has a great "cool" factor, I don't understand what problem they're trying to solve.
As best as I can tell, people who are not GCC developers want to be able to take advantage of all the effort that has gone into GCC to make new and nifty things - but the interfaces in GCC (primarily the IR/intermediate representations) are poorly documented and change frequently from version to version.
Plugins are an attempt to replace create a new API to solve problems tangental to another API - where the problems are a lack of documentation and instability of the API. As development of the GCC continues, new features and methods are going to quickly reveal problems with the plugin API - either the existing APIs will not be able to take advantage of the new features, or they will need t change, or they'll even be removed. And, of course, the interaction between the APIs and the compilation process will need to be documented too in order for them to be useful. And lastly, if the idea of requiring plugins to be GPL'd is to strongly encourage them to be placed in the GCC repository, then that increases the maintenance effort on the GCC developers to keep the donated plugins up to date - or make the unpleasant decision to discard them.
So, not knowing what problems that Plugins are trying to solve, I wonder if solving this another way wouldn't be a good idea - such as resigning the IR format to encourage easier and better documentation or something like that. The GCC was initially created a long time ago before more contemporary methods of keeping code and documentation in sync were developed. Using modern methods would pretty much require a complete, almost clean-room rewrite of GCC which would nullify the benefit of taking advantage of all of the skill and knowledge embedded in the GCC.
So, can someone tell me what Plugins are trying to do?
so, how long will it be before gpl'd plugins arrive that allow interfacing with arbitrary non-gpl plugins? ;)
gcc is dead. long live llvm!
...marks the beginning of homebrew C/C++ fork...
Which demonstrates just how much Sun loved the GPL in the first place.
Sun, like one or two other corporations, were forced crying and kicking down the open source path because their users were installing and compiling GPL'd software on Sun systems instead of buying Sun's vastly over priced versions. If they hadn't embraced it, the migration of their users to Linux would have become a stampede.
LLVM is being supported by Sun because they see an opportunity to reverse software history. If LLVM ( which is not covered by the GPL ) replaced GCC - they think - GCC would die off, and then they will be able to close source the project and return to happy land where they can charge the earth for their product.
It ain't gonna happen.
It says on the LLVM website FAQ, "GCC is licensed under the GPL license. clang uses a BSD license, which allows it to be used by projects that do not themselves want to be GPL"
The LLVM site is registered in the name of Chris Lattner who works for Apple.
What the FAQ ought to have said is, "clang uses a BSD license, which allows it to be used by projects which wish to take the source code, close it, and profit off the backs of those who contributed without rewarding them."
Go ahead and hack on LLVM, but don't kid yourself that "the rest of us" are doing it too.
it is a compiler collection after all.
The GCC Ada compiler already does it - even used the very same wording ;-)
GCC is organized with releases (the usual GCC compiler versions), with the future release called "trunk", and branches (experimental code which may, if accepted, be later merged in into the trunk.
There are already experimental branches for plugin.
In addition, there is the MELT branch, which provides a Lisp dialect (internally tranlated into C) to code plugins with.
Plugins could do many things, which for one reason or another, don't fit easily into the trunk. In particular, "extra compilatory" activities, i.e. any processing of internal GCC representation which is not directly related to machine code generation, fits into this scheme. Think of code refactoring tools, code style checkers, whole program static analysers, specialized code generators (e.g. generation of serialization routines from data structures), etc.
Regards.
--
Basile Starynkevitch (main author of MELT branch)
And you get to use whatever the EULA lets you (like, oh, "no benchmarking" or "no writing a competing product" or "You agree to use using whatever you produced for our own purposes without needing any license agreement other than 'you used this product'".
etc.
PS, for the entire frigging thread:
The problem isn't the GPL or any license. The problem is that copyright doesn't work well with source code compiled as binary.
E.g. copyright talks about "expressive works" but the binary object is not expressive so shouldn't be copyrightable.
It is, though.
A book is derived if it follows too closely another book. But software is full of "when this occurs, do this", which, from the olde worlde copyright would be a derived work.
A derived work includes significant parts of the original. Well, a shared library when executed is including a significant part of the library, so, by copyright, it IS a derived work.
Copyright and code doesn't fit.
Sean Callanan, a graduate student at Stony Brook University, has created a plugin system for GCC. It's been languishing in a branch for the past year or so.
Many people have wanted this branch to be merged from trunk, but a few people with licensing concerns have blocked it in the past.
When Richard Stallman began writing Bison in 1983, he was only trying to build the bits of an operating system he would need to write an operating system. But that recursive goal was no stranger than the recursive name he would create for the software he would eventually create: GNU is Not Unix (GNU).
Please please please give up with the stupid bullshit of recursive names which are like *hyuk hyuk* clever *snort*.
It's not funny. It's fucking stupid and is a sign of a much bigger problem. Free software doesn't catch on because everything is named by programmers. GIMP is a stupid name. GNU is too. What about bbnfc, ctm or wmbp6? They're all too esoteric, like they've been constructed by programmers mashing their hands on the keyboard and picking out a random sub string.
Linus is right to stand back and avoid such evangelism. The whole thing about purposely changing the API to hobble proprietary ('enemy') software puts RMS and his band of merry followers on the same par as everybodys favorite monopoly.
RMS and his self important paisanos are elitist assholes. The good work they do is dwarfed by their arrogance. They need a mishapen turnip in the ass.
The result is that it's a ***** for proprietary guys to write binary only drivers for linux. Not true. Think about the technical means by which this is achieved: there is no stable driver API, and you're encouraged to get your code into mainline. This means two things:1. If you have a Free Software driver that isn't GPL-compatible, you get caught in the collateral damage. This is why OpenAFS isn't in the kernel
College-Pages.com - Online Colleges, Degrees, and Programs
Sun, like one or two other corporations, were forced crying and kicking down the open source path
You're clearly one of those ill informed twats who got their history of Sun from PJ at Groklaw when she was still drinking the IBM kool aid. Sun has supported open source software since before Linux existed, and when GNU was just a manifesto.
And to reply to my own comment ... the grandparent poster may want to read this article which reports on a study showing Sun has contributed more than three times as much code to open source projects than IBM, and is the leading commercial entity to have done so (way more than RedHat for instance).
It's so cute how they think that they get to say what license plug-ins use.
People with real lawyers and a lot of money on the line have settled this question a long time ago, when various commercial software producers tried to stop third-parties from making unauthorized add-ons. Those trying to stop unauthorized plug-ins lost, for a few reasons.
The plugin architecture is based on an "gcc exception" that
in my humble opinion, and I am not a lawyer, is very shaky.
See my article on this :
http://rdfintrospector2.blogspot.com/2009/01/gnu-gcc-compiler-introspector-reloaded.html
mike
Introspection is the key to understanding
It's not the Google Compiler Collection, you know.
That was, until Google sponsored improvements to GCC as part of Google Summer of Code.