Section B6 Group 1 Brainstorming Page

From SFTropes
Jump to: navigation, search

This group meets in Skiles 268 at 11 am. It consists of Patrick Carton, Jimmy Micali, MC Zhang, and Tim Swihart from the 9 am class session

Contents

Project Statement

Our goal is to create wireless access point/sharing point that is small, highly portable and can mesh together with other such nodes to create a network, either for group collaboration or to facilitate wireless communication in areas where communication is limited, restricted, or censored. This is to be built using cheap, commonly available parts modified using Free and Open Source Software to create a collaborative network independent of the internet.

Here's the Git Repository

Basic Plans and Design

  • Content Node will broadcast a network which will be repeated by other routers/devices in range
  • Webserver hosted on Content Node will redirect all traffic to it, and provide an interface for selective uploading and downloading of files
  • automatic uploading of files from specific folders on client computers to Content Nodes
  • seamless and automatic syncing of files between Content Nodes (if numNodes > 1), so that if one node disconnects access to files is not lost
  • periodic policing of files to delete the oldest ones (if storage space becomes a problem, delete the oldest X amount of files after a certain threshold)
  • Nodes will be small and portable (able to fit in a large pocket, backpack, lunchbox etc)
  • Can be connected to AC or DC wall power, batteries, solar panels, etc.
  • Priority Queue (Top 10 List?)
  • Sorting by file type
  • Space Management

Brainstorming

This is where we got the information from. Know that only Free, uncopyrighted, GPLed, Creative Commons Works, or other freely and LEGALLY distributable media will be uploaded to this server. We will not be naming it "PirateBox" for our project for obvious reasons. At the moment we are calling it the "MercuryNexus."

Rather than using the Seagate Dockstar, we have ideas to use the PogoPlug v2 (same hardware)

Mesh Networking An alternative to the standard wifi network setup. Definitely something to look into

Software

Client Side

Written in Python (for cross-platform compatibility)

Content-Network refers to the wireless network broadcast by the node

Server = IP of server
Upload = path/to/uploads/folder
Sent = path/to/sent/folder
if connected to content-network:
	check uploads folder for files

	if Upload not empty:
		Files = list of files in Upload
		try: 	
			for file in Files:
				upload file to Server (tmp directory)
				move file from Upload to Sent
				Lather, Rinse, Repeat

		catch: 
			IO errors, or whatever decides to blow up

Server (Content Node) Side

Written in Python or Bash (not sure yet. Probably Bash for a smaller footprint, since the plug computer has limited memory)

TempDir = /path/to/hidden/temp/directory
ContentDir = /path/to/content/storage

if TempDir not empty:
	Files = list of files in TempDir
	
	for file in Files:
		try: 
			Move file to TempDir
				if file has the same name as Conflict:
					compare file and Conflict

						if file == conflict:
							delete file
						else:
							append number to file's filename
								(while append number conflict
									increment the number)

				
			delete file from TempDir
		catch:
			whatever the OS throws at us, and handle it accordingly
		

Future Ideas

Plans for the future:

  • implementing an IRC server for real-time communication between parties
  • meshing together multiple Content Nodes (as each "box" will be referred to) into a seamless network
  • implementing a sort of "mail server" for passing messages to everyone on the network


Possible Applications

  • Portable file-sharing network for classes, group projects or organizations
  • Alternative wireless means of communication in ares where there is no internet (for example, our in the boondocks or in places such as Egypt where the government has shut down the internet)
  • File server for a dorm room, floor, or apartment complex to be used as a repository for class materials such as Notes and other applicable media


LICENSE

DIY PirateBox was created by David Darts and is registered under the Free Art License (FAL 1.3). The Free Art License grants the right to freely copy, distribute, and transform creative works according to the principles of copyleft.


As such, this project will also be distributed under the Free Art License (FAL 1.3) and the principles of copyleft. All code will be open-source and hosted on github (repository to be posted later)

Contact Info

Please also list skills you believe will be useful for our project (programming languages/experience, design experience, etc)

Jimmy Micali

  • Languages: Python, Java

MC Zhang

  • mengyu[at]gatech[dot]edu
  • Gitorious Account: mcdream
  • Languages: Python/Jython, Java, C, Smalltalk, Assembly

Tim Swihart

  • Languages: Python, C, Bash, HTML/CSS
  • Other: Worked with hardware before

Patrick Carton

  • Gitorious Account: pcarton
  • Languages: Java, (some)Python
Personal tools