Forum OpenACS Q&A: building new Track&Field web/database application

I am intending on developing a Web application which is to support a
Track and Field site.  It will allow users to login and have
discussions with other athletes on training etc.  But one of the 'key'
applications will be to support Competition results.  This will entail
building a specific database model (most of which I have done) so
users can do a multitude of different searches on performances and
competitions.
Certain functions or parts of the site will only be available to a
user (or group of users).

I have read Philip Greenspun's book, and thoroughly enjoyed it.  I
started re-reading it again to get my head around the modules of ACS.
I personally am not a big fan of Java development, and am looking at
using OpenACS (probably v3.2.5), or potentially PHP or <cough> Zope.

Ultimately the Athletic federation will maintain their system, so I am
wanting to install something which will be fairly easy for them to
maintain/extend as required.  They are keen to 'learn' a little also.

I have experience with web development and databases, but not
specifically OpenACS.  My question is whether using OpenACS would be a
good base for this type of application?  Any/all comments appreciated.

Sounds like a good fit to me.  OpenACS gives you user management, discussion boards, etc. "for free" so you can write your code without reinventing the wheel on basic stuff.
I would consider using oacs 4.5 as soon as it is released (not too far away I believe...)

I am running a 3.2.5 site and am overly happy, but there is not as much development on it as on 4.5... And although you might not need 4.5 at the moment you might want to use packages in the future that will only be available for 4.5+!

Collapse
Posted by Philip Jensen on
Is OACS4.5 Java or or Tcl based?

As I mentioned I am not much of a Java 'bigot'.

aD had both java and tcl versions of ACS 4 but OACS is only working with tcl.
Another advantage of using oACS.

As your site grows you may want to add fuctionality and ACS has a lot already 90% ready to go.

For instance:

Survey: for doing polls like "What is your favorite food to carbo load?" or things much more complex.

Calendar: List upcoming events.  If you want to divide events by region and by type consider waiting for Version 4.5 it has excellent group support in calendar.

Event registration: Let people sign up for events online.

Eccomerce: Pay for events by credit card, buy jock straps with your sites logo on it.

SubSites: Allow clubs to control thier own subsites. (This is supported better in V4.5 but doable to some extent in 3x.)

I wouldn't go so far as to say ACS gives you these for "free" but most of the heavy lifting is done for you.

I would definitely consider using OpenACS 4.5 for that kind of application. Specifically look into the template::forms stuff for quickly generating data manipulation forms. Although it is a bit of a learning effort at the beginning it can be very useful, especially when you need to generate a lot of different "admin" forms. A form plus the POST target with input value validation and the database manipulation code all go in one file, which makes development very convenient IMHO. Plus a template file for visual representation, that is flexible concerning the level of control that you want to have over the generated html - from none to every tag hand-written.

Will your code be ready by the end of April and opensource? We are going to have a ping pong contest here in my office, and could use a nice webapp to enter the scores 😉

Thanks all for the feedback.  Looks like I will become an OpenACSv4.5 beta tester.

Unfortunately my code will not be ready by the end of April, due to time constraints, and the learning curve.

Tilman raises an interesting point.  Will my code be opensource?  I guess I could make it opensource, I will attempt to gain approval from the customer, although I don't imagine that being too hard.

Philip wrote:

"Tilman raises an interesting point. Will my code be opensource? I guess I could make it opensource, I will attempt to gain approval from the customer, although I don't imagine that being too hard."

OpenACS is GPL'd. That means you can use it to develop proprietary or free applications based on it. The GPL protects us, the project, from having somebody take the freedoms we gave him/her and not give those freedoms back.

So if you develop an application for your company or client, you DO NOT have to ever publish the source code that application if you're only going to keep it for your own use.

HOWEVER, if you do redistribute it (e.g. sell it to somebody else) then you have to look at two things (remember that IANAL and that I may be forgetting some detail):

1) If your application merely _uses_ OpenACS but does not _modify_ it, then when you redistribute it, just include the OpenACS source and you could distribute your app under a different license.
2) Otherwise your application will have to include full source and be under the GPL as well.

You should remember this: are you really expecting to make money off of selling your application? Every time someone writes a module for OpenACS and contributes it back to the community, everybody wins, including yourself because you'll be able to use modules written by others.

Actually, my understanding was that the definition of a 'derivative' work (i.e. a work that is a superset of OACS and new development) was one that is either statically or dynamically linked. This implies to me that packages that make use of APIs etc.. are technically linked.

Does anyone else think that the GNU Library license might be more appropriate for OACS?

I think the better solution overall is to adopt a different business model. As I understand it even if code falls under the GPL there is no requirement for you to make it available to anyone and everyone, you a merely obliged to deliver source code when you deliver binaries. If you client was concerned about OS i.e. didn't want their code to be visible to the world for commercially sensitive reasons, then a simple accompanying Non Disclose Agreement can solve the problem, effectively limiting the disclose to other parties, but not breaking the GPL.

We've completely circumvented any issues about open source by being a business based on a services model rather than the traditional product model. Therefore, technically we never charge for software and don't sell code. We charge for the services we provide around deliver of that software.

Ok, so you may say that we're missing an opportunity for product revenue, but realistically without this community and OS in general we wouldn't have a product to offer anyway... QED.

We're currently putting together a commercial methodology for the use of open source, and if anyone has anything useful to send me on that topic please do. Something thats been missing in OS world, and I think that would be a beneficial step.

As far as I can see the only issue with the GPL (in particular) is that a customer maybe uncomfortable with their code being publicly visible for a number of reasons.. perhaps not least of which is not wishing their competitiors to get hold of it. Again the NDA appraoch above, sidlines this issue.

Cheers
Simon

Sorry Simon, but are you working in the Microsoft Legal Department? These kinds of arguments are exactly what companies that do not believe in free software use in our court system to skirt current copyright/patent law for their benifit, not the customer's benefit.

But I am not saying your theory is incorrect here, I don't really know about that. What seems interesting is the notion that one piece of code that is linked in with another is a derivative work. I guess under that theory no one could write anything for AOLserver that would not fall under the GPL. Under your theory, how did Oracle release software for Linux, since it is either statically or dynamically linked to glibc, and a bunch of other stuff? Or is this stuff not GPL?

Urmm.... Not sure why you think that Tom?

I don't think I'm attempting to circumvent anything, far from, as you'll see our company is 100% committed to OS and I have absolutely no interest or desire in trying to avoid that. My point was that the GPL in particular is more restrictive about the use of source code (I for example couldn't care less whether someone else uses my code in a proprietary product.. good luck to 'em I say). But the GPL does not allow for that.

This present a problem for customers for whom we develop software that would fall under the GPL but is commercially senstive. Therefore I merely suggested a well know approach which is to agree to limit disclosure of that instance under the terms of the NDA whilst in development. Of course once the software is delivered the customer is free to distribute if they want to. This neither circumvents, nor breaks the GPL. As you probably know just because something is Open Source does not mean you are obliged to make it available to anyone, just that you must distribute source code when you deliver binaries and thereby entitle the recipient to the same rights you have.

I think you'll find the answer to your point about oracle is that they probably fall under the provision in the GPL... I quote:
If identifiable sections of that work are not derived from the program, and can reasonably be considered independent and separate works in themselves, the this License, and its terms, do not apply to those sections when you distribute them as separate works

As Oracle merely uses the glibc libraries, and I would think few would argue that its a work not derived from glibc, and also does not distribute them together, therefore they don't automatically fall under the GPL. Also, there is a special exception in the GPL that covers those items normally distributed as part of an operating system.. i.e. its ok to build commercial sources that use OS elements.

Also, I seem to remember that glibc etc are published under the Gnu Library License, which better caters for this kind of use (and hence why I suggested OACS might license under that as well.)

My point really is that a new package is definately a derivative work, by definition the whole package approach is designed to make it easier to *extend* the OACS.

For example the license says:
... a work containing the Progam (OACS) or a portion of it, either verbatim or with modifications and/or translated into another language......

Which seems fairly clear to me.

Anyway, I'm not a lawyer, just a business man trying to ensure that I can make OS attractive and practical for my customers, there's littel point develping OS software if there's no way to generate effective revenue from it. Much as I would like to develop software for purely magnanimous reasons, I do actually habve to put food on the table 😊

My understanding is that the issue of derived works and linking has not been put in front of a court on the UK, therefore this exact definition does not as yet have precident, so I guess till a judge rules on it, its a bit of an unknown. However, code written for OACS does not communicate through pipes, sockets or other well-defined inter-process mechanisms, but rather it is loaded into the same TCL interpreter (hence the same run-time executable) and therefore my gut feeling is still that this comprises a derivative work.

Cheers
Simon