Coder Social home page Coder Social logo

oulipo's Introduction

Oulipo Machine

A Xanalogical System for the Creation of New Literature

Goals and Features

The goal of OulipoMachine is to build a complete xanalogical system with bidirectional linking and with micropayments for content providers.

The designs and interactions are inspired by Udanax Green (Xanadu 88.1)

Current features include

  • Keystore management and server authentication
  • Server node creation
  • Adding users
  • Creating document meta-data
  • Document and link access control
  • Creating Links between documents
  • Finding links
  • Retrieve Endsets (from/to VSpans)
  • SPARQL queries of backend data
  • REST queries

Future features will include:

  • Distributed p2p architecture (replacing Federated Servers)
  • Block-chained documents with post-quantum cryptography
  • Localization and language support
  • Optional Encryption of Text Streams
  • JavaFX Browser and Content Viewer
  • JavaFX Content Publisher
  • Viewing of links between documents
  • Access tokens for temporary permissions to access/edit documents
  • Micropayments
  • Keystore and Security UI
  • Search document text
  • Assistants for writing constrained literature (in the Oulipo sense) and non-sequential writing

17 Principles of Xanadu

The August 2017 release of OulipoMachine meets 5 of the 17 Principles of Xanadu

  • Every Xanadu server is uniquely and securely identified. (1)
  • Every user is uniquely and securely identified. (3)
  • Links are visible and can be followed from all endpoints. (7)
  • Every document is uniquely and securely identified. (10)
  • Every document can have secure access controls. (11)

The first alpha release will target another 6 of the principles

  • Every user can search, retrieve, create and store documents. (4)
  • Every document can consist of any number of parts each of which may be of any data type. (5)
  • Every document can contain links of any type including virtual copies ("transclusions") to any other document in the system accessible to its owner. (6)
  • Permission to link to a document is explicitly granted by the act of publication. (8)
  • Every document can be rapidly searched, stored and retrieved without user knowledge of where it is physically stored. (12)
  • Every transaction is secure and auditable only by the parties to that transaction. (16)

2019 will focus on federation, micropayments and data redundancy, meeting another 5 of the principles

  • Every Xanadu server can be operated independently or in a network. (2)
  • Every document can contain a royalty mechanism at any desired degree of granularity to ensure payment on any portion accessed, including virtual copies ("transclusions") of all or part of the document. (9)
  • Every document is automatically moved to physical storage appropriate to its frequency of access from any given location. (13)
  • Every document is automatically stored redundantly to maintain availability even in case of a disaster. (14)
  • Every Xanadu service provider can charge their users at any rate they choose for the storage, retrieval and publishing of documents. (15)

Release Milestones

  • Initial release of features August 2017
  • Alpha release (includes browsing and publishing) Early 2018
  • Beta release mid 2020 (distributed p2p over Tor, block-chained version)
  • Production release early 2021
  • Micropayments 2021

oulipo's People

Contributors

sisbell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

oulipo's Issues

Friendly messages for exceptions

Catch exceptions thrown from server responses and send friendly message to user:

Currently supported:

  • MissingBodyException
  • ResourceNotFoundException
  • AuthorizationException
  • AuthenticationException
  • UnauthorizedException
  • UnrecognizedPropertyException
  • EditResourceException.
  • MalformedTumblerException

Currently not supported

  • IOException
  • ResourceFoundException
  • MalformedSpanException

Read Templates Directory from Jar File

Templates are now in oulipo-resources. Need to read these from the built-in jar file. Currently, it's
trying to read from file system:

Exception in thread "main" java.io.FileNotFoundException: ./src/main/resources/templates does not exist.

Support DocumentLinks

Latest regression broken getDocumentLinks. This needs to support returned two different types of objects: linkAddress and InvariantLinks

  • OulipoRequestService.getDocumentLinks
  • DocumentService.getDocumentLinks

NewDocument API

Create rest API that will create a new document without need to specify the document tumbler field (this will be auto-generated by the system).

Create Resource Classes

Create Resource classes for each of the associated classes:

  • ContentApi
  • DocumentApi
  • ElementApi
  • EndsetsApi
  • NetworkApi
  • NodeApi
  • UserApi

This will decouple the logic code from javaspark and make code more testable.

NewUser API

Create rest API that will create a new user without need to specify the user tumbler field (this will be auto-generated by the system).

Remove Browser Support for RDF

The core Oulipo Data Model supports RDF but some of the response wrappers from server don't need RDF support. This results in a response model that is only partially transformable from JSON to RDF. By choosing JSON as the only format, we simplify the problem. This issue may need to be revisted when implementing federated support.

Support ObjectDate Annotation

The ThingToStatements class does not write out ObjectDate annotation so dates are not persisted in RDF store. Add support for this.

NOTICE file

Add notice file describing the licensing of all 3rd-party dependencies.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.