Giter VIP home page Giter VIP logo

rechain's People

Contributors

mjhouse avatar

Watchers

 avatar  avatar

rechain's Issues

Logger unit tests

Description

Logger needs unit tests. Coveralls.io reports 100% coverage because it's used everywhere, but it isn't really being tested alone.

Create test configure scripts for each platform

Description

The current linux/osx configure script needs to be moved into a <ROOT>/scripts/ directory and a new script that can configure an environment (with RECHAIN_HOME set etc.) for a manual build/testing needs to be created.

Might need one for windows as well.

Fix order of message levels in Logger

Description

Logger has an issue with level checking:

  • output debug, info, warnings and errors if Level::debug
  • output info, warnings, error if Level::info
  • output warnings, error if Level::warning
  • output error if Level::error
  • and nothing if a Log is Level::none

Currently, it won't log warnings, error or debug if level is info.

Transition build automation to CMake

Description

CMake is the most heavily supported cross-platform build automation system, so the build workflow is going to use it. This needs to be done before continuous integration on all platforms can happen.

P2P file sharing layer

Description

The blockchain holds publishing information for each document, but on top of this, ReChain needs to be able to distribute the published documents themselves to clients. This will be done through a torrent-based peer-to-peer network.

  1. When a document is published, the published document will be copied to a temporary location in RECHAIN_HOME and ReChain will begin seeding.

  2. A miner will accept the publish request, add it to the current mining operation, and torrent the document for reseeding when the block is mined.

  3. Clients that request the published document will torrent it locally to view it, check the hash against the publishing record, and depending on their settings, begin to re-seed.

Tracking will be provided by a standalone mini-client (which hasn't been created yet) that should be host-able anywhere with almost no configuration, and will connect new clients with up-to-date seeders.

The tracking client will be in a different repo.

Possible libraries

  • libtorrent

Make ReChain cross platform

Description

Build the project on Windows, OSX and Linux. Currently, development is entirely on Linux, and the build process reflects that. This will probably involve switching from standard make to a build tool that is friendlier with other platforms, tweaking the code and finding a way to build unit tests for each platform.

Platforms

Linux

Nothing to see here. Unit tests already build on Ubuntu with travis-ci, make comes with Linux.

Windows

Possible build tools: CMake, build2, NMake
Unit tests: Appveyor

OSX

Possible build tools: CMake, build2, make
Unit tests: travis-ci

Write contribution guide, update README

Description

Write a contribution guide that includes development setup, general application design ideas and some general guidelines (i.e. "don't use raw pointers unless absolutely necessary").

Start adding small issues that are tagged good-first-issue or up-for-grabs ().

Make GUI/CLI

Description

CLI is already in progress, but is tightly bound to the application. It needs to be abstracted enough that different interfaces (GUI specifically) can be plugged in without changing behavior. So a general interface will accept command line arguments and then launch either the CLI or the GUI to handle the given arguments.

This is going to be a large addition, so tests, cross-platform CLI and the p2p publishing system (#5) need to be implemented, stable and documented before the GUI can be written.

Possible cross-platform GUI/widget libraries

  • Qt
  • wxWidgets.

Move enums into single header file

Description

Enums are scattered all over the project, and it's difficult to tell when they're available and when they aren't. They should be moved into a single header at inc/enums.hpp.

Add support for non-ascii file hashing

Description

Right now files that are hashed in order to publish records on the blockchain are read as strings. This needs to be changed to hash the file from binary so that the file type becomes irrelevant. This will allow any file type to be published on the blockchain.

Files

src/record.cpp

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.