~alcinnz/rhapsode

4296814bb13d03f6053d61986837c3d0c27b75fe — Adrian Cochrane 4 years ago 0f61fa2
Update README, seperate out CONTRIBUTING.md
2 files changed, 44 insertions(+), 16 deletions(-)

A CONTRIBUTING.md
M README.md
A CONTRIBUTING.md => CONTRIBUTING.md +20 -0
@@ 0,0 1,20 @@
# Contributing
You can contributed code or register "issues" to Haskell Stylist by contacting
me (Adrian Cochrane) via [mastodon](https://floss.social) or [email](mailto:opensource@openwork.nz).
Or you can sign up for an account on the NZ OSS GitLab.

Any issues you report will be described in a markdown file within the ISSUES folder.

To contribute code, you may either sending me:

* A link to your online fork from which you want me to `git pull`.
* git patch files, as documented at https://git-send-email.io/

## Potential tasks
* Create a UI for filling in webforms.
* Add support for new network protocols.
* Convert Markdown to HTML.
* Convert HTTPS certificates into XML Rhapsode can read.
* Anything listed under the `ISSUES` folder, especially it's `help-wanted` subdirectories.

Feel free to ask me if you have any questions.

M README.md => README.md +24 -16
@@ 2,28 2,36 @@

Web browser targetting voice I/O.

See CONTRIBUTING.md for instructions on how to help the project.

## Desired Experience
Rhapsode will read a webpage outloud to you according to some special CSS properties. Arrow key navigation will be supported for navigation between headings, paragraphs, and table cells.
Rhapsode will read a webpage outloud to you according to some special CSS properties.
Arrow key navigation will be supported for navigation between headings, paragraphs,
and table cells.

Links (defined generally enough to include `<audio>`, etc) will be indicated via a special beep for the user to repeat one back (via microphone or keyboard) at any time in order to navigate between pages. Rhapsode will start reading from the `<main>` element if present.
Links (defined generally enough to include `<audio>`, etc) will be indicated via
a special beep for the user to repeat one back (via microphone or keyboard) at
any time in order to navigate between pages. Rhapsode will start reading from
the `<main>` element if present.

Forms will be rendered as ordinary elements and be navigated to as a link. Once navigated to you will be prompted to fill each input of the form in turn before reviewing/correcting your submission before sending it.
Forms will be rendered as ordinary elements and be navigated to as a link. Once
navigated to you will be prompted to fill each input of the form in turn before
reviewing/correcting your submission before sending it.

## Why?
Because I want The Web to be "universal", for browsers to have the slack they need to present it however best suits their users and the devices they use. Rhapsode demonstrates HTML/CSS's capabilities this way.
Because I want The Web to be "universal", for browsers to have the slack they
need to present it however best suits their users and the devices they use.
Rhapsode demonstrates HTML/CSS's capabilities this way.

And because I want to discourage the excessively bloated RCE vulnarability that
is JavaScript, which does plenty of harm even without breaking out of it's sandbox!
I want browsers to be simple and easy to audit or write your own.

See the wiki for webdev documentation.

## Installation/Running
1. Install `espeak-ng`, `zlib1g-dev`, `ghc`, and `cabal-install`. (Debian package names listed here)
2. From within the git repository, run `cabal install`. This'll compile Rhapsode and all it's other dependencies.
3. (OPTIONAL) Add `~/.cabal/bin/` to your path if it isn't already.
4. Run Rhapsode with `cabal run https://example.com/ | espeak-ng -mb1`, where "https://example.com/" can/should be replaced any valid URL. Or if you followed step 3, you can replace "cabal run" with "rhapsode".

Currently Rhapsode is outputting SSML markup, which is why the output is piped into eSpeak NG. The `-m` flag tells espeak to interpret the SSML. The `b1` flag tells it that the output is in UTF-8, without it eSpeak may stumble through the reading. See `espeak-ng --help` for more options.

It is a known issue that audio cues aren't being played and eSpeak may read out some of the SSML markup rather than follow it's instructions. These'll be easily fixed once eSpeak NG is embedded into the Rhapsode executable.

## Contributing
You can contributed code or register "issues" to Haskell Stylist by contacting me (Adrian Cochrane) via mastodon or email. Or you can sign up for an account on the NZ OSS GitLab.
If you're contributing code you can link me to where you're hosting your git fork, or send a patch file. Or if you simply to ask for more features or fixes don't hesitate to contact me!
\ No newline at end of file
1. Install `espeak-ng`, `zlib1g-dev`, `ghc`, `cabal-install`. (Debian package names listed here)
2. Install the C libraries `espeak-ng` & `sndfile`
3. From within the git repository, run `cabal install`. This'll compile Rhapsode and all it's other dependencies.
4. (OPTIONAL) Add `~/.cabal/bin/` to your path if it isn't already.
5. Run Rhapsode with `cabal run https://example.com/ | espeak-ng -mb1`, where "https://example.com/" can/should be replaced any valid URL. Or if you followed step 3, you can replace "cabal run" with "rhapsode".