Pros and cons to my project

Hi everybody

I am currently thinking about a project I would like to start. If I go on with the project it will be rather big and really complex.

I don't know exactly how to describe my ideas but I will try to make it clear.

The project would try to put up an open and standard way easily use cloud and distributed computing. I would write specifications on how it should work, create a java engine implementing it and a client also written in java on top of the engine.

The client would be almost like a virtual OS on top  of your current OS. You would be able to install programs etc.

The engine would then try to distributed work to a network an your system. Actually it would be like a big open cluster where everybody could connect to. Something like a peer-to-peer network

I now have to questions:

1- Would it be a good idea to use jME to build the virtual desktop environment. (of course everybody here will answer yes  :P) And what would be the pros and cons. It would want to use jME because I want beautiful graphics.

2- (I don't know much about jME so forgive me if this is a stupid question) Can jME be used for distributed rendering?

If the answer to question 2 is yes than maybe jME can be build into the engine as well.

(Oh and if this project turns out to be something I think there is a chance that I start a MMORPG on top my project  ;))

of course everybody here will answer yes

i wouldn't be that sure :)

I think beautiful graphics will be the least problem.

What kinds of applications do you have in mind anyway?
What are the use cases?

If the project is complete is would be like a virtual OS. There would be an engine that runs everything and a client.

The engine would manage the distribution, io,… (actually a virtual kernel) and the client would be the window manager etc.

It could be used to run all kinds of applications for example: text editing, games, graphics design, audio editing,…

But it would use distributed computing to make even demanding application available to slow computers if there is enough bandwidth of course.

May I ask what your experience level as a programmer and software engineer is?

I recommend to split the project into 3 sub-projects:

  1. Server
  2. Command-line client or a simple client using a common window system like Swing, Qt, …
  3. Fancy client using a 3d engine

    I think it would also make sense to develop them in this order.

    Of course, server and basic client should be developed parallel, because you will want to test the server functionality. But you will not need the fancy 3d client to test all the functionality, because it is only a more beautiful visualization for the user. It will be a lot easier and faster to create a console command to test something new, than building it into a 3d client.

    When 1 and 2 is done, you could start about thinking how you want to implement the fancy client.

    Good luck!

I don't have to much experience in programming. Everything I do is self-thought. Last year I thought about doing computer science at uni but about 6 months ago that changed to civil engineer. So I don't have any experience as software engineer either. I am better though than 2 of my friends in Belgium that have studied Informatics the last semester (I just moved to Australia so I'm 6 month behind them).

I am very persistent in what I try though. It's not because something doesn't work the first 2 months that I'll just forget about it and move on. I'll try to get somewhere with the little knowledge I have.

As for your recommendation I wasn't planning on doing the fancy client right away. But as I still have to learn a lot about 3D stuff and jME.

So I thought it would be a good idea to at least start working on my knowledge of these 2 things.

That why I have these 2 questions because I don't want to learn jME if it doesn't suit my needs.

If I would have to build something from the ground up using LWJGL I would be much more attention to the source of jME as I'm learning because I could get some ideas there.

If I can just use jME I know I don't have to worry to much about the jME source

You are probably right about that. But maybe I can split it in a few different projects.

First try to see if my server can connect properly to a network, run commands on the command line, communication in the network, then get io handling working, etc

I know I got the statistics and common sense against me but still I would like to at least give it a try. I'm thinking about some similar thing for a long time. 2 year ago I tried writing a OS from scratch in assembly but that proved much to hard. So now I'm trying to do something like that in java.

I'm willing to learn a lot, and read a few books about software engineering. I know it won't give me the experience I need but it will be a help I guess.

I like the idea of this platform, but it will only work when people will leave their computers on when do not use them. You want this virtual OS to be able to install in it third party applications? for example 3D Studio? How you want to share rendering calculations?

I think you should start from such a big project because it is too complex.

But I wish you luck.

Well a lot of people actually do leave their computer on and many people how use the pc actually almost never use the full potential of their pc's. web browsing, text editing etc. doesn't use very much resources so these can be put to better use. Look at folding@home and other distributed projects. They harvest vast amounts of resources so the problem shouldn't be resource availability. The biggest problem would be getting these resources.

This can only be accomplished if the platform is actually used.

The big advantage of this platform in my opinion is that java is very platform independent. The means that the platform can be run on just about everything. Another advantage would be the use of distributed computing to make thing run fast in almost any kind of situation if there is enough bandwidth and resources in the network.

The disadvantage is there will be a strain on the network. But considering that gnutella and bittorrent seem to work good and that broadband is gaining in popularity I thing that will be of a lesser importance in the future. In Finland for example they will vote a law that everybody must have access to a 100 Mbit/s connection.

And yes I want the virtual OS to be able to install third party applications. But they will have to be written in java and to take advantage of the distributed computing they will need to use the API's of the virtual OS.

And sharing rendering would be a capability of the OS

Thank you for the luck. I'll need it  :stuck_out_tongue:

An specific ideas how to use the distributed computation power?

sorry for the late response. I had some trouble here but I'm back now.

The computing power would be used to enable demanding applications even on less capable pc's. These application would be CAD programs, games, various simulations, etc.

The computing power would come from people that are only using their pc to browse, do text editing, and other less demanding things.

btw: does anybody know a site like sourceforge that isn't hosted in the US? I need this because some things require encryption with 256-bit keys but because of this the code would be regarded as a weapon in the US. So you need to inform some organization in the US before you may export the code from the US.