Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Linux Software

Open-Source Component Repository? 170

Aiken wrote in looking for comments on an idea he's had. To sum it up, what do you all think about this: "The development of a central GPL'd component repository would be an asset to the open-source community". My question: Do you all think this exists (couldn't Freshmeat be used for this purpose) or is this a niche that is still open? There is MUCH more to this, so if you are interested, please click below.

The following was submitted by Aiken:

Premises

  • Companies that do extensive programming develop their own software libraries... binary trees, networking code, graphics routines, things that need to be done in all sorts of programs.
  • While the open-source community has developed excellent tools (emacs, ecgs, etc.) to do their programming on, we have not developed such components.
  • A critical issue facing open-source developers is how to find other developers who will contribute to their project.
  • Having access to well-tested and proven components such as these could greatly decrease development and testing time needed for other software.

Conclusion

The development of a central GPL'd component repository would be an asset to the open-source community.

Elaboration

Consider the Standard Template Library. Linked lists, stacks, queues, and the like can all be used without having to write them from scratch and debug them. This saves time and improves readability, since they follow a common syntax and have common operators.
The open-source community is not bound by restrictions held on the standard library. We can write code that deals with networking and image formats that are commonly used, regardless of whether or not they are in the standard.
Generating repositories of these components would allow casual programmers to dip into a vast resource base. Instead of spending their limited time finding other programmers to help out, they could simply take and use the code that was already written for them. Rather than create a subroutine for a single program, you would create a component which could be used in hundreds of programs by developers you didn't know existed.

Issues to Consider

Just some kinks in the idea that I can see needing to be worked out:

  • How to ensure that components are GPL'd... e.g. that some student's university doesn't want to claim credit for the code they wrote
  • How to ensure quality code and documentation
  • Who should run the repositories
  • What components to provide

Thoughts? aiken@quakemail.com.

This discussion has been archived. No new comments can be posted.

Open-Source Component Repository?

Comments Filter:
  • The various libraries gnome uses?

    The CPAN PERL modules.

    MiscKit. gnustep.

    To name a few off the top of my head.
  • It's like the Giant Java Tree... I don't see any reason why it would be a bad idea. The worst that could happen is that a few projects get a new home.
  • Freshmeat is a references repository where you find the links to each project's home page and download places, but (as Murphy said) when you find in Freshmeat the app you need the most, the ftp server where the app is suposed to reside is offline and the project's home page is offline also. You then just end with a bunch of useless references.

    The need is for a central FTP repository (with enough mirrors) where every project leader should upload every project's release.

    Then Freshmeat should have the reference to the project's home and to the directory in the repository where you can get the sources.
  • Perl has just such a thing (as I'm sure most of you know) - CPAN, the Comprehensive Perl Archive Network [cpan.org]. I've done Perl development from time to time and I've often found very useful things in CPAN which I could directly apply to my work.

    I program primarily in C and have never seen the C CPAN equivalent... I would love to see a widely mirrored repository of reusable C code.

    As far as quality goes, CPAN seems to be of very good quality... I have no idea how submissions are handled, but I assume there's some sort of acceptance process. If it's all self-regulated I'm impressed.
  • Sounds like a real good idea. Freshmeat's not really the place for it though. There's not enough structure at Freshmeat and, unless you know what you're looking for, it'd be hard to find a needed component.

    A new site perhaps? GPLStuff.com?

    -----------

    "You can't shake the Devil's hand and say you're only kidding."

  • It seems to me that this *has* been done before, with much success. I'm referring to the Comprehensive Perl Archive Network.

    CPAN enables the Perl programmer to not re-invent the wheel one more time. I'm sure that most of the people here are aware of it (being that there seem to be a lot of Perl bigots here).

    I think that something similar could be set up for C/C++ code, but I'm not volunteering! =)

    I don't really know if freshmeat is the right location for something like it, but that's purely subjective.
  • Fair enough - if the Internet is a repository, then we need a catalogue :)

    -----------

    "You can't shake the Devil's hand and say you're only kidding."

  • If it's going to be GPL'd only components, then the majority of Open Source licenses will not be able to use any of them. So why call it Open Source? Why not simply "The GPL Component Repository" instead?

    Far be it for me to tell the repository maintainers which components they can or cannot accept, but I think if they were a bit more flexible, and allowed at least LGPL components, then it would be much more useful for the Open Source community. I think the freshmeat method of listing which license a component is under would be even better. Then we could have GPL'd, LGPL'd, BSD'd, AL'd, MPL'd, etc, components, and a developer could choose which component best met their needs.
  • I can see the ideology becoming a problem here with regard to the licensing of such components. There are other problems too, but let's just consider the GPL issue.

    The General Public Virus is all very well for something like Linux, where the only thing you are likely to derive from the existing codebase is -- another Linux. Components are meant to be generic and widely-usable by their very nature. Will putting them under GPL mean that they infect the code that utilises them? That is the GPL's intent. This will make such components unusable not only in proprietary software, but also in BSD-licensed software (and public domain software for that matter). Such a severe limitation is counterproductive, in my estimation, and will probably limit the potential success (measured in terms of active users and contributors) such a project might otherwise enjoy.

    I would therefore suggest that the LGPL be used in preference to the GPL, if one insists on a GNU-derived license.

  • Well, I've had a similar idea to this. Such a site could be used as well as a central repository not only to software components, but also to open sourced projects as a whole. Also, it could serve as a place for people to start when looking for information and for the people who are in charge of certain things. I've done a fair bit of thinking and have already started some preliminary work on such a project. I'd LOVE some help/to help someone else out who might be further along than I :) email me :) johnston@itactics.com and i'll get back to u ASAP
  • by debrain ( 29228 ) on Wednesday November 03, 1999 @03:39PM (#1565387) Journal
    Since there is no way to automate source code testing, one of the issues that has been abound is some way to rate various types of software, based on their robustness. It'd be nice if there was a linear scale (ie. 1-5, 5 being mission-critical, threaded, scalable) or some such in a t-uple. (ie. (a,b,c), where a is efficiency, b is scalability, c is stability).

    The next big thing is documentation. Some sort of XML standard for code and project and app documentation (separate, of course, but related), would be just dandy for everything. Relating everything ala one standard is what makes things work in nifty ways.

    And a centralized source would be great. ie. something to Linux what CPAN is to Perl. That'd be a *huge* repository, difficult to update, on ultra-fast servers. That makes things very difficult to find as well. (See microsoft.com)

    These things are difficult to implement without a given infrastructure. Without said infrastructure available to everyone, and used ubiquitously, things will probably centralize around companies such as Caldera, Red Hat, Corel, et al. The only difference is that, instead of a centralized repetoire of Linux software, it's distributed (perhaps with lots of overlap) between companies. That might be a good thing, though, as there is no central point of failure, and it is a competitive system.

    My wish list. :)

  • From the old Fidonet (newsgroup? can't remember what they were called then) C discussion area.

    IIRC, they're still on the web (though not as comprehensive as I remember them). http://www.brokersys.com/snippets/ [brokersys.com]

    they'd be a good start for something, in any case. There are lots of goodies (though some really old, irrelevant stuff too) in there.

  • At first I cried, "Such a thing would be useless to me! I like building things from the ground up!" I'm the sort of person who reinvents the wheel a lot. This is good for (1) educating myself about hard-core low-level details, and (2) building things that do exactly what I need, no more, no less.

    Then I realized that I could in fact use such a repository after all. Lately I've been thinking about looking into writing device drivers. I've never done such a thing before, and wouldn't know where to start (except searching for some basic knowledge on the topic). If I could go to this hypothetical repository and grab a few device driver templates, that would go a long way towards my education. I'd probably still end up building them from the ground up, but at least I'd have some training wheels to use before reaching that stage.

    That's that I think would be most promising about the repository idea. Not being a source of code that I can rip and put into my own projects, but rather a source of examples to learn from. The more I think about it, the more I like it.

  • Guys, before we can have a component repository we need a component model. We don't have one.

  • Your comments remind me of comments made by Maddog Hall at the last Linux World Expo here in San Jose.

    He brought this up as a very understandable example of the value of open source in general... Lots of companies develop tools and components which are not really part of their products - generic applications for doing standard boring business things. These companies wouldn't hurt themselves by sharing such applications, at least from a marketing or legal perspective, and they're constantly wasting money developing these things when others already have them lying around.

    I don't see why this concept should apply only to whole applications and not to smaller code fragments (e.g. a good hash table implementation).
  • To an extent, this is already dealt with in the form of domain-specific repositories like CPAN for Perl...

    I hereby volunteer to set up such a thing for Mason components... Easier than for C++ since Mason is innately component-based... :)

    I had already planned on distributing Mason components on my site -- those that I developed at least... I think it works well to expand that idea...

    Jon Frisby, Sr. Software Engineer,
    Personal Site (MrJoy.com) [mrjoy.com]
  • If we do something, we'd have to do something
    around the area of an object repository. Not
    just library implementations; most linux dists
    have waay too many libraries that do far too little.

    Perhaps we could build some kind of description
    format, like which design pattern it follows,
    dependancies, runtime costs, time complexity,
    etc...

    Something to think about.

    --
    Insanity Takes Its Toll. Please Have Exact Change

  • by Anonymous Coward
    I agree totally. But there is no need to despair, because there already IS an Apps site that is OpenSource only: AppWatch [appwatch.com]. No commercial stuff, only apps announced on the same day, a "not-maintained-means-useless" policy, and a real effort to keep the information updated and organized. I think that with very little modification AppWatch could become this new GPL (or rather OpenSource) repository. All the GNU stuff is already there, and over 650 OS apps are already catalogued and being tracked.
  • by pb ( 1020 )
    Yep, there's no reason Freshmeat couldn't be used for this.

    It has a section for "License", I guess if you could search by that, or search for what you want and check the "License" field, it'd work perfectly fine.

    Or, for the really lazy, write something that searches Freshmeat and parses the output if you don't want to do it the old-fashioned way. (i.e. reading it yourself. :)
    ---
    pb Reply rather than vaguely moderate me.
  • The problem with creating a single monolothic open source repository stuffed with functions and class libraries for everything under the sun is that people's needs are far too diverse. The current model, where tidbits of functionality for specific topics are maintained by various organizations considered "authoritative" in that field, has proved fairly effective. Some notable examples include netlib [netlib.org], libwww [w3.org], ARPACK [rice.edu] and of course CPAN [cpan.org].

    I'm not sure what purpose would be served by bringing all of these various efforts under a single roof. They all have differing philosophies, goals, and styles. Some, such as ARPACK, are highly domain specific, and its maintainers are unlikely to care about "generic code repositories." The STL filled a very important niche, but having gotten the basic algorithms and data structures out of the way, creating a massive interdisciplinary code repository is an unachievable and perhaps undesirable feat.

  • by Amphigory ( 2375 ) on Wednesday November 03, 1999 @03:51PM (#1565397) Homepage
    This is not a bad idea, but there are some issues you are going to have to deal with.

    First, for this to be of maximum effectiveness, you need to make some evaluation of the quality of contributed code. One of my big problems with Freshmeat is that, when I am presented with 17 http proxy servers, I have no idea whch one is the freeware standard under active development and which one is some guys perl script until I download them.

    Second, in an ideal world there would be some standards applied to the modules. What do you do when you have three different tcp/ip socket abstractions, dependent on three different string classes? And you also want to use the database class, which is dependent on a fourth string class?

    Also, don't confuse components with just code modules. Components are bigger, and have a simpler interface. Typically, they represent a significant body of code, unlike a function. Component based programming is about plugging together the components with very little glue code: hardly the same thing as a "function library".

    Also, it seems to me that for maximum effectiveness in components, you need a standard in interfacing them above and beyond a functionc all interface. Currently, GNOME uses CORBA, KDE is using something of their own spinning based on libICE and their own RPC mechanism and CORBA (ARG!), and everyone else is spinning and just using libraries.

    So, you have three choices. Pick between GNOME and KDE (and have a lot of components that a lot of people can't or won't use), develop your own component standard (how many ways can I say bad idea?) and carry two sections, one with KDE components and one with GNOME. Oh yeah... You could say that your repository is less for components than libraries: still a worthwhile project.

    What I would really love to see is you foster development of new software and adaptation of existing software to work within a given component framework. I dearly wish GNOME and KDE would standardize, but it looks like they won't. I really don't know which is better: GNOME seems better developed, KDE seems to likely engender better support in the OSS community.

    Anyway.. Those are my thoughts, do with them as you wish. Let me say that I would LOVE to see a component archive -- but I think it's going to have to come with standardization of some kind. Guys: we have got to agree on a common standard environment, including at least interoperability.

    One thing you could do is this: develop some components under straight CORBA, avoid doing GUI components altogether for the time being (until some standards develop), and hope that KDE actually continues with CORBA now that they've partially "dissed" it.



  • While I realize that /. is primarily a linux-related area, I would like to call attention to those fledgling programmers who would like to develop open-source software on other, more propriatary platforms. I use BeOS.

    While I realize that C code is C code, I would just like to mention/propose that other OS-specific code be accepted also. I have no clue how to impliment a BWindow() :)
  • have you checked out Abisource? I think that's more or less the kind of thing you mean.

    They are working on productivity apps, but I believe they also have a repository of useful code that would fall under the "components" heading.

    Of course, I could be wrong, in which case it would be just swell if somebody would correct me...

    --
    grappler
  • I hope you don't mean that *only* GPLed code would be allowed in the repository. A repository of reusable C and C++ components would be of much greater benefit to the Open Source community if other Open Source licences were permitted, as well as public domain source code. That's because the GPL is incompatible with most other Open Source licences (eg, original BSD, MPL, QPL), and there are quite a few Open Source projects that don't use the GPL. My personal preference for reusable C/C++ components is the public domain, because that is compatible with *all* Open Source projects. I'm hoping to publish some reuseable C++ components next year, and I'll make them public domain for this reason. Will I be permitted to contribute to this proposed repository?
  • by srp ( 78326 ) on Wednesday November 03, 1999 @04:04PM (#1565402) Homepage
    We've kicked this idea around for the last two years. The biggest thing is coordinating everything, documentation and versioning.

    A few issues:

    Once a component goes into the repository, what's the best way to keep backwards compatibilty?

    Who controls versioning for each component, and decides what goes into it?

    Most coders hate writing doc. How do you maintain consistancy for your docs?

    Someone pointed out that you need a component model; there's at least one group that's working on that (name escapes me at the moment).

    Which languages do you support? Do you have interoperability between languages? What do you use now? Corba? It's going towards the JavaBeans model in the next version ....do you go for that?

    Those are just a few of the things to worry about.

    Don't get me wrong, I think this is a great idea. It's going to take a LOT of work to coordinate.

    I think the best way to handle this is to get a very small group (four or less) people together, and decide these, and the other issues that will arise. Don't use any more people than that...if you do, the committee will argue until they're blue in the face, and you'll never get anything done.

  • CPAN is a good starting point for inspiration.. but could it be taken further?

    What if you could take the CPAN system's support for automated download and install of modules and apply the concept to, say, Java environments in some of the following ways:
    • Automated download and install of beans, JARs, etc. from any of a set of mirrors via CVS, WebDAV, FTP, ot the like.
    • Distribution (and auto-generation) of Javadoc, UML diagrams, beaninfo, etc through similar open mechanisms
    • Integration with development environments, to allow the repositories to be browsed as though all the files are local, by distributing RDF catalogs of metatdata. (Picture GnoRPM to get an idea of one UI approach to this). Selecting a package would trigger retrieval of API docs, class diagrams, or the package itself.
    • Similarly, a utility analogous to AutoRPM could handle automated, unattended installation of necessary packages. RPM itself could be the means for this, but maybe it could be taken further to standardize such actions as installing and registering a servlet, genertating IDL, deploying code on an ORB, etc.

    In other words, making a freshmeat not for direct human access, but for automated machine access and autodiscovery.
  • > A new site perhaps? GPLStuff.com?

    gasp! hurry up and register it! _never_ mention a catchy phrase with .com after it without realizing that someone else is going to beat you to the punch.
  • It would be very nice to have one common place for component/(C++ class) shopping. I think that the open source community by its nature would greatly enhance the quality of such components. For example, instead of 50 people writing 50 different Date classes for their individual projects, the effort could go into producing a high quality Date class. There are many people that could contribute their expertise. I'm sure there are thousands of developers more knowledable about re-entrancy issues than I am, and they could add their modifications to the code for the benefit of everybody else.

    So next time that you need a drop down combobox with multiple selection and user defined icons for KDE or gnome.... or you need graphical speedometer component, you just might find it at the code repository.
    Willy

  • Metalab [unc.edu] does a bang up job, especially since they require an LSM submission for stuff that goes in /pub/linux

  • Several people have pointed out that a lot of the "wheels" that are being re-invented are different on the outside. What about something like this:

    The repository specifies interfaces, [ie The Prototypes of the public methods, and the names of the public constants.] Individuals deposit implementations of the interfaces. The result: 4 different String's, which are interchangeable.

    I know this is OOP dependant, but for this to work, objects or clusters therof are a neccessity (this last assert()ed without proof.)

  • Given the increasing popularity of Linux, and centralized repository of GPL'd files and source code will be a HUGE boon for Linux itself.

    That way, Linux users won't have to hunt all over the 'Net TRYING to find the files they want. This is going to be more critical with the release of the Linux 2.4.x kernel the end of this year with its increasing support for USB (and eventually IEEE-1394) devices.

    Complain all you want about Microsoft, but the fact that MS has a very good download library makes it relatively easy to do things like patches and upgrades.

    I think Freshmeat should be converted to this, with FTP servers directly connected to the Freshmeat HTTP server for easy downloads.
  • by pb ( 1020 )
    As has been mentioned before:

    There's no reason for this to have to be GPL-only.

    Yes, freshmeat is a bunch of links to a bunch of software.

    Also:

    Maybe 'component' wasn't the best choice of words here. How about 'reusable code', or 'useful functionality'? Is that a better buzz-phrase, guys?

    There are already central archives. They are called public, anonymous ftp sites. Like metalab.unc.edu or ftp.cdrom.com.

    Feel free to use one of those, but all you really need to make is a database with info about what is available where, under which license. And Freshmeat already does an okay job of that, at least.

    So go make your own Freshmeat with an archived repository, license info, and links.

    Comments?
    ---
    pb Reply rather than vaguely moderate me.
  • I have been thinking about that too, and i think one natural way to do that would be to have the teaching institution manage that. Instead of trying to find toy assignments for C/C++ students, having them all work on a mega STL would seem less pointless.
    Maybe the french open source senators (tm) could get funding to hire some gurus to lead the project too
    Laurent
    ---
  • But it would be nice to have one URL to go to for the purpose of downloading all the new stuff...
  • You're right, it does exist. But, I think it could be better.

    Delphi has had sites like this for years and they are huge in both size and importance. For example, lets say I want my application to do Blowfish encryption. I do a search on the "Delphi Super Page" for a freeware with source blowfish component. And viola, 3 show up. They literally have thousands of components and several dozens uploaded daily.

    If you want to see this for your self, check out:
    main site:
    http://delphi.icm.edu.pl/
    or mirror sites:
    ftp://ftp.cdrom.com/pub/delphi_www/index.htm
    http://community.borland.com/homepages/dsp/
    I'm not suggesting a copy of this site. I think the interface is awkward and there is a lot of shareware crap, but it has been an invaluable on many occasions.

    There has also been other sites out there that had programming FAQ. Kind of a dejanews except dedicated to Delphi only. I think that programming *nix in general could massively benefit from centralized knowledge/component base.

    But be warned. It is a lot of work to maintain sites like this. Several Delphi such sites have vanished for unknown reasons, such as www.delphi32.com and www.delphiexchange.com, among many others. The Delphi Super Page and Torry's Delphi page from Russia are the few good ones left.

    Ozwald
  • Yes, CPAN has a pile of stuff. Now go to their web site, find the Gtk-Perl module, and figure out how to download it. Something about the arrangement tends to make me look at everything by a particular author...
  • Oh shut up. The GPL is not a virus, and if you want to make a non-GPL product, then don't put the GPL code into yours. The intent of the GPL is not to infect others, it's to allow freedom. If the GPL wasn't "viral" than anyone could take the GPL'd code, use it, and not give anything back to the community. It's intended to prevent that from happening.

    We all owe a lot to the GPL, so quite your snivelling about it being a Virus and don't use GPL'd software if you don't want to.
  • If its public domain, couldn't they just GPL it? Then, even if they do play the scrouge, your code is up for use. That kills off the reason you'd make it public domain rather than GPL.. but the point of making it free was to allow anyone to do with it as they pleased.

    Anyway, I doubt that only GPL code would be allowed, just anything that complied with OSI. A few reasons... much of anything done turns out to be for ego, it would reduce the ammount of code/apps submitted (thus reducing the quickness of success), and with the notion that open source = higher morals (and its not even ==), people would bash them for only GPL code (they might be all GPL-lovers, but its the social trend). The FreeBSD driver site that was announced a few weeks ago went BSD when people whinned (Linux people only I believe.. I didn't see anyone say "I'd love to have them support OpenBSD.. would make my life a lot easier." And of course.. the next thing I saw after the change.. "will they support Darwin?"

    So never fear.. if they build it.. they'll take your code for right or wrong, but they'll happily take it.
  • I think this is a great idea, I'd love to see it done. I hate coding simple (not to mention complex) structures that I know have already been dealt with before. The thing is, I think this is something that will suffer due to the "Achilles' Heel" of OSS, which is that without the fiscal benefits, no one wants to do the lame stuff. I think this is why interfaces to everything will be consistently less "tweaked" than their non-OSS brethren: tweaking GUIs is boring. As awesome as this would be, it would be a tremendous amount of work to get it all going properly and the make-or-break parts of it would be especially boring. What would make this work would be extensive documentation, ratings, testing, etc., aka: the boring stuff. Does anyone see a way that OSS will eventually deal with the boring stuff? Are their people out there that really like come up with comprehensive documentation for components? Look at the JDK API docs at java.sun.com for some clues as to how huge and critical and undertaking just documenting some of this stuff would be. To those who say, "but building an OS is surely a larger undertaking...": yeah, it is. But is interesting and fun and the rewards are directly experienced by you. Carefully documenting, testing, and all-in-all preparing for distribution some component you wrote for another project is of no direct benefit to you, valuable as it is to the community. I don't know people who like doing this kind of stuff.
  • There are already many free software "components" available. They are usually called libraries, which doesn't sound as nice as components, I admit. The article, for example, mentions all sorts of abstract data structures, which are, for example, already provided by GLib. [freshmeat.net] There are also libraries for dealing with image formats (imlib [freshmeat.net] comes to mind) and there are networking libraries. IMHO, the free software community was so far very effective at producing libraries for all sorts of problems.

    So, what's the point of the proposed repository? I guess, it wouldn't be very useful to implement the functionality that we already have all over again. What would really be needed is a site that makes it easy (especially for less experienced programmers) to find the library (or component, if you insist) that they need.

    A search on freshmeat isn't terribly effective if you do not already have a rather clear picture of what you are looking for. In other words, it would be helpful to provide an index that makes it easy to find the functionality that you need. The index could then for example point to the freshmeat entry of a selected software component. Organising such an index in such a way that it is easy to navigate is definitely a challenge, but it would probably also be very helpful.

    Chilli

  • by Klaruz ( 734 )
    I think using the LGPL would be a given, since this would esentially be a library depository. What about something like how debian groups free /non free software in their apt system. LGPL/GPL libs and non GPLed libs. I know I'd prefer to use LGPL libs in my software whenever possible, but if it comes down to it I'll live with a restrictive license to get the job done in time.
  • Isn't Linuxberg kinda like this? Tons of mirrors, broken into categories, etc. I know freshmeat is kind of like it, but as someone said, most of the time it's just a reference, b/c the web site or ftp area is down. But I would think that they've already got the idea down.

    ./brm
  • The discussion appears to be more about algorithms rather than components.
  • I mean, I think of my entire GNU/Linux system as a component repository.


    I think this would be an interesting challenge though. It's been my experience that in the commercial world, most components are either too limited because of the lack of source or too hard to use becuase they don't want you to have the source and they are too focused on being a "component" or "reusable" and generally end up sucking. It's a rare balance of ease of use and power that makes a good component. opensource throws all that out the window because you can customize and tailor pieces for your task and as a result not too many are focusing on producing just pieces. You have to do more work to get at the pieces but you can make them do what you want.


    It should be an interesting experiment, if nothing else. It will be interesting to see what is "good" and what isn't. It will also be interesting to see the "component granularity" that is popular. (the classic example is to have reusable hashtable, tree and list classes but those are very easy to implement and don't buy you a lot by reusing them. An HTML widget or an RTF widget, on the otherhand, is a substantial amount of effort and can buy a lot if they work nicely.)

  • There should be a place where we can go to download all the new GPL stuff as well as the older stuff. I know of several people that would just get goose-bumps knowing that everything is in one easily findable location. There are also times we have spent searching the Internet for several hours trying to find a link that wasn't dead or temporarily dropped due to servers being down or overloaded. I'd love to see one site with enough bandwidth to handle the "/. effect". I know how this crew gets when there is a new site with some really cool stuff on it...
  • Exactly. I want my work to be licensed under the terms of the GPL, therefore I use the GPL. I do maintain the copyright of all my code, so I can dual-license it where I want, but otherwise the GPL outlines the terms I have applied to my code. If I don't feel the GPL is quite right for what I do (like GTK/libc), I'll use the LGPL, or whatever suits my needs. If you don't like it, don't use my code in your projects. It's as simple as that.
    --------
    "I already have all the latest software."
  • Somebody has already started something along these lines for Java programs called the Giant Java Tree. Check it out at www.gjt.org . Everything there is either GPL, LGPL or public domain. There's some great stuff there, like JCVS for example.
  • Only I want to take it even further. First off, let me reference two previous posts on SlashDot: 'Its the API's Stupid!' [slashdot.org] and 'Again: Its the API's Stupid!' [slashdot.org]. In those posts I made the case for developing an API that was both an Open Source Component development/delivery/runtime system and a set of standard Components built with/for it. Quote from those posts:

    "We need a fast, simple, powerful and complete Open Source solution for component based development. An API (preferably a cross platform one) that you can write code to in any of the most popular languages. And it must have a reference implementation that is open source with a GPL license. It should be highly Object Oriented and should provide base objects for every major Design Pattern. It should front-end the OS so completely that you can write a new OS which directly provided the relevant API's (making it a kind of Meta-OS). The API itself should be open and there should be a standards committee that isn't loaded with representatives from the big companies. Plus, no-one is penalized for producing a non-compatible version (other than the fact that compatible versions would probably receive a greater market share)."

    Also Quote:

    "I have been working on my own for some time to develop the beginings of such a standard. A kind of hobby for me. And I know there are plenty of people out there who will claim such a thing already exists in (choose one) PERL, Python, Smalltalk, Gnome or some flavor of the month. I don't think any of those things meet all the criteria of the environment I want to see, but I can state one thing rather confidently... Until we pull together a produce such a thing the Open Source movement will have a lot of difficulty competing against Sun and Microsoft in the Business Systems space. "

    One person sent me a pointer to Bamboo [watsen.net], an Open Source project to develop a component runtime system (partially using Mozilla code, which is cool). Others have referred me to CORBA and even ZOPE [zope.org]. Personally I think all of these things are good (although CORBA may be too heavyweight). But none of them go as far as I would like.

    Although I want to see real code as well, I think the process should start the way any good development process should start: With a good design. With an architecture. I am currently calling this the 'COA' or 'Common Object Architecture'...

    In one of my design documents I describe it this way: "A shared set of class and interface specifications that may be implemented in any language and/or with any distributed object methodology. The COA is a Specification, a Platonic Ideal - any implementation of the architecture is coupled to the COA only to the extent to which it correctly exposes the interfaces of the architecture. The intent is to create a standard system workspace for programmers to use that transcends operating systems and programming languages. Furthermore the COA is intended to facilitate the creation of distributed applications where the objects may reside on any system on a network, but look like they are local to the calling application."

    Then, once the design is complete, we throw it open for development. Much like a protocol, anyone can develop both open and closed source versions of the COA. Of course I expect the Open Source versions to get more use...

    And these versions might be developed for any platform and in any language because one basic part of the COA would be a split of the class definitions into two types: Native and External. Native classes have standard method calls that may be directly implemented in whatever language/object environment is being used. External classes may only be accessed through a common messaging interface defined in the COA Messaging library.

    This means that Native classes are generally 'synchronous'. They return control to the calling code immediately, allowing them to be implemented as 'In-Process' and 'In-Thread' with the calling code. In most cases Native classes will be fairly small grained 'tool' classes used as components in building larger, more functional, objects.

    External classes are extremely large grained 'Actor' objects that expect 'prompts' and execute 'behaviors'. They operate asynchronously, the only way that calling code can know they have completed a requested function is when they return a message indicating this fact. Although an External class may actually be implemented to run in the same process space and even in the same thread space as the calling code they function as external servers where the calling code is the client. In many cases the calling code may only be connecting to a lightweight message interface class which front-ends an External class running on another machine entirely.

    These two types of classes exist to provide an opportunity to "Have our cake and eat it too." The Native classes may be bound at compile time (for those implementations that support it) and will operate with the least possible amount of interface overhead. Plus they make it possible to create implementations of the COA in environments that do not provide for multi-threaded programming. Meanwhile the External classes allow for disconnected operation and execution across system boundaries with the least amount of overhead possible.

    Sometime soon I expect to set up a discussion group on this topic. Anyone interested? Email me [mailto] and let me know...

    Jack

  • by Imperator ( 17614 ) <slashdot2 AT omershenker DOT net> on Wednesday November 03, 1999 @05:08PM (#1565427)
    Why not take the existing CPAN system, modify it to support the features we'd need for this sort of distributed project, and use that? It would need support for multiple languages (say, CPAN::Perl, CPAN::Cplusplus, CPAN::COBOL, all inheriting from CPAN.pm), the ability to specify what parts of the archive different mirrors have (because not every site will want to carry the COBOL stuff), some sort of automatic configuration for people who want it (face it, manual configuration is easier to implement but often unnecessary), and a new name (CLAN? :).

    This is a GPL'd system written in a GPL'd language that's available on a wide variety of platforms. Why reinvent the wheel to prove that we don't have to reinvent the wheel? :)

  • Interestingly, the Delphi community has produced VASTLY more components, many free or quite inexpensive (with source available) than the much larger groups of people using VB, C++, etc. The only other community with such a large set of components is Perl (CPAN).

    Just one category, database access components, sports over 50 entries.

    (minor plug warning:) I operate a web site that contains extensive information about database access components:

    http://kylecordes.com [kylecordes.com]

    It's a lot of work to maintain my list of 50 or so products... maintain a global registry of similar detail would be full time work for several people.

  • Maybe it's not a virus, but it is infectious. One line of GPL code in a 100K BSD app will force the entire app to be GPL as well. If that isn't infectious, then what is?

    If this is the behavior you want with the GPL, then BE PROUD OF IT, and stop snivelling about it not being viral. Stand up and proclaim to the world that you use the GPL precisely because it's a viral free license!

    But the topic at hand is a component repository. If everything in it were GPL libraries, then only GPL apps could use it. Not even LGPL libraries would be able to use it! I'm assuming that this repository would be for the whole community, not just GPL-only coders.
  • Just imagine we had this component library. Imagine that we had a huge database of reliable components that would work together easily. If this library were GPL'ed it would actually not be available for general usage buy just anyone. The program you were plugging it into would have to be GPL'ed as well. This would be a great incintive for newly developed programs to use the GPL as well. The result is the ability to tell management that by using the GPL you could get your product to the market faster, with less bugs and with more standard features. Although the LGPL is great it does not promote open source applications to this degree.

    This isn't viral behavior but there is a bandwagon or "me too" effect that is associated with the GPL.
  • With CORBA 3.0, there will be a standard for components called CORBABeans. From what I have seen of the standard, it look extremely promising.
    It is platform neutral. Supports local and distributed operation. It is a mimic of the JavaBeans standard which is really very cool except for the poor performance ...

    It could be a contender for use in such a repository, as well as, GNOME and KDE.
  • Bowie J. Poag of Propaganga fame is already starting exactly this at www.system12.com [system12.com]
  • For starters, I think the language useage tells us all a bit about the personality here...

    Secondly, the lack of a user name tells us a bit more about this in'duh'vidual.

    Lastly, The whole GPL idea is to keep people from patenting the idea published. We write the code, or we modify the code written by others to suit our needs. Patents are pointless through this method. Nobody's getting very rich, but we are making one of the best OS's out there even better by pulling ideas from programmers all over the world. Nobody has even tried to patent any of these programs of code enhancements, as far as I know.

    By the way, I'm sure that it would've been posted on /. if somebody had tried it...

  • If you make the stuff public domain, there is nothing to stop the repository from slapping a GPL license on it to prevent YOU, the original developer, from using their enhancements on your own public domain projects.

    Perhaps think about submitting them under a MIT like license. No one would be able to change the license, but they would still be free to use whatever license they wished for any derived code.
  • I think such a repository is necessary and would need to be able to serve as an apt source for debian packages and have an apropriate structure for updates by other distributions. I know debian isn't the only one with the ability to check a repository for updates, but it would be nice to have a central unofficial debian source
  • It is important to realize that projects are way bigger than just software. There are jpeg, midi, HTML, txt, etc. files that need a GPL'd component repository too. In fact, any work that can be copyrighted needs to find a friedly home in the Component Repository.



    The Component Repository needs to be a home for artists, musicians, mathematicians, architects, philosophers and poets. Let's see, did I leave anyone out? Oh yes, programmers too.

  • by Forrest J. Cavalier ( 16105 ) on Wednesday November 03, 1999 @05:31PM (#1565441)
    Went online in October.
    http://www.rocketaware.com/ [rocketaware.com]

    Includes special sections for GNU software [rocketaware.com], BSD man pages [rocketaware.com], FAQs [rocketaware.com], AskSlashdot [rocketaware.com] (back to the beginning), Programming related books [rocketaware.com]. Even has links to cosource.com, dmoz, yahoo, fatbrain, amazon. [rocketaware.com]
    Over 15,000 off-site programming related links. You must check it out. A single idea just like the one that started this thread was discussed about 18 months ago. This is the result.

    On tap: (coming up) on site discussion, all of the unc metalab linux archives, and anything else we think of or get suggestions, or gets submitted.

  • An interview with Bowie J. Poag [linux.com] just went up today on linux.com. Here's an excerpt:

    linux.com: What's System 12 all about?

    Bowie J. Poag: System 12 will be a resource stockpile for Linux application developers. For lack of a better buzzword, we don't really know what to call it yet, but the basic premise is this: System 12 (hopefully) will do for Linux application development what Themes.org did for windowmanagers. We're going to be offering a series of free "component toolkits" for developers to include in their own work. In exchange for using our work, we will be offering them free hosting space on our server so they can showcase their work to the community.

    Visit the System 12 site [system12.com] if you're anxious.

  • This is a great idea (i think)! moderate this post up (please?)!

  • The internet is fine for a distributed, poorly catalogued repository. If, that is, you know where to look. As a casual (i.e. non-professional) programmer I haven't the slightest idea where to start if I want a GPL module to do task-x in any language other than Python or Perl. Sure there's lots of places for code but I've had to wade through commercial garbage for hours and still not find anything useful.

    I'd like to see a site that kept material up to date and indexed by task and by language. And not just say basic but also who's version of basic (or C/C++, Pascal, etc). Something that could say to the green programmer "What do you want? We have this abailable for platform X, language Y, etc."

    If what I said is nonsense,
    I'm making a point with it.
    If what I said makes perfect sense,
    you obviously missed the point.
  • This idea is pretty cool. Unfortunately, it has several problems:
    • Were you planning to support one language? Or multiple languages?

      If the only language is C++, then your project will be rejected because some people prefer to use C, Objective C, Scheme, Perl, Python, and Eiffel.

      If you plan to use many languages, then you probably have ONE choice for a structure on which to build this, namely ILU (Inter Language Unification). [xerox.com] Unfortunately, that leaves you with a set of data structures that are to some extent a "lowest common denominator" of the things supported by all of the languages.

    • Is what you want supported already by CPAN or by www.python.org ?
    • By the way, if you wanted the facility to be network-distributable, then you definitely want to use ILU or some other CORBA [hex.net] variation.

    In effect, the only choice for the sort of "componentizing" that you're describing is some variation on CORBA. You probably need to get a copy of the Henning/Vinoski book on CORBA, and to start writing chunks of IDL to represent all the sorts of interfaces that you want to be able to have "published."

    Unfortunately, there's still an impedance problem, as:

    • There are wide variations in performance between ORBs as well as between components that can communicate "real directly" via memory as they're running in the same process as compared to components that may communicate hundreds of times more slowly because they reside on separate hosts.
    • Components may be implemented in ways that vary considerably, and which may require significant configuration effort to get their service running.
  • A CPAN like mechanism would work well for languages that have very well defined, unambiguous specifications. Perl, for instance, behaves pretty much the same way on all (at least Unix) machines. Java and Python, as well as most other "interpreted" languages also share this characteristic.

    C and C++, being much older, with more carryover "baggage", however, do not have the luxury of a fully specified language definition. In the ANSI spec for C/C++, there isn't even a set size for the basic data types! All that is required are various ambiguous properties such as sizeof(long) >= sizeof(int) >= sizeof(short)

    A generic C/C++ code repository would face much difficulty in maintaining portable code that would just work for anyone, given the nature of these languages. As far as Perl, Java, and Python go, there are already many code repositories available: CPAN [cpan.org], Gamelan [gamelan.com], and Python.org [python.org] all contain links for downloadable "modules" for these languages, repsectively.

  • by Christopher B. Brown ( 1267 ) <cbbrowne@gmail.com> on Wednesday November 03, 1999 @06:11PM (#1565451) Homepage
    Some good ideas here; it is definitely important not to build components so that they will be heavily dependent on one "Desktop Environment" or another.

    The example that I keep citing (and nobody has ever done anything to bring to fruition) is that of the calendaring systems. GNOME and KDE both have calendar programs that "grok" the iCalendar specification, but only partially. In particular, iCalendar was designed to allow "Calendar clients" to connect to a "Calendar server" that could provide schedule information for multiple users.

    What they should do is to define a CORBA interface to talk to a Calendar server; by having common IDL that would be free of ties to any GUI there could be one implementation of a Calendar server that both the GNOME and KDE clients would talk to.

    This is much same idea as the notion that any sort of web browser can talk to an HTTP server.

    Don't be so sure that KDE has "dissed" CORBA as dramatically as you're thinking; what they have concluded is that running raw GUI calls through CORBA to implement compound documents is quite ridiculously inefficient. Note that the GNOME guys have largely concluded the same thing. (ORBit appears more efficient than MICO, so GNOME may get away with doing more with CORBA than KDE can...)

    The point is that CORBA has enough overhead involved that you don't want to be shipping around tens of thousands of CORBA calls per second.

    On the other hand, using CORBA to request:

    • ... That a text editor be invoked to edit a file,
    • ... That a document, specified as a tree, be submitted to a printer,
    • ... That a bundle of configuration data be retrieved
    all represent areas where there's large enough "granularity" that CORBA can be useful.
  • If that one line of GPL code is in your 100K BSD app, it is because you want to use that line - i.e. if you tend not to use the GPL for your app but use even one line of GPL code, it is your fault.

    It is different from a virus, where an executable is passively infected without you knowing it.

    Therefore, by the nature of a virus, the GPL is NOT viral. If you insist on calling it a virus then I guess it must be a virus that depends on manual infection thru the hand of programmers.

    Try to find a virus behaves just like that!!

  • It strikes me that a lot of Open source code is out there in CVS repositories, much of it available by anonymous CVS. It also strikes me that the maintainers of this code *want* to maintain control of their repositories to make sure that things like backups happen to their satisfaction, etc, so it seems unlikely that a *centralized* place for repositories will appear, and even if it did, it doesn't seem too appealing. The decentralized disorganized spread-out chaotic highly-excessively redundant nature of the current state of things probably has something to do with its success.

    So, back in the old days, there was archie, which used to go out and search FTP sites anonymously and make a giant index of what was out there. Now we have web crawlers.

    How about something like archie or web-crawlers except it goes out probing port 2401 (cvspserver) and catalogs what it finds (maybe does a "cvs co -c")

    An extension to CVS to allow a sort of description of what's in the repository (freshmeat style?) to be probed might be cool.

    i.e. maybe a "cvs -d wherever whatchagot" command, that could just spit out the contents of some files in CVSROOT, perhaps without even requiring a "cvs login" And a standardized anonymous CVS login and password might help...

    Hmmm. Maybe I'll propose this in info-cvs@gnu.org. But it's kind of a chicken & egg thing. Without the cvs-indexer-robot, what use is the new command, (and everybody would need to upgrade to the newer CVS server) and without the new command, the web-indexer isn't really feasible.

    Hmm. Maybe I'll just implement the damn thing (the cvs mod, not the cvs robot, I'll leave that to someone else with the bandwidth and the hardware to do it with.) and submit the patch to bug-cvs@gnu.org...

    Later, got to look into some code!



  • CPAN depends on testers (of known quality) to approve items. Not every language has as centralized a community. This may mean giving people of known quality temporary autocracies to recruit a pool of testers of known quality. After the high standards are set, a more democratic (or anarchist, depending on your POV) can take over.
  • A Few Comments:
    1. Great Idea!
    2. Can we break up existing code into pieces and organize them? There is a lot of it out there in all the other Opensource projects
    3. The infrastructure and ideas are similiar to the Trove Project (which is similiar to Freshmeat)
    http://www.tuxedo.org/~esr/trove/ [tuxedo.org]

    That's all
  • I think if we look at who uses components to build applications, we'll see that (to a large extent) it's consulting firms. These firms that are not very likely to release anything under GPL. They're really only making money because they got the contract or wrote the demo code and showed it to the client first (What, you mean they're not innovating? HAHA).

    I think the only way that something like this would work is to allow any type of license.

    Having said that, I think it's a great idea. Personally, I've dealt with RogueWave [roguewave.com] components a lot, and I'm not impressed, even if they have started releasing Linux versions :) I think open source could reach their mark very quickly.

  • One line of GPL code in a 100K BSD app will force the entire app to be GPL as well.

    I've got it! I'll write the incredibly-useful "Include IO Stream Library" (which won't even compile), put it under the GPL, and anyone using that line of code will have to release their product under the GPL?

  • I put the viral part in quotes as a gesture meaning that I use the original author's words, but don't believe in them. It's a form of written sarcasm.
  • Doesn't open source software get tested? Test plans, cases, and scripts would be great resources!
  • In fact I'd like to see Open Specifications. These can be a lot more fun than code. Specifically - specifications that can be animated and argued about. With Open Source not only do you choose what to do, you can do it right too!
  • Putting the license issue aside for a moment, I wonder how something like a /. model could woulk for rating the quality of code?
    Someone could submit an object/component to a team of people who would weed out (loosely) the duplication and plain useless things. These people could be picked by a vote of peers or some such method to establish a core of competence that the community at large trusts. Once it passes the initial quality check (one or more times) it could be up for a peer moderation style review.
    When searching for a particular object you could set a quality threshold on your search. The higher the threshold the less likely you may be to find something exactly like you want, but the code you do get should be of high enough quality to impress the people who used it and rated it, in fact may be built well enough to allow you to modify it to suit your needs, maybe even to the point of creating something which may be of value checked back into the moderation system as a new object.
  • Now go to their web site, find the Gtk-Perl module, and figure out how to download it.

    Get the cpan module. It gives you a cpan command shell. Then type in "i /Gtk/" to get a list of all Gtk related stuff. Type "install Gtk" and it downloads it, compiles any parts written in C, installs, and than tests it for you. Also reminds you of what modules are out of date and updates them for you. Gotta love it!

  • Most things on the internet seem more like a suppository.
  • I could see taking criteria like that and starting a project for Open Source programers similar to what the Hornet Archive was for the demoscene - a searchable directory listing of stuff with each entry having a small blurb about platform, language, maybe a 10 word abstract, and a link to the actual stuff, and have the coordinators review everything and make sure it fits a standard format and check to see the code works.

    Though I can't see many hackers wanting their contribution to the Open Source community being reading/reviewing code rather than making/modifying it.
  • Here's an idea: rather than use the GPL for all the components, use a BSD/Artistic style license. Why? The GPL prohibits the code from being used in classic "cathedral" closed source projects. Why is that important, you ask? Well, if there were enough free (speech and beer) libraries do, oh, say, anything on Linux or *BSD, they suddenly become a much more attractive development platform than they already are. Time to market and cost of development drop through the floor. Linux and BSDs market share shoot through the roof as they become the preferred developer platform... since it's so damn easy to write code for a platform with extensive libraries.


    And the upshot of it all is that it means less messing around with Microsoft products and more jobs working in the environments we love!



    --

  • Hi Jack,

    As the architect of Bamboo, I am very honored
    that you have listed my project along side
    CORBA, but am also very interested in how/why
    it doesn't meet your needs.

    I'll be the first to admit that Bamboo lacks
    some of the features found in other component
    frameworks, but I consider that a strength. As
    I see it, all the kernel (user space) must do
    is load and unload code, downloading it from
    the network as needed (to resolve dependencies).
    All other functionality (which you desire) can
    be loaded as required. This enables the Bamboo
    kernel to remain small (186Kb compiled) and
    interoperable with existing wiring standards,
    remoting standards, programming languages, and
    VMs. Case in point, I run programs that have a
    C++ engine (for performance), with COM wrappers
    (actually Mozilla's XP-COM) for versioning, a
    Java AWT based GUI, and Python/Tcl/Perl scripts
    all in the same process address space!

    In summary, like yourself, I was not satisfied
    with existing options. What I have developed
    is a practical, easy to use (based on user
    comments), cross-platform mechanism for loading
    code in/out of a process's space, regardless of
    the programming language. While Bamboo is a
    powerful mechanism on it's own, I strongly
    believe that users should augment it with other
    technologies to solve issues such as safety
    (as in MMU, not authenticode), versioning,
    remoting, reflection, meta-programming, etc.

    So, what would you say about using Bamboo to
    develop the COA on top of?

    Sincerely,

    Kent Watsen
    http://watsen.net/kent
  • by Kitsune Sushi ( 87987 ) on Wednesday November 03, 1999 @08:39PM (#1565476)

    The usage of the term ``General Public Virus'' all but confirms it. Serious usage of this term indicates a lack of understanding, and is strongly indicative of the notion that the person using said term dreams of software that they may not only use, but abuse as they see fit (and, indeed, extends this dream to cover all software ever created.. apparently this isn't just restricted to people who deal in warez anymore). No one is forced to GPL their software, and if you wish to build your work upon the work of others, you must abide by their licensing scheme. If you don't like it, do it yourself. It's rather simple.

    Complaining that the GPL doesn't achieve your aims and objectives very well is ludicrous. Just don't use it. What can not be argued (reasonably) is that the GPL fails to achieve its own aims and objectives. It has done so with flying colors. So, if you like the GPL, use it, if you don't, then another license will suit you better. Complaining that you can't turn GPL'ed software against its intended goal is paramount to complaining you can't enslave people anymore.

    The other obvious hole in the logic presented here is the notion that you can't use GPL'ed code in a public domain software package. This isn't entirely true. Public domain means that there is no copyright license. You are free to fork the unlicensed software package and relicense it. So, while it is true that you can't use GPL'ed code in public domain software and still have it be public domain (it is now under a copyright license -- at least your fork of it -- the GPL), it is not true that you can't do it at all. You could relicense it under any other license as well. Of course, the original would still be public domain, but your ``distribution'' of it wouldn't have to be.


  • Just to clarify a few things....


    A) The interview I gave with linux.com took place yesterday afternoon. Apparently, this Aiken guy probably read it when it was posted earlier today and decided to apply the same idea to sourcecode in his post to Slashdot. Ideas dont hurt anybody, so quit railing on him.


    B) The sort of thing we're doing at System 12 doesn't encompass code-based components. Sound, graphics, and font component kits, yes..but not code.


    C) This idea isn't new (or unique) and I certainly cant claim to be the originator of the idea... In my case, i'd been kicking the idea around for a good 2-3 years before finally having the opportunity to have a go at it this summer. However, as many people have pointed out, other people have been similarly kicking around the idea for quite some time, it appears.


    Bowie J. Poag
  • This may be a bit of late-night idiocy, but, allow me to think "out loud" if you will for a moment.

    I am a firm believer in Open Source for a number of good reasons of which we are all likely aware. The issue of licensing always comes up and often good Open Source code can't work together with other good Open Source code because of incompatibilities with licenses.

    Often, a developer will release code under one license, and since s/he's the developer, also later release it under another license (it's proprietary and then GPL'ed, or Qt-licensed then GPL'ed, etc.). What would happen if, given that there are say 5 "blessed" Open Source licenses which happen to be incompatible with one another, a developer took his code and released a copy under every one of these 5 blessed licenses?

    While this is not sufficient to solve incompatibilities, since the next developer on the BSD (say) branch adds his code in and just keeps it BSD-licensed; if everyone were doing it then the new code could be released under all the blessed licenses. This of course does nothing to make currently GPL'ed code compatible with BSD-licensed code, but is something gained by doing this for later code?

    Is there a license that one could write which is something of a meta-GPL? In the sense of saying: "Code under this license must be redistributed under this license and under (blessed licenses 1-5)"... I'm not sure that's particularly cogent, but maybe someone gets my drift.

    It's late enough that I can't tell if this is absolutely idiotic or somewhat sensible. Oh well, that's what flames and moderation are for.

  • If anyone can explain what XML actually does which is useful I would be glad to hear it. And don't tell me it is a subset of SGML or it is a language definition standard...neither of these give any clue about how it could in any way be useful...neither does the XML spec...it appears to be just a large complicated way to specify parsers
  • by PG13 ( 3024 )
    I don't believe this is quite true. No program could use the static libraries..however given that you cannot copyright the library interface (hence why WINE can be free) anything could load the shared library

  • If it's simple, and it's text parsing (XML), the open source community will have no problem mastering it.

    If anything the "commitment" to CORBA is "disastrous" because it's likely to be outclassed and incompatible with quasi-proprietary commercial implementations, and thus worthless as a standard. Open Source works best with simple, baseline protocols - HTTP, DNS, and potentially XML-RPC.
    --
  • From reading other comments, some people are pointing this out as well. So to avoid being redundant, I'll try my hand at some possible solutions.

    First off, quality. Probably a simple voting system requiring a registration would suffice. Since it's not a religous issue (no freshly developed code fragment has the religous overtones of VI or EMACS) there shouldn't be too much ballot stuffing. Email registration takes care of the casual skript kiddy.

    Simply rating the software on it's stability and efficiency would be nice. Comments on it's usability (how clean is the API) and the like would also be good.

    Finding what you're looking for. A much harder topic indeed. Not many people go in looking for a Red-Black tree code fragment, so there probably needs to be some documentation on what functions do what you're after. Pointers to some excellent books on programming also apply.

    How about Compatability? The whole thing is useless if every component depends on yet another different piece of software. (Which is why I'm so happy that aprintf is in glibc. That's a major improvement) Perhaps defining common APIs for common functions is a good idea? There's not too many ways to handle string classes, so if they were compatable, eventually they would be mergable into one well-done class instead of 35 mediocre classes. Identifying what is good and what sucks and standardizing should be the primary goal.

    Lastly, Licence conflicts. If such a thing is done, to be truly useful it will have to be usable by everyone, not just GPL software. Nobody will contribute if we lock out all BSD style licences. My reccomendation here is that anything that's more then just a fragment of code be LGPL. Moreso, all of it should be linkable into a single LGPLed library. This avoids namespace bloat, as well as ./configure bloat. Code fragments? If you really want to GPL the code to free the first node of a linked list, you need to take a large, blunt object and beat yourself with it. Save the GPL for a PROJECT, leave simple coding examples public domain. Let the download counter of your snippet be your reward.

    And as soon as such a thing exists, I've got a handful of code of varying utility I'd put in there. timer management, IO, buffering, whatever I've had to write. I'd like to clean out my attic and see if anyone else gets a use out of it.

    --Dan

  • "Write your own and don't whine that you can't steal from us."

    It's not stealing, it's sharing code with my friends :-)
  • I wonder how many have considered an idea that I have been tossing about in my head as of late. I don't believe this is very far-fetched: proper use of the Unix process model could be considered a form of component-based programming!

    I can hear it now: "Boo! Hiss! Components have to be built on CORBA or DCOM or (name your acronym)!" Let me try to describe my view. Feel free to disagree!

    The major benefits, in my view, of component-based programming are:

    1. Components can be assembled with minimal effort.
    2. The system scales well because additional hardware can simply be added.
    3. Components are isolated from each other, so debugging is much simpler.
    4. The developer has many choices of programming languages and platforms.

    Which of these things can't be duplicated by a Unix script? Since multitasking is inherent and clustering is available, assembling a system using familiar Unix languages and multiple processes can be just as efficient as a CORBA equivalent. A Unix process does indeed have a component-like interface, though it may not be apparent at first: command-line arguments, the environment, pipes, signals, and sockets.

    Therefore, it could be argued that the "component repository" is already on any Linux user's HD. Image manipulation utilities, formatted document generators, network protocol implementations, forms-based GUI generators, widgets, etc.

    I'm going to provide a counterargument as well, however. An object-oriented component model needs to have easily defined and flexible interfaces. All Unix-based interfaces depend on a serialized stream of bytes. That is not appropriate when you want to send a polymorphic object!

    Thought number two (much simpler thought and probably more useful): as long as we can first decide on a standard model (CORBA would be a good choice), we could begin building components out of the GPL utilities already out there. "wget", "ispell", XML processors, and more are good candidates.

    Thought number three: The KDE people are already building lots of components. We have to build on their efforts as well as others'.
  • Is there a license that would allow code to be re-used in a commercial application, but would force the commercial site to re-publish any changes that they made to the source?
  • Why would it matter to a consulting firm if they have to release their code to the client under the GPL? They're not making money from selling code licenses, they're making money by providing services to the customer. Of course, they might also build up an internal repository of components, but if they can get a vast number of components for free, they might consider it worth giving up the advantage they get from having proprietary code for that advantage of having all this free code available to them.
    For consulting firms specialised in niches, this might not work out to their advantage, but for most consulting firms, I would expect it to make sense. Though I don't have any experience with consulting firms and their code libraries, so I might be way off, but I suspect I'm not for most outfits.
  • What we really need is standardization. Standard APIs and custom implementations. If there's one thing you can learn from the Java platform it is that standard APIs are very convenient.

    It's much easier to standardize APIs then component implementations. The reason for this is that there is never a single best implementation for all circumstances. With standard APIs forking of projects is no longer a problem as long as the API is preserved.

    BTW. what exactly is meant by a component here. Corba? A C library?
  • Is there a license that one could write which is something of a meta-GPL? In the sense of saying: "Code under this license must be redistributed under this license and under (blessed licenses 1-5)"...

    Well, you can distribute perl under the GPL or the Artistic License, at your option. But for what you want, you'd be better off using the XFree86 licence, which is compatible with pretty much all the others. Or better still, just release it into the public domain, and people can relicense it under whatever terms they wish (BSD, GPL, proprietary, etc).

    Bear in mind that if you allow people to distribute the code under the BSD licence, you also allow them to distribute it under a proprietary licence, since the BSDL allows this.

  • by Ed Avis ( 5917 ) <ed@membled.com> on Wednesday November 03, 1999 @11:31PM (#1565493) Homepage
    What is happening with the Trove [tuxedo.org] project?
  • Glib already gives you linked lists, binary trees, hash tables and numerous other handy data structures and useful routines. It's widely used (being the basis for gdk/gtk, and hence Gimp, GNOME etc.) and fairly bug-free. For more details, see http://www.gtk.org/rdp/glib/book1.html [gtk.org].

    Primarily for use in C, but bindings exist for numerous other languages, too.

  • You can't slap a copyright on a public domain work as is, but as soon as you modify it somehow, you have copyright to the modified work, and then you can GPL it. You can, e.g., simply add a GPL copyright notice in every file, and then license the work under the GPL. So it is certainly possible to take public domain source and put it under the GPL without even changing the actual code.
    Many people would, of course, find this to be offensive, but that doesn't mean you can't do it.
  • There is nothing about interfaces that require objects. You need user-definable types, but there are very few typeless languages, so that's not a problem. As long as you have types, you can specify the signatures of every public function, which is what is needed. So there wouldn't need to be anything OO about it.
    Actually, you don't really need user-definable types, either, but they make it a lot easier.
  • Thank you for responding Kent!

    First, let me say that I am actually considering Bamboo as one of the underpinnings of the COA. As you pointed out -- in this case being lightweight is an advantage. Actually a huge advantage.

    But let me quote from my original post (referring to Bamboo, Corba and ZOPE): "But none of them go as far as I would like." As a basic technology underlying the COA Bamboo is very nearly perfect. Much as the ZOPE Object Database design (ZODB) is nearly perfect for COA persistent storage. Only thing is, these are peices of what I see as a larger whole...

    The real point is that I want to design first and develop afterwards (what a thought!). Not being a foolish egoist, I have every intention of incorporating any existing technology that would work as part of the whole. And I do see Bamboo as possibly filling a specific role, both in code and architecture. I would welcome your help in making this so!

    So what do I need right now? Something you are probably doing anyway: Architectural documentation for Bamboo. Preferably with UML diagrams and with more detail than the overviews I found drilling down from the Bamboo web site. And I would really appreciate your active participation in the COA effort. Everyone involved has real jobs of course, and so we will probably proceed in fits and starts. Plus there is the usual possibility of the whole thing just fading away. But I can guarentee you one thing; this is an idea whose time has come. If it isn't the COA it will be something else.

    Jack

  • The question that immediately comes to mind is how to organize the code. CPAN is PERL-specific, and other repositories tend to be similar in terms of supporting a single language.

    On the other hand, the purpose of the proposed repository is to support the distribution, improvement, and archiving of GPL code. IHMO the specific language should be secondary; i.e. the repository directory for a given type of network interface would contain C, C++, Java, Perl, and other code.

    Confusing? Yes, somewhat. There would certainly be disjoints where there is no equivalent code, and the repository hierachy would have to be somewhat general. But doing so would have the implicit effect of encouraging porting, cross-platform development, and ultimately support sharing and development of GPL code in a manner that's not been done before.

    -just my .02
  • Why should it bother *you* that *my* friends don't share?


    Software should not be owned. If my friend asks me to make a copy, it would be wrong to refuse. By putting a copyright on the software, you are asserting ownership over it, and denying me my natural right to share it. People not only deserve free software, they deserve software without conditions.

What is research but a blind date with knowledge? -- Will Harvey

Working...