Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Install cowebx option #1 #218

Open
rinatio opened this issue Oct 23, 2012 · 4 comments
Open

Install cowebx option #1 #218

rinatio opened this issue Oct 23, 2012 · 4 comments
Assignees

Comments

@rinatio
Copy link

rinatio commented Oct 23, 2012

Hey guys,

I get an error trying to install java server by this link on 4th step:

[ERROR] The goal you specified requires a project to execute but there is no POM in this directory

@ccotter
Copy link
Member

ccotter commented Oct 24, 2012

Part of this is caused by what I've put in cowebx master depends on API changes to the coweb server. What the tutorials should do is reference tagged releases instead of code durring in development checked into master, or better yet use the modules that are in the maven central repository.

I'll change the tutorials to use stable modules. In the meantime, try working with the 0.8.3.1 tagged releases of coweb and cowebx and the master branch of coweb-boilerplate. These three should all be compatible with each other.

https://github.com/opencoweb/coweb/tags
https://github.com/opencoweb/cowebx/tags

Also note that in the option 1 that you are using, running mvn install inside of cowebx/ will not work (this part is outdated, even if the master branches were working). The original point was to install the cowebx-widgets for use by the boilerplates (I think). Step 4 should be something like cd cowebx/cowebx-widgets then mvn install.

I'll update this when the tutorial is updated.

@ghost ghost assigned ccotter Oct 24, 2012
@ccotter
Copy link
Member

ccotter commented Oct 24, 2012

@mashingan, please check out this updated documentation (hosted at a temporary location). Hopefully, the tutorial should work as intended now.

Let us know if you run into any other issues.

ccotter added a commit that referenced this issue Oct 24, 2012
@rinatio
Copy link
Author

rinatio commented Oct 24, 2012

Yes, seems like working now. Thank you very much!

Sorry for offtopic, i'm trying to explore coweb architecture and find exact place where OT logic is implemented. I see some stuff in servers/java/coweb-operationengine and in js/release/coweb-src-0.7/coweb/jsoe. Is it implemented on both server and client side?
If it's only client side, is there any way to reuse that component with node.js/socket.io/backbone for example? You're building cool framework, but it's difficult to integrate it with existent application, especially when it's not Java based...

Thanks @ccotter

@ccotter
Copy link
Member

ccotter commented Oct 25, 2012

I would direct you to our documentation on code organization, but that looks to be outdated.

To answer your first question specifically, there are two version of the OT logic.

Javascript

A separate git repository coweb-jsoe. This contains the JavaScript OT code used by the client. Originally, OpenCoweb used only the JavaScript version for browser clients, and the code lived in something like coweb/js/lib/coweb, but then the code moved to coweb/servers/java/coweb-javascript/src/main/webapp/coweb/jsoe (I believe this happened sometime around when the Python server became unmaintained).

The code has always been considered a "black box," with the details hidden from application developers. Eventually, we created the separate coweb-jsoe repository housing only the JavaScript OT code with the intention that developers who wanted only the OT code (and not the OpenCoweb framework API) could somehow use coweb-jsoe. Whereas OpenCoweb provides a server and easy framework to create cooperative web applications (developers don't have to worry about communication with server/other clients), coweb-jsoe only gives the OT code. It is up to the developer to provide the communication protocol.

coweb-jsoe provides some examples, though they are pretty crude and are meant as motivation for how coweb-jsoe could be used.

There is a node js package of coweb-jsoe that might be of some use to you. There is also documentation for coweb-jsoe.

Java

Eventually, OpenCoweb added a moderator to the server, so that applications could use a server object to know about cooperative events and act sort of as an "external client" that moderates the cooperative session.

Having a moderator required an operation engine in the server, so that the moderator always gets correctly transformed events. Note that this OT in the server does not transform events that are sent to remote browser clients. The JavaScript OT engine does this locally on each client's browser (hence the whole point of operational transform).

Anyway, as you pointed out, the code lives in servers/java/coweb-operationengine.

Python

Once the Python server is brought up to date, we will have a third version of the OT engine for a Python moderator.

Final thoughts

Anyway, since you've mentioned integrating with existing applications, you can integrate the Java server servlet with existing Java web applications. This is the original intended goal of OpenCoweb, providing a framework for easy communication and operational transform.

You should be able to use the coweb-jsoe NodeJs package for integration, although note again that this package only provides the OT engine, and no means of communication with remote clients. We don't have any use cases of the NodeJs package/coweb-jsoe beyond the crude examples provided. coweb-jsoe was originally created to satisfy some requests for exposing the OT code.

You should let us know your experience with OpenCoweb or coweb-jsoe, if you end up using either in an application. Hope this answers your questions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants