-
Notifications
You must be signed in to change notification settings - Fork 0
/
params.json
1 lines (1 loc) · 7.46 KB
/
params.json
1
{"name":"WebJCL","tagline":"Bringing IBM mainframe to the cloud.","body":"![WebJCL Screenshot](http://niumainframe.github.io/webjcl/images/webjcl-screenshot.png) \r\n\r\n\r\nWebJCL is a web-based development environment for programming with IBM mainframe. It allows students to code and execute IBM assembler completely through the web-browser. This was developed during an independent study between students at Northern Illinois University. The server-side source code is currently written in node.js.\r\n\r\nFeatures\r\n\r\n* HTML5 interface.\r\n * Ace code editor\r\n * Multiple tabs\r\n * Resizable input/output panes.\r\n\r\n* RESTful job submission interface.\r\n * Submit jobs to the real mainframe via HTTP protocol.\r\n * Support for other job processing modules.\r\n\r\nLive instances\r\n----------------------\r\nBelow are some sites where WebJCL may be available. \r\n\r\n* [Amazon Micro Instance](http://ec2-23-23-1-225.compute-1.amazonaws.com/)\r\n\r\nPrerequisites\r\n------------------\r\n\r\nRequired environments and their minimum tested versions: \r\n\r\nServer:\r\n\r\n\r\n* [Node.js](http://nodejs.org/) v0.8.19\r\n* [mongoDB](http://www.mongodb.org/) v2.2.3\r\n* Python 2.6\r\n\r\nClient:\r\n\r\n* A modern web browser\r\n * Chromium 23\r\n * Firefox 18\r\n\r\nInstall\r\n---------\r\nTo obtain the source code, either download the archive file of your choice from this GitHub repository or run the following command in the directory you wish to install WebJCL.\r\n\r\n git clone https://github.com/niumainframe/webjcl.git\r\n\r\nAfter obtaining the source code, you must obtain the Node.js library requirements.\r\n\r\n cd webjcl\r\n npm install\r\n\r\n### Configuration\r\n\r\nThere is some mandatory configuration before WebJCL can execute.\r\n\r\n* config.js\r\n * Listening port (default 8000)\r\n * Whether to enforce SSL (default: true)\r\n * mongoDB credentials.\r\n\r\n* srcprocs/JESProc/config.js\r\n * The hostname of the mainframe WebJCL connects to.\r\n\r\n### Invoking\r\n\r\nGiven that MongoDB is running, one can invoke WebJCL while in the source code directory:\r\n\r\n node main.js\r\n\r\nHowever in public-facing instances, it is highly recommended to use a persistence script which automatically restarts the application if it crashes. The node.js application '[forever](https://npmjs.org/package/forever)' is recommended for this purpose.\r\n\r\n\r\n## Background\r\nNIU CS teaches the concepts of assembly language through the [IBM Basic Assembly Language](https://en.wikipedia.org/wiki/IBM_Basic_assembly_language) and [ASSIST](https://en.wikipedia.org/wiki/ASSIST_(computing)). While this is effective in exposing students how to program software at a low level; it is problematic because the development environment is limited compared to today's standards.\r\n\r\n### 3270 Terminal\r\nPrior to WebJCL, students typically obtained a 3270 terminal emulator to connect to a shared IBM Mainframe. From this terminal students coded and executed assignment programs.\r\n\r\n![Picture of a 3270 terminal](http://niumainframe.github.io/webjcl/images/3270-terminal.png)\r\n\r\nProgramming in a 3270 terminal has the following problems:\r\n\r\n* The terminal has fixed rows/columns and the smallest scrolling unit is typically one page. This causes long assignments and algorithms to span many terminal pages.\r\n* Non-intuitive keyboard commands for editing, especially for undergraduate students unfamiliar with vi/emacs-like editors.\r\n* Execution and retrieval of output text requires navigating through several menus from the editor.\r\n\r\n### Other development options\r\n* Using [FTP-based](http://www.ibm.com/developerworks/systems/library/es-batch-zos.html) solutions\r\n * mar_ftp.exe [readme](http://www.cs.niu.edu/compresource/marist_readme.txt)\r\n * [JESftp.py](https://github.com/scvnc/JESftp)\r\n * [MVS-Tool](https://github.com/john-charles/MVSTool)\r\n * [MVS::JESFTP](http://search.cpan.org/~mikeo/MVS-JESFTP-1.1/JESFTP.pm)\r\n\r\n* Using Simulators/Emulators\r\n * [mainframe-env-simulator](http://code.google.com/p/mainframe-env-simulator/)\r\n * [z390](http://z390.org/)\r\n * [Hercules](http://www.hercules-390.eu/)\r\n\r\n\r\nFuture Development Possibilities\r\n---------------------------------------------\r\nCurrently, this system uses a [Python script](https://github.com/scvnc/JESftp) to interface with the actual mainframe to send, submit, retrieve, and clear the submission. It would be nice to design and write a pure node.js module that utilizes the entire Mainframe/FTP interface.\r\n\r\nAdding additional job processing modules such as one that submits the job to a mainframe simulator or emulator instead of a real mainframe. This could be extended further to other language/machine environments.\r\n\r\nConverting the database features to work with MySQL instead of mongoDB.\r\n\r\nFile management features.\r\n\r\nReal-time collaboration/execution on code via something like the [share.js](http://sharejs.org/) library.\r\n\r\nIBM assembler specific indentation and highlighting features for the editor.\r\n\r\nQ&A\r\n------\r\n\r\nWhere to I go to use this?\r\n\r\n> WebJCL does not have a permanent host. It runs great on the free EC2 node from Amazon, if you'd like to set one up. Efforts will be made to have a host available each semester for student use.\r\n\r\nDo I need to set up my mainframe account with a 3270 terminal?\r\n\r\n> For students taking CSCI 360: as far as we are concerned you could never touch a 3270 terminal, use WebJCL, and successfully complete the class. It is still suggested to complete the lab tutorial on configuring your account on the mainframe. The same should go for CSCI 640 as well.\r\n\r\nIs my source code saved anywhere?\r\n\r\n> Yes. When you submit code, both the code and the resulting output are saved in a database. *Your code/output is only accessible with your login credentials.*\r\n\r\nDoes it work for students in CSCI 465 (or other mainframe courses)?\r\n\r\n>Since this simply submits a JCL file to be processed, probably yes. However, since there are instances where you must reference files on the remote mainframe: you may have to manually FTP some of your files. Let us know your experiences.\r\n\r\nDoes this really work?\r\n\r\n> Yes. WebJCL was exposed to students taking CSCI 360 during Spring 2013. Between 16 active users, 6000 jobs were submitted via WebJCL and all assignments can be successfully completed.\r\n\r\nHow secure is this?\r\n\r\n* WebJCL can run as an underprivileged user.\r\n* WebJCL works with existing web-servers by configuring a [reverse proxy](https://httpd.apache.org/docs/2.2/mod/mod_proxy.html).\r\n* WebJCL can enforce SSL connections for secure transmission of mainframe credentials.\r\n * However, the FTP interface to the mainframe probably has it's credentials sent in cleartext.\r\n* WebJCL practices password hashing.\r\n* Temporary folders are created with permissions of 700.\r\n\r\nCan I add a feature to WebJCL?\r\n\r\n> Contact us (see support section) and make a request on the GitHub issue tracker. We want to assist other students to continue this project. Most likely you could even get independent study credit at NIU. Fork away!\r\n\r\nSupport\r\n-----------\r\n\r\nFor support and collaboration inquiries, please contact Vincent: vinciple [at] gmail [dot] com.\r\n\r\nPlease utilize the issue tracker on GitHub for bugs, feature requests, and other applicable articles.","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}