I am unsure about that Cory, I am considering getting an extra project space on Sourceforge and I am unsure how I want to license it. I want to keep it community related, as to be honest, it's not just web software. Your browser will choke on the codes and render it a complete mess. The eVille standards need to be used with the eVile client. So, you would have to give your users clients to be able to access it. So it's not anything that will be a plug and play per "web enabled" idea goes.Anyways, here is the specs. There are probably outdated items, bad spelling and tonnes of errors and ideas that don't make sense or conflict with html standards, but I am going over it but, it's just a draft.
SPECS:
eVille Community Technical Specifications
First Edition (Draft)
Welcome to this document. This document is the first specification to the new eVille. eVille is designed to be easy to use and simple to develop for.
Please be aware this specification is the essential of a rough draft and that things are subject to change before the final version is published.
Introduction:
The eVille community server and client use many industry based standards like http, html, php and other methods of internet communication. If you have worked on websites or server before, it shouldn't take you long before you are comfortable developing in eVille.
Server Specifications:
The eVille server is proposed as Apache/PHP Server, running on any supported platform. There are other components that integrate with eVille such as an IRC server, but at this point, these other items will be marked as "Beta" since iether little is known about them or a way to integrate them is not yet made.
Server-Client Introduction:
The eVille client is basically a web browser custom designed for eVille and it's special markup. Instead of allowing the user to specify window dimensions, eVille has locked window sizes to ensure that html and php markup shows properly. This eases the strain on developers because they do not immediately need to worry about size, they will be working with fixed dimensions.
The eVille client has a cache of images that it retrieves from the servers in a single compressed archive, and only updates this cache when the date on the files change on the server. This helps to alleviate bandwidth as clients do not constantly retrieve images using up bandwidth.
About Windows:
When eVille loads, it will start several windows and fill these windows with content derived directly from a php or html file. Each window is given a unique ID Number and a unique name. If as a developer you want to register a new ID Number & Name, you must first look at our database to see if the name is taken. Then, you need to iether fill out our form or e-mail us requesting the ID. When your ID is approved, you can officially start using it as soon as the clients start to update. (There is an update function for this function as well, explained later)
Each window has a fixed width and height. It will not be untill the first client is made and the system operational that more resolutions will be offered, as it adds complexity which for now is not needed.
The basic first edition of the client will support 640 x 480 resolution as a total area. The debug application will adjust this space to reflect the Apple Menu and a small buffer space for core services of eVille. The debug application will display how many pixels you have to work with, and will compute area left when it tests your code.
There are 2 global windows that never close. One is the status window, the other one the function window. Status displays a user's state, the other one displays options the user has. (Sign On/Off, Show Features etc.) These windows are not fixed to any position. However, windows are not allowed to collide, which means your windows must with these contraints. For example, if your window was large, it is possible that the status window could fit beneath it if the height was not too large. If the height of your window was too large, the user would be forced to have the status bar on the side. (Keep this in mind, as the client has basic features to avoid window clutter, and will use the code to determine window sizes, and from this determines buffer space.)
Sound complicated? Yes, a bit, but the design keeps the windows neat and clean, and prevents any clutter. One design fact is that a user cannot have multiple feature windows open at the same time. In this example, a user could not browse the forum while looking at the town map. This keeps everything clean. Although it might be frustrating, we want to make sure the experience is clean, neat and properly organized.
How Code Is Prepared:
eVille uses modified html code to adjust windows, to create them and to seperate a single html or php page into several windows. For example, instead of writing 3 php pages for a forum frontpage, html markers will tell eVille the portions of code that will be applied to what window.
<function=window_destin>
<ID=34 name="nav_bar">
<your html code here>
</function>
This code tells eVille that any code in this function bracket belongs in the window ID 34 which has a name of "nav_bar". This seperation is transparent to the user and to the server, since it treats the html or php page as a single document.
There is also a function to specify window size.
<function=window_metric>
<HGT=300PX WDT=250PX>
</function>
This function will tell the client where to fetch images. Images that are not changed frequently should be located in the client folder.
<img src="online.gif" location="local">
Switch the function to "location="remote"" if you wish images to be loaded from the server. This is usefull if you do require some images to be dynamic. Please note that with the exception of the location="local" section, the rest of the tag must stay within HTML standards, including any ALT tags or other items. The use of Javascript is not allowed.
There are also functions to indicate where links should take a person. For example, if a forum is designed to open up private messages in a seperate window, then the function "activate" is used to tell where the link should be activated.
<function="activate">
<destid=34>
<destname=longbox>
<your code/link here>
</function>
This function tells eVille that a link is to be opened in a unique window. The use of both ID and name parameters for windows is to ensure less errors and a more relibale system, especially for debugging, where errors are more readily picked up since the program has to double check 2 tags.
Window metrics is a new system used to specify higher resolutions after version one is complete. This code will tell eVille that a certian page is supported in larger resolutions other than 640x580. For example, in the next version, there will be predefined metrics for 800 x 600 and 1024 x 768. These metrics can iether use a relaxed page or a specific page. Relaxed pages are one that use % markings instead of direct metrics in pixels. (Note that all base code for eVille MUST be using strict pixel code, otherwise it will break the client.) Any pages that can be seen in high resolutions can contain a tag with a link to a higher-res version of the page. If a client supports a higher resolution, it will fetch that version if the client is using the resolution in question.
<function="metrics">
<supportedres=640480, 800600, 1024768>
<reslink=800600 location=index_86.php>
</function>
This code will tell eVille that this page supprts display in a higher resolution and that there is a custom page that will define 800 x 600 metrics available. The reason older pages can be supported in higher resolution by a simple tag is that it eases strain to develop new versions, but allows the old code to be displayed in a new metric. There are a few options when doing this:
<function=legacy>
<vertical="left">
<horizontal="top">
</function>
This will simply tell eVille the document which is a legacy document will be displayed inside the larger window with a h and v position of top and left. (Although this option is supported, it doesn't look pretty and is sactioned only for a basic time period, say untill a new version for that metric is availbale.)
There is also a command to pause a function and hide it in the background while you are doing something by means of a task system. This prevents window mess while allowing people to work on multiple areas at once. The development of this is still basic and sketchy, but so far the first edition will simply place a bar that holds extra window metrics that by eVille standards willnot be allowed to show at the same time.
For developer purposes, the tasks are arranged by window names and ID.
You can also call up and pause tasks without use of the taskbar if say, suddenly you wanted to allow someone to change something before entering an area. This being the case, you woul use:
<function=pause>
<call=eVille Setup>
<function=activate>
<destid=39>
<destname=here>
<callback=http://yourcallcenter.php>
</function>
</function>
This will pause the window, make it invisible and show the requested window so the user can change a setting. This function is used only for calling official eVille areas, not for a psuedo task system, since most windows will not have an option to end them, unlike the setup screen which after you change settings depending how you entered, it will show an option of what to do.
The town map is where the official directory listing is of everyone. Various buildings will be erected that will have homes for users who use a specific model of Macintosh or portable. Other buildings are manufactoring plants which create these machines and furnish support information and specifications.
When users create a home inside eVille, they are given a specific address. For example:
James Marshton
Unit 34, Quadra St.
eVille
The client for moderators and administrators is a special one as it not only has linsk to general features everyone else has, but it also has links to maintenance, user cointroll, and other admin features.
Glossary for developers: (somewhat outdated but hey, it's here)
Window - a seperate mac os window in which data is displayed. in eville's case, this window has a title bar, but no buttons to close or modify size. it does however, have the option to be collapsed. each window usually loads a specific php function. for example, the community map will not do requests for forums etc. (Even though a window can be collapsed, when moving it around on the screen, it willbe treated a sif it's open, since this will reduce clutter for all active windows, as in active in memory)
subwindow - a small window attached to a main window by means of a small seperator, technically stillin the same window with a seperator, but drawn from a unique php page.
pane - the drawing size of the desktop combined with eVille's current resolution setting, which results in a unique "pane" size to be drawn on.
activate - a command that tells eville where a link is to activate inside. if a developer wants a link to open a new window for a specific function like a special settings page, this command is used to tell eVille that's where this data goes.
placement - a command thaT seperates php code on a page to different windows. this allows developers to write php pages that can be used for an entire screen without writing a seperate php page for each window. use this command to seperate code you want to place inisde a certian window.
image location - this variable will tell the eVille client if it should load an image from it's cache or if it should grab the latest from the server.
window metrics - this function tels eVille if a page can be shown on different resolutions, so a user can switch to the various resolutions eville offers for the client, and pages that are compatible with changing sizes will use the new res size. pages that are not will use the default merics.
all in all, eville usesa special html set to be able to communicate between server and client in an effeicent way. The directory that holds eville files is not viewable by normal web browsers, it would seem odd layouts and the browser would/could/might choke on some of the extra code. not to mention noneof the links would work properly. and images wouldn't be there.
what we need help with:
we need to get a hold of a forum software that is simple. although having personal messages on a forum is ok, we would need to be able to disable the option where a popup window would show or convert that function into an eville command to show a window. the code needs to be taken apart and cut down to it's basic elements. the skinning features of the board MUST be disabled and removed. we need to have direct control of the forum in a pure state, not one that loads files from dozens of areas. If that's not possible, we need to take one and recompile all the php code and templates into a single php page so that we are dealing with a single php document. if we have to deal with multiples sources forone document it will be hell.
the simpler the board software is, the easier it will be to customize it. we can always add skins support by simply new folders with alternate image settings etc. (update: i have seen boards that use txt flat files and for eville this might pose a unique option so we can have some functions use this so it's compatible with more machines even if they don't have mega cpu power)
a debug/developer's programneeds to be made in sync with the client/admin client, since the debug oneneeds to be able to display messages regarding errors in realtime. for example, say you made a mistake in your code, and you need to find out what eville is doing behind the scene, this debug module prints out step by step what eville does from each image to where it sends data etc. this should help developers locate any flaws etc.
there will be an update feature, upon first launch, the program will look for wildcard file on the server and check the date on it, and if it's newer than what the client has, it downloads it, unpacks it, does a quick update then loads. no user intervention required. (that's just for images, not for the application)