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

Pitt architecture #1

Open
pbanaszkiewicz opened this issue Jun 8, 2014 · 9 comments
Open

Pitt architecture #1

pbanaszkiewicz opened this issue Jun 8, 2014 · 9 comments

Comments

@pbanaszkiewicz
Copy link

Hi David,

I'm working on turning Pitt into installable NPM package.

I need some clarification: why is client/app.js being generated? Can I drop the generated version and don't care?

I'd also like to know what is vchat and purpose it serves?

Additionally, I've gone through the list of template systems for JavaScript and only Jade supports inheritance. I don't really like it's syntax, but I think we its other features.

Here's my code, I'll send pull request as soon as I get a working version.

@drio
Copy link
Owner

drio commented Jun 10, 2014

Hi Piotr:

client/app.js contains all the client side js logic in one single file. All the logic is spread in different files and concat together in a single one to improve loading speeds; eventually it will be minimized. Make takes care of creating that file (Check Makefile).

About vchat: it contains a webrtc/peerjs example that I was playing with. That should not go into the distribution and we should remove it eventually, or maybe move it to another directory like playground. It is a nice canonical peerjs example.

Now, about using jade and creating the npm package. We definitely want to do both but perhaps we
should focus on get a very first simple version of the tool up and running. Right now the css and html is minimal (actually I think we can prune it up more).

So I'd say: let's hold on the npm package for the moment (we can do it at the end when we are close to having a first stable version). As for the templating system, let's clean up all the html/css to make it as small as possible and focus on the logic. Once we have the first version, we can then convert the html/css to jade. How does that sound?

So, here are the action items I suggest:

  1. understand the different components in the current implementation (already done?)
  2. build and run pitt in your end. Play with it. (maybe do this before 1)
  3. Fix bugs in current version.
  4. Does the current implementation capture the specification for the first version of the app? If not,
    discuss what changes have to be made and create action items to implement and test them.

The goal here is to have a very light first version that is usable as soon as possible.

And yes, send me PRs so we can exercise peer review.

Let's get this going!

@pbanaszkiewicz
Copy link
Author

Hi David,

as per your suggestion I stopped making NPM package.
I understand that everyone wants to see a working prototype first, but I have hard time not trying to make it prettier or clearer.

Anyway, I finally got some spare time to focus on Pitt today. I'm getting familiar with the technology and I even fixed one bug (last peer from the room was being removed when admin quit).

I'll try to think of a way to host the PoC on Mozilla server and then hopefully we'll be able to test it!

@pbanaszkiewicz
Copy link
Author

Hey, I just found this yesterday. Due to our "broadcasting" architecture pub/sub service would work really well. I'd consider it for the next iteration of the Pitt.

@drio
Copy link
Owner

drio commented Jun 11, 2014

Thanks @pbanaszkiewicz.

I thought I'd write about the architecture and technology used for this initial version to help you when
reading the code. Also, I will comment on the deployment options for testing.

We have a /client / /server architecture. We use socket.io to keep track of the
list of users connected to a class or session. We use peerjs to facilitate the webrtc
interactions.

All the logic for the server is in server/logic.js. We basically wait for socket.io events to happen and we act accordingly.

The client's side logic is divided in two files: events.js and video-chat.js. Events has all the handlers for the socket.io events and video-chat has all the logic to create video conferences. Video-chat is very self-contained.

To try the system in your own machine you just have to clone the repo and run make serve (it will complain about certain node packages the first, you'll have to install them). As discussed, we will create a npm package eventually (this should be ticket).

To deploy in a remote server we just need a web server to serve the static content and a process that runs the node server. Or we could just use the node server. I have deployed the app here for testing.

@pbanaszkiewicz We definitely need you to be able to have a location online where you can deploy
the app. I can hook you up in my personal server or maybe you can use the SWC server. This should
be a priority (another ticket).

If it helps, feel free to create tickets with the different action items we have so you can track your project and facilitate discussions.

Good luck with your exams.

@pbanaszkiewicz
Copy link
Author

Thank you! Right now I'm preparing for tomorrow's exam, but I really want to work on Pitt on Thursday and Friday.

I'll make a list of issues today. I like having a clear path to follow :)

@pbanaszkiewicz pbanaszkiewicz changed the title Turn Pitt into NPM package Pitt architecture Jun 11, 2014
@drio
Copy link
Owner

drio commented Jun 14, 2014

Screencast showing the current functionality Here.

@drio
Copy link
Owner

drio commented Jun 14, 2014

Ok, now that I have finished reading all your comments and PR, some thoughts and action items:

  • Convert Issue #2: wrong naming #5 in different PRs, one of them being fixing the bug you found. Another one being showing
    mode ?
  • Create a new branch for Broadcasting mode for instructors #6, it seems we are going to be going back and forth before we get
    this going. We will work on the branch until we think is ready to go in master.
  • Make sure you can run my master code as shown in the screencast.

@pbanaszkiewicz
Copy link
Author

Regarding converting #5 into different PRs: I don't want to cherry pick the changes I made. I know it's messy, but I'll keep them within last PR.

#6 is in a new branch (pbanaszkiewicz:issue/3_broadcast_mode).

I introduced some bugs that prevent me from running a working split mode, so I'll work on fixing that within PR #6.

After you merge #6, I'll adhere to the rules you mentioned in #5 (comment)

Thanks!

@drio
Copy link
Owner

drio commented Jun 16, 2014

Just for the sake of keeping a snapshot of the current fighting fronts:

Todos:

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