diff --git a/README.md b/README.md index 9733ef34..edc468df 100644 --- a/README.md +++ b/README.md @@ -38,11 +38,12 @@ For download, check Tasks and issues are managed with github issue system * See https://github.com/EiffelWebFramework/EWF/issues * And visual dashboard: https://waffle.io/eiffelwebframework/ewf +* Forum/group post: https://groups.google.com/forum/#!forum/eiffel-web-framework ## Requirements -* Compiling from EiffelStudio 14.05 and more recent version of the compiler. -* Developped using EiffelStudio 15.05 (on Windows, Linux) -* Tested using EiffelStudio 15.05 with "jenkins" CI server (not anymore compatible with 6.8 due to use of `TABLE_ITERABLE') +* Compiling from EiffelStudio 13.11 to 15.05 and more recent version of the compiler. +* Currently being developped using EiffelStudio 15.01 (on Windows, Linux) +* Tested using EiffelStudio 15.01 with "jenkins" CI server (not anymore compatible with 6.8 due to use of `TABLE_ITERABLE') * The code have to allow __void-safe__ compilation and non void-safe system (see [more about void-safety](http://docs.eiffel.com/book/method/void-safe-programming-eiffel) ) ## How to get the source code? @@ -100,6 +101,7 @@ review the [guidelines for contributing](CONTRIBUTING.md). Keep track of development and community news. * Follow [@EiffelWeb](https://twitter.com/EiffelWeb) on Twitter +* [Forum](https://groups.google.com/forum/#!forum/eiffel-web-framework) on Google groups. * Follow our [page](https://plus.google.com/u/0/110650349519032194479) and [community](https://plus.google.com/communities/110457383244374256721) on Google+ * Have a question that's not a feature request or bug report? [Ask on the mailing list](http://groups.google.com/group/eiffel-web-framework) diff --git a/doc/wiki/Deployment.md b/doc/wiki/Deployment.md new file mode 100644 index 00000000..28413c8b --- /dev/null +++ b/doc/wiki/Deployment.md @@ -0,0 +1,133 @@ +EWF Deployment +============== + +##Apache on Windows +###Apache Install + + - Check the correct version (Win 32 or Win64) + - Apache Version: Apache 2.4.4 + - Windows: http://www.apachelounge.com/download/ + +###Deploying EWF CGI + +####CGI overview +> A new process is started for each HTTP request. So if there are N request to the same CGI +> program, the code of the CGI program is loaded into memory N times. +> When a CGI program finished handling a request, the program terminates + +1. Build EWF application. + + ``` + ec -config app.ecf -target app_cgi -finalize -c_compile -project_path . + Note: change app.ecf and target app_cgi based on your own configuration. + ``` +2. Copy the generated exe file and the www content. + + ``` + Copy the app.exe and the folder www into a folder served by apache2, for example under + /htdocs + = path to your apache installation + Edit httpd.conf under c://conf + DocumentRoot "c://htdocs" + /htdocs"> + AllowOverride All -- + Require all granted -- this is required in Apache 2.4.4 + + ``` + +3. Check that you have the following modules enabled. + + ``` + LoadModule cgi_module modules/mod_cgi.so + LoadModule rewrite_module modules/mod_rewrite.so + ``` + +*Tip:* +To check the syntax of your httpd.conf file. From command line run the following. + + ``` + $>httpd - t + ``` +####.htaccess CGI +http://perishablepress.com/stupid-htaccess-trics/ + +``` + Options +ExecCGI +Includes +FollowSymLinks -Indexes + AddHandler cgi-script exe + + RewriteEngine on + RewriteRule ^$ $service [L] + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} !$service + RewriteRule ^(.*)$ $service/$1 + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] + FastCGI allows a single, long-running process to handle more than one user request while keeping close to +> the CGI programming model, retaining the simplicity while eliminating the overhead of creating a new +> process for each request. Unlike converting an application to a web server plug-in, FastCGI applications +> remain independent of the web server. + +1. Build EWF application + + ``` + ec -config app.ecf -target app_fcgi -finalize -c_compile -project_path . + Note: change app.ecf and target app_fcgi based on your own configuration. + ``` +2. Copy the generated exe file and the www content + + ``` + Copy the app.exe and the folder "www" into a folder served by apache2, for example under + /htdocs. + = path to your apache installation + Edit httpd.conf under c://conf + + DocumentRoot "c://htdocs" + /htdocs"> + AllowOverride All -- + Require all granted -- this is required in Apache 2.4.4 + + ``` +Check that you have the following modules enabled. + + ``` + LoadModule rewrite_module modules/mod_rewrite.so + LoadModule fcgid_module modules/mod_fcgid.so + ``` + +By default Apache does not comes with fcgid module, so you will need to +download it, and put the module under Apache2/modules + +####.htaccess FCGI +http://perishablepress.com/stupid-htaccess-tricks/ + +``` + Options +ExecCGI +Includes +FollowSymLinks -Indexes + + AddHandler fcgid-script .ews + FcgidWrapper $FULL_PATH/$service .ews + + + RewriteEngine on + RewriteBase / + RewriteRule ^$ service.ews [L] + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} !=/favicon.ico + RewriteCond %{REQUEST_URI} !service.ews + RewriteRule ^(.*)$ service.ews/$1 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] + +``` +Replace $service with the name of your executable $service, for example app_service.exe +You will need to create an service.ews file, this file will be located at the same place where you +copy your app service executable. diff --git a/doc/wiki/Doc_Getting_Started.mediawiki b/doc/wiki/Doc_Getting_Started.mediawiki index 550862d8..865d432a 100644 --- a/doc/wiki/Doc_Getting_Started.mediawiki +++ b/doc/wiki/Doc_Getting_Started.mediawiki @@ -1,4 +1,4 @@ -Menu :: [[Doc_Getting_Started|Getting Started]] :: [[Doc_Community|Community]] +Menu :: [[Doc_Getting_Started.mediawiki|Getting Started]] :: [[Community-collaboration.md|Community]] = Getting Started = This page will help you to get started with EWF. We will first see how to install EWF and then how to compile and run the venerable Hello World example. @@ -54,4 +54,4 @@ To do this, we will redefine the feature initialize as follows: After one more compile, you can now launch the application and point your browser to [http://localhost:9090]. -You should now see a simple page with Hello World. \ No newline at end of file +You should now see a simple page with Hello World. diff --git a/doc/wiki/Doc_Index.mediawiki b/doc/wiki/Doc_Index.mediawiki index 90016448..9f195ef9 100644 --- a/doc/wiki/Doc_Index.mediawiki +++ b/doc/wiki/Doc_Index.mediawiki @@ -1,7 +1,7 @@ -Menu :: [[Doc_Getting_Started|Getting Started]] :: [[Doc_Community|Community]] +Menu :: [[Doc_Getting_Started.mediawiki|Getting Started]] :: [[community.md|Community]] = Eiffel Web Framework = Framework to build web applications in Eiffel [ [http://github.com/EiffelWebFramework/EWF/zipball/ Download Current] ] -[ [http://github.com/EiffelWebFramework/EWF/zipball/release-0.3 Download v0.3] ] \ No newline at end of file +[ [http://github.com/EiffelWebFramework/EWF/zipball/release-0.3 Download v0.3] ] diff --git a/doc/wiki/Documentation-_Router.md b/doc/wiki/Documentation-_Router.md deleted file mode 100644 index 3207e4a6..00000000 --- a/doc/wiki/Documentation-_Router.md +++ /dev/null @@ -1 +0,0 @@ -See WSF_ROUTER \ No newline at end of file diff --git a/doc/wiki/Documentation__Connector.md b/doc/wiki/Documentation__Connector.md deleted file mode 100644 index b76dce29..00000000 --- a/doc/wiki/Documentation__Connector.md +++ /dev/null @@ -1 +0,0 @@ -See WSF_CONNECTOR \ No newline at end of file diff --git a/doc/wiki/Documentation__Router.md b/doc/wiki/Documentation__Router.md deleted file mode 100644 index 3207e4a6..00000000 --- a/doc/wiki/Documentation__Router.md +++ /dev/null @@ -1 +0,0 @@ -See WSF_ROUTER \ No newline at end of file diff --git a/doc/wiki/EWSGI-Open-Questions.md b/doc/wiki/EWSGI/Open-Questions.md similarity index 100% rename from doc/wiki/EWSGI-Open-Questions.md rename to doc/wiki/EWSGI/Open-Questions.md diff --git a/doc/wiki/EWSGI.md b/doc/wiki/EWSGI/README.md similarity index 95% rename from doc/wiki/EWSGI.md rename to doc/wiki/EWSGI/README.md index 42a4fbbc..7b34869f 100644 --- a/doc/wiki/EWSGI.md +++ b/doc/wiki/EWSGI/README.md @@ -1,5 +1,5 @@ -- See proposed specifications: [EWSGI specification](./EWSGI-specification) -- See [Open questions](./EWSGI-Open-Questions) +- See proposed specifications: [EWSGI specification](EWSGI-specification.md) +- See [Open questions](EWSGI-Open-Questions.md) - And below the various proposals and associated decision ---- diff --git a/doc/wiki/EWSGI-specification---difference-in-main-proposals.md b/doc/wiki/EWSGI/specification---difference-in-main-proposals.md similarity index 100% rename from doc/wiki/EWSGI-specification---difference-in-main-proposals.md rename to doc/wiki/EWSGI/specification---difference-in-main-proposals.md diff --git a/doc/wiki/EWSGI-specification.md b/doc/wiki/EWSGI/specification.md similarity index 100% rename from doc/wiki/EWSGI-specification.md rename to doc/wiki/EWSGI/specification.md diff --git a/doc/wiki/Home.md b/doc/wiki/README.md similarity index 61% rename from doc/wiki/Home.md rename to doc/wiki/README.md index 636a66b2..eb1bffbd 100644 --- a/doc/wiki/Home.md +++ b/doc/wiki/README.md @@ -6,21 +6,21 @@ The official documentation/wiki is located at [https://github.com/EiffelWebFrame ## Organization ## - Mailing list: please visit and subscribe to the mailing list page [http://groups.google.com/group/eiffel-web-framework](http://groups.google.com/group/eiffel-web-framework) ![logo](http://groups.google.com/intl/en/images/logos/groups_logo_sm.gif) - Most of the topics are discussed on the mailing list (google group). -- For time to time we have [web meetings](./wiki/Meetings), and less frequently [physical meetings](./wiki/Meetings) that occurs usually during other Eiffel related events. +- For time to time we have [web meetings](project/Meetings.md), and less frequently [physical meetings](project/Meetings.md) that occurs usually during other Eiffel related events. ## Documentation ## -- [Documentation](./Documentation) +- [Documentation](documentation/README.md) ## Contributions ## -- You want to contribute or follow the progress/discussion, see the [collaboration page](./wiki/Community-collaboration) -- Potential tasks/projects on EWF: [Projects page](./wiki/Projects) +- You want to contribute or follow the progress/discussion, see the [collaboration page](community.md) +- Potential tasks/projects on EWF: [Projects page](project/Projects.md) ## See also ## - - [list of tasks, and a potential roadmap](./wiki/Tasks-Roadmap) - - [General source structure of this project](./wiki/Source-structure) - - EWSGI: [Eiffel Web Server Gateway Interface](./wiki/EWSGI) - - [Overview of the server side architecture](./wiki/Spec-Server-Architecture) - - This project is also a collection of [Libraries](./wiki/Libraries) related to the Web + - [list of tasks, and a potential roadmap](project/Tasks-Roadmap.md) + - [General source structure of this project](Source-structure.md) + - EWSGI: [Eiffel Web Server Gateway Interface](EWSGI/README.md) + - [Overview of the server side architecture](Spec-Server-Architecture.md) + - This project is also a collection of [Libraries](Libraries.md) related to the Web ## Note ## - This wiki needs to be updated, in the meantime, please have a look at the presentation: [https://docs.google.com/presentation/pub?id=1GPFv6aHhTjFSLMnlAt-J4WeIHSGfHdB42dQxmOVOH8s&start=false&loop=false&delayms=3000](https://docs.google.com/presentation/pub?id=1GPFv6aHhTjFSLMnlAt-J4WeIHSGfHdB42dQxmOVOH8s&start=false&loop=false&delayms=3000) diff --git a/doc/wiki/Community-collaboration.md b/doc/wiki/community.md similarity index 100% rename from doc/wiki/Community-collaboration.md rename to doc/wiki/community.md diff --git a/doc/wiki/Connectors.md b/doc/wiki/documentation/Connectors.md similarity index 99% rename from doc/wiki/Connectors.md rename to doc/wiki/documentation/Connectors.md index c3d8f646..6f64aca5 100644 --- a/doc/wiki/Connectors.md +++ b/doc/wiki/documentation/Connectors.md @@ -46,3 +46,6 @@ It's fairly easy to write your own connector. Just inherit from these classes: * WGI_INPUT_STREAM * WGI_OUTPUT_STREAM * WSF_SERVICE_LAUNCHER + + +See WSF_CONNECTOR diff --git a/doc/wiki/Filter.md b/doc/wiki/documentation/Filter.md similarity index 100% rename from doc/wiki/Filter.md rename to doc/wiki/documentation/Filter.md diff --git a/doc/wiki/HTTP-client-library.md b/doc/wiki/documentation/HTTP-client-library.md similarity index 100% rename from doc/wiki/HTTP-client-library.md rename to doc/wiki/documentation/HTTP-client-library.md diff --git a/doc/wiki/Library-conneg.md b/doc/wiki/documentation/Library-conneg.md similarity index 100% rename from doc/wiki/Library-conneg.md rename to doc/wiki/documentation/Library-conneg.md diff --git a/doc/wiki/Documentation.md b/doc/wiki/documentation/README.md similarity index 93% rename from doc/wiki/Documentation.md rename to doc/wiki/documentation/README.md index 89c4264c..7270daf5 100644 --- a/doc/wiki/Documentation.md +++ b/doc/wiki/documentation/README.md @@ -27,7 +27,7 @@ This is the low level of the framework, at this point, `req` provides access to The response `res` is the interface to send data back to the client. For convenience, the framework provides richer service interface that handles the most common needs (filter, router, ...). -> [Learn more about service](Documentation__Service) +> [Learn more about service](Service.md) @@ -50,7 +50,7 @@ Any incoming http request is represented by an new object of type **WSF_REQUEST* The **WSF_RESPONSE** represents the communication toward the client, a service need to provide correct headers, and content. For instance the `Content-Type`, and `Content-Length`. It also allows to send data with chunked encoding. -> [Learn more about request](Documentation__Request) and [about response](Documentation__Response) +> [Learn more about request](Request.md) and [about response](Response.md) @@ -66,7 +66,7 @@ Currently 3 main connectors are available: At compilation time, you can use a default connector (by using the associated default lib), but you can also use a mixed of them and choose which one to execute at runtime. It is fairly easy to add new connector, it just has to follow the EWSGI interface -> [Learn more about connector](Documentation__Connector) +> [Learn more about connector](Connector.md) @@ -113,7 +113,7 @@ How we do that in EWF? : Router with (or without context). Related code: wsf_router, wsf_router_context Examples -> [Learn more about router](Documentation__Router) +> [Learn more about router](Router.md) # EWF components ## URI Handler: @@ -180,25 +180,26 @@ examples External libraries are included, such as Cypress OAuth (Security), HTML parsing library, Template Engine Smarty. ## server -* __ewsgi__: Eiffel Web Server Gateway Interface read more +* __ewsgi__: Eiffel Web Server Gateway Interface [read more](../EWSGI/index.md). * connectors: various web server connectors for EWSGI * __libfcgi__: Wrapper for libfcgi SDK -* __wsf__: Web Server Framework [read more] - * __router__: URL dispatching/routing based on uri, uri_template, or custom read more +* __wsf__: Web Server Framework + * __router__: URL dispatching/routing based on uri, uri_template, or custom [read more](Router.md). + * __filter__: Filter chain [read more](Filter.md). * __wsf_html__: (html and css) Content generator from the server side. * CMS example: ## protocol -* __http__: HTTP related classes, constants for status code, content types, ... read more -* __uri_template__: URI Template library (parsing and expander) read more -* __content_negotiation__: CONNEG library (Content-type Negociation) read more +* __http__: HTTP related classes, constants for status code, content types, ... +* __uri_template__: URI Template library (parsing and expander) +* __content_negotiation__: [CONNEG](Library-conneg.md) library (Content-type Negociation) ## Client -* __http_client__: simple HTTP client based on cURL readmore +* __http_client__: simple [HTTP client](HTTP-client.library.md) based on cURL * __Firebase API__: ## Text -* __encoder__: Various simple encoders: base64, url-encoder, xml entities, html entities read more +* __encoder__: Various simple encoders: base64, url-encoder, xml entities, html entities ## Utils * __error__: very simple/basic library to handle error diff --git a/doc/wiki/Request-and-response.md b/doc/wiki/documentation/Request-and-response.md similarity index 100% rename from doc/wiki/Request-and-response.md rename to doc/wiki/documentation/Request-and-response.md diff --git a/doc/wiki/Documentation__Request.md b/doc/wiki/documentation/Request.md similarity index 100% rename from doc/wiki/Documentation__Request.md rename to doc/wiki/documentation/Request.md diff --git a/doc/wiki/Documentation__Response.md b/doc/wiki/documentation/Response.md similarity index 100% rename from doc/wiki/Documentation__Response.md rename to doc/wiki/documentation/Response.md diff --git a/doc/wiki/Router.md b/doc/wiki/documentation/Router.md similarity index 65% rename from doc/wiki/Router.md rename to doc/wiki/documentation/Router.md index 0b208861..75571e7d 100644 --- a/doc/wiki/Router.md +++ b/doc/wiki/documentation/Router.md @@ -1,3 +1,6 @@ The primary goal of the router (class _WSF_ROUTER_) is to dispatch requests according to the request URI. -**TODO**: describe the router interface \ No newline at end of file +See WSF_ROUTER + +**TODO**: describe the router interface + diff --git a/doc/wiki/Documentation__Service.md b/doc/wiki/documentation/Service.md similarity index 100% rename from doc/wiki/Documentation__Service.md rename to doc/wiki/documentation/Service.md diff --git a/doc/wiki/Using-the-policy-driven-framework.md b/doc/wiki/policy-driven-framework/Using-the-policy-driven-framework.md similarity index 98% rename from doc/wiki/Using-the-policy-driven-framework.md rename to doc/wiki/policy-driven-framework/Using-the-policy-driven-framework.md index 12d085e4..b9fa279c 100644 --- a/doc/wiki/Using-the-policy-driven-framework.md +++ b/doc/wiki/policy-driven-framework/Using-the-policy-driven-framework.md @@ -23,4 +23,4 @@ is_system_options_forbidden. WSF_ROUTED_SKELETON_SERVICE also inherits from WSF_PROXY_USE_POLICY. This determines if the server will require clients to use a proxy server. By default, it will do so for HTTP/1.0 clients. This is a sensible default, as the framework assumes an HTTP/1.1 client throughout. If you are sure that you will only ever have HTTP/1.1 clients, then you can instead inherit from WSF_NO_PROXY_POLICY, as RESTBUCKS_SERVER does. If not, then you need to implement proxy_server. -Next you have to [write your handler(s)](./Writing-the-handlers) \ No newline at end of file +Next you have to [write your handler(s)](Writing-the-handlers.md) diff --git a/doc/wiki/WSF_OPTIONS_POLICY.md b/doc/wiki/policy-driven-framework/WSF_OPTIONS_POLICY.md similarity index 100% rename from doc/wiki/WSF_OPTIONS_POLICY.md rename to doc/wiki/policy-driven-framework/WSF_OPTIONS_POLICY.md diff --git a/doc/wiki/Writing-the-handlers.md b/doc/wiki/policy-driven-framework/Writing-the-handlers.md similarity index 99% rename from doc/wiki/Writing-the-handlers.md rename to doc/wiki/policy-driven-framework/Writing-the-handlers.md index 87e68a2c..bf404c2a 100644 --- a/doc/wiki/Writing-the-handlers.md +++ b/doc/wiki/policy-driven-framework/Writing-the-handlers.md @@ -218,6 +218,6 @@ This routine is called for a normal (updating) PUT request. You have to update t ## Implementing the policies -* [WSF_OPTIONS_POLICY](./WSF_OPTIONS_POLICY) -* [WSF_PREVIOUS_POLICY](./Wsf-previous-policy) -* [WSF_CACHING_POLICY](./Wsf-caching-policy) \ No newline at end of file +* [WSF_OPTIONS_POLICY](WSF_OPTIONS_POLICY.md) +* [WSF_PREVIOUS_POLICY](Wsf-previous-policy.md) +* [WSF_CACHING_POLICY](Wsf-caching-policy.md) diff --git a/doc/wiki/Wsf-caching-policy.md b/doc/wiki/policy-driven-framework/Wsf-caching-policy.md similarity index 100% rename from doc/wiki/Wsf-caching-policy.md rename to doc/wiki/policy-driven-framework/Wsf-caching-policy.md diff --git a/doc/wiki/Wsf-previous-policy.md b/doc/wiki/policy-driven-framework/Wsf-previous-policy.md similarity index 100% rename from doc/wiki/Wsf-previous-policy.md rename to doc/wiki/policy-driven-framework/Wsf-previous-policy.md diff --git a/doc/wiki/Meetings.md b/doc/wiki/project/Meetings.md similarity index 78% rename from doc/wiki/Meetings.md rename to doc/wiki/project/Meetings.md index 05faf598..e93817e0 100644 --- a/doc/wiki/Meetings.md +++ b/doc/wiki/project/Meetings.md @@ -1,4 +1,4 @@ # Previous and future meetings -* [Web-meeting: 2012-09-18](./Web-meeting-2012-09-18) +* [Web-meeting: 2012-09-18](meetings/Web-meeting-2012-09-18.md) * For previous meetings, check the ["meeting" topics](https://groups.google.com/forum/?fromgroups=#!tags/eiffel-web-framework/meeting) on the [forum](http://groups.google.com/group/eiffel-web-framework) diff --git a/doc/wiki/Projects-new-suggestions.md b/doc/wiki/project/Projects-new-suggestions.md similarity index 85% rename from doc/wiki/Projects-new-suggestions.md rename to doc/wiki/project/Projects-new-suggestions.md index 8ebc7ea9..5b1c1b4d 100644 --- a/doc/wiki/Projects-new-suggestions.md +++ b/doc/wiki/project/Projects-new-suggestions.md @@ -1,5 +1,5 @@ Use this to suggest new projects, or request features. -The content of this page will be moved to the main [Projects](./Projects) page for time to time. +The content of this page will be moved to the main [Projects](Projects.md) page for time to time. For any entry, please use this template ---- diff --git a/doc/wiki/Projects.md b/doc/wiki/project/Projects.md similarity index 99% rename from doc/wiki/Projects.md rename to doc/wiki/project/Projects.md index 92bce9d8..58e49f21 100644 --- a/doc/wiki/Projects.md +++ b/doc/wiki/project/Projects.md @@ -236,4 +236,4 @@ If you are a student, don't hesitate to pick one, or even suggest a new project, ---- # Feel free to add new idea below this line ---- -Use the following page [Projects new suggestions](./Projects new suggestions) to suggest new project, or request a feature. \ No newline at end of file +Use the following page [Projects new suggestions](Projects-new-suggestions.md) to suggest new project, or request a feature. diff --git a/doc/wiki/Task-json.md b/doc/wiki/project/Task-json.md similarity index 100% rename from doc/wiki/Task-json.md rename to doc/wiki/project/Task-json.md diff --git a/doc/wiki/Tasks-Roadmap.md b/doc/wiki/project/Tasks-Roadmap.md similarity index 90% rename from doc/wiki/Tasks-Roadmap.md rename to doc/wiki/project/Tasks-Roadmap.md index 1a1a1a75..206f2bf5 100644 --- a/doc/wiki/Tasks-Roadmap.md +++ b/doc/wiki/project/Tasks-Roadmap.md @@ -1,4 +1,4 @@ -Check new roadmap wiki page: [roadmap](./roadmap) +Check new roadmap wiki page: [roadmap](roadmap.md) ## Future * Focus on REST API - Hypermedia API @@ -32,5 +32,5 @@ Check new roadmap wiki page: [roadmap](./roadmap) * Installation scripts ## Contributors ## - - See [the collaboration page](./Community-collaboration) + - See [the collaboration page](../community.md) diff --git a/doc/wiki/Useful-links.md b/doc/wiki/project/Useful-links.md similarity index 100% rename from doc/wiki/Useful-links.md rename to doc/wiki/project/Useful-links.md diff --git a/doc/wiki/Web-meeting-2012-09-18.md b/doc/wiki/project/meetings/Web-meeting-2012-09-18.md similarity index 100% rename from doc/wiki/Web-meeting-2012-09-18.md rename to doc/wiki/project/meetings/Web-meeting-2012-09-18.md diff --git a/doc/wiki/project/roadmap.md b/doc/wiki/project/roadmap.md new file mode 100644 index 00000000..9516a246 --- /dev/null +++ b/doc/wiki/project/roadmap.md @@ -0,0 +1,4 @@ +# Upcoming versions + +# Current state: oct-2013 +- check previous wiki page: [Tasks roadmap](Tasks-roadmap.md) diff --git a/doc/wiki/roadmap.md b/doc/wiki/roadmap.md deleted file mode 100644 index a0b733b5..00000000 --- a/doc/wiki/roadmap.md +++ /dev/null @@ -1,4 +0,0 @@ -# Upcoming versions - -# Current state: oct-2013 -- check previous wiki page: [Tasks roadmap](./Tasks roadmap) \ No newline at end of file