mjhouse / rechain Goto Github PK
View Code? Open in Web Editor NEWThe distributed research journal
License: GNU General Public License v3.0
The distributed research journal
License: GNU General Public License v3.0
Logger needs unit tests. Coveralls.io reports 100% coverage because it's used everywhere, but it isn't really being tested alone.
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.
CPack can generate installers for Windows/OSX/Linux- it should be automated so that new installers are created every time the latest version tag changes. Probably need to set up VMs to do this and use a github webhook to pull the latest master commit.
Logger has an issue with level checking:
Currently, it won't log warnings, error or debug if level is info.
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.
Test failures on windows builds:
===================================================
test cases: 14 | 8 passed | 6 failed
assertions: 134 | 115 passed | 19 failed
Command exited with code -1073741819
Full build output here: https://ci.appveyor.com/project/mjhouse/rechain
Need to get builds working on Windows and then set up AppVeyor to run tests on commit.
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.
When a document is published, the published document will be copied to a temporary location in RECHAIN_HOME and ReChain will begin seeding.
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.
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.
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.
Nothing to see here. Unit tests already build on Ubuntu with travis-ci, make
comes with Linux.
Possible build tools: CMake, build2, NMake
Unit tests: Appveyor
Possible build tools: CMake, build2, make
Unit tests: travis-ci
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
().
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.
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
.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.