DotGNU's Vision for Webservices
Frequently Asked Questions
What are webservices good for?
When a program is implemented as a "webservice", its functionality
can be used by other programs which can be implemented in any
programming language, and which can run on any computer which is
connected to the internet. This makes it possible for example that
multiple users in different parts of the world can interact with a
single set of data.
How do you define "webservice"?
"Webservices" are any services that are offered on the web
(regardless of what technology is used to provide them).
In order to turn this statement into an actual definition,
these explanations need to be added:
a) With "service" we mean not only that some functionality is
provided, but that there should also be some description of
this functionality, namely how the service should be used and
what it provides.
b) With saying that the service is "offered on the web" we mean
that it's offered over a computer network (e.g. the internet
or an intranet) via standard protocols, i.e. protocols that
are open, widely published, and freely available for anyone
It is sometimes useful to distinguish between "webservice
components" which are meant to be used by other webservices, and
"webservice applications" which are meant to be used by humans
more directly. Both "webservice components" and "webservice
applications" are "webservices" as defined above.
What are the benefits of using a remote webservice ?
Apart from special circumstances (like when you need to process huge
amounts of data that your local computer cannot handle) there is a
benefit to using a webservice only when the same set of data needs
to be accessed by multiple people, or when a user needs to be able
to access the same set of data from multiple computers.
For example, the straightforward way to implement mailing list
hosting is to do it as a webservice, and that is exactly what the
implementors of Mailman, the GNU mailing list program, have done.
On the other hand there is little benefit from implementing e.g. a
text editor as a webservice unless there are features to allow
multiple users to edit the same file at the same time.
Can webservices have a better user interface
than what is possible in a web-browser?
Yes. DotGNU Portable.NET can be used to implement a
highly portable webservice client program with a nice user interface.
Alternatively, you can use XWT to "project"
a graphical user interface to the user's computer.
Is our data stored on the webservice server?
Data can be stored either locally or on the webservice server. If
multiple users need to interact with the same set of data, then it
should probably be stored on the webservice server.
This raises the legitimate concern of whether a webservice provide
can "lock in" customers by making it inconvenient or impossible for
them to get at their data; this issue is addressed in the following
Can we move to a different webservice provider?
The DotGNU webservice server requires that for each webservice and
each set of data that it acts on, there is an "owner of the data"
who has the right to download the entire set of data together with
the program which implements the webservice. Program which have
been downloaded in this way can be executed in any DotGNU Secure
Execution Environment on a desktop computer or on a DotGNU
(This means that when there is a need for an application to use data
from multiple sources, where no-one has ownership rights to all the
data, then the application must be divided into multiple webservice
Can we get source code for the webservice programs?
If all of the following conditions are met, then the webservice
provider is required to distribute the source code for the webservice
program to you, upon your request:
The webservice program has been licensed to the webservice
provider under the terms of the GNU General Public License, or it
is a derivative work of such a program.
The webservice program runs on a DotGNU webservice server.
You are recognized as an "owner of the data" for this webservice.
Then the webservice server will upon your request distribute the
program to you in binary form. According the terms of the GNU
General Public License, this implies that the webservice provider
must upon request distribute the source code for the webservice
program to you.
Am I obligated to give away my webservice source code?
You are not automatically obligated to distribute your source
code, and you are certainly not obligated to just give it away.
However, if you sell webservice services, then your customers
will expect that you make them the "owner of the data" which the
webservice uses, and depending on the exact circumstances that
may indirectly give these customers a right to get the source
code upon request. Here are the details:
If you provide a webservice using a GPL'd webservice program
(which you may have modified), then the "owner of the data"
will be able to obtain the webservices programs under the terms
of the GNU GPL, and this implies in particular that they will
have a right to get the source code of the exact version of the
program which you're using. The terms of the GNU GPL also
require you to make a written promise to this "owner of the
data" that you will be willing to provide the source code upon
request. This ensures that the "owner of the data" will know
about this right to the source code.
The "owner of the data" is typically a paying customer, and the
fact that the customer has a right to get the source code
increases the value of the service you provide. Therefore you
will be able to charge a higher price and/or close more sales.
You can use the DotGNU development tools to program your own
webservices (instead of just modifying the webservice programs
which are distributed with DotGNU, or which others have made
available under the GNU GPL) and then your are not required to
make source code for these webservices available to the customer
who is the "owner of the data". However, even in these
situations where you are not required to make the source code
available to your customers, we strongly encourage you to
provide the source code to your customers under the terms of the
GNU GPL anyway. We believe that this is ethically the right
thing to do, and that it will be good for your business.
Is it possible to establish strong copyleft for webservices,
that allows them to be used only by Free Software?
It is probably not possible to construct a Free Software license
(which operates through copyright law) which would have this effect.
Your comments please...
You are invited to add your comments concerning this
at the appropriate
page of the DotGNU Wiki