Giter VIP home page Giter VIP logo

artifact's Introduction

Heads up: reimagining artifact 3.0, check it out at artifact_py

Artifact: design documentation for everybody

Note: this project, and the python re-write, should now be considered abandoned. Please use it as you see fit.

artifact logo

Introducing Artifact

Artifact is the simple, linkable and trackable design documentation tool for everybody. It allows anyone to write and link their design documents both to each other and to source code, making it easy to know how complete their project is. Documents are revision controllable, can be edited in the browser and have a full suite of command line tools for searching, displaying, checking, exporting and formatting them.

b0rk scenes from writing design docs

Writing detailed design documents is one of the core pillars of quality software development. Design documents are how you capture the requirements (purpose) of your project and link them to your specifications (how you will build it). They let you get your ideas on paper before writing code, and help you have fewer painful refactors. They create a reference for developers and curious users of how and why your project was developed a certain way, and make it easier to refactor your project when that becomes necessary.

Even though design documents are critical to the quality of software, there are very few tools for writing them and integrating them into the larger context of a project. Artifact aims to fill the major gap in quality best practices by making writing good design documents useful to the average developer.

First of all, artifact makes it easy to write design documents in text files and link them by just specifying their partof attribute. This allows developers to put their design documents under revision control, review them using regular code review tools and use all the normal text processing tools (vim, grep, sed, etc) to view, edit and refactor them. Artifact also provides some command line tools of its own.

Secondly, design documents can be linked to source-code through a language agnostic syntax (#ART-name anywhere in the source code). Once linked, anyone reading the comment can easily look up the relevant design documents. In the same way, anyone looking at the Web UI can see exactly where a specification or test is implemented in code. Furthermore, if the name of a design doc changes, art check will tell you where your dangling references are. Never again will you have to be scared of refactoring your design documents because your references in code will be out of date.

Finally, artifact exports a beautiful rendered view of your design documents onto sites like github-sites (example) and you can edit in your browser using art serve. This completes the self documenting nature and allows anyone (even non-developers!) to view and edit the design documents of their project.

In this way, artifact aims to unify other quality best practices while also make writing design documents more fun and useful in your day to day development efforts.

Jump into artifact with the youtube commercial and the Tutorial.

Also, view artifact's own design docs.

Support The Project

You can support the project by ⭐ staring it on github and πŸ’š sharing it with your friends, coworkers and social media. You can also leave direct feedback.

Build Status

Licensing

Goals

The intent of the artifact licensing is that:

  • The artifact application be open source for anyone to use for any purpose (dual licensed MIT + Apache).
  • Anything generated by artifact can be licensed any way the user wishes to, including the built static html pages.
  • Any documents, tutorials or specifications for artifact (except the code and logo) remain public domain and can be used for any purpose at all.

Specifics

All documentation and tutorials for the artifact application are released under the CC0 Creative Commons Public Domain License with the intent that you should feel free to copy, paste and modify any of the designs, guides examples or exported data for any purpose (including commercial) without the need of attribution. You can read more about CC0 here: https://creativecommons.org/publicdomain/

The CC0 license applies to:

  • All project docs
  • The Artifact Design Documents (also located in design/)
  • The Artifact Wiki
  • Any file or data created by any artifact command, including:
    • documents created by art init
    • compiled html/css/json files created by art export

The artifact logo (named Tula) is licensed under Creative Commons Attribution-ShareAlike (CC BY-SA) and can be used by the artifact project for any purpose without needing additional attribution. The artifact logo is located in ci/docs/logo and was originally created by packapotatoes.

Source Code License

The source code is Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

artifact's People

Contributors

bbigras avatar chrisvittal avatar eholk avatar fstephany avatar hdhoang avatar helaan avatar imp avatar jmcquown avatar jplatte avatar justgerd avatar killiankemps avatar llogiq avatar matthewjberger avatar matthiasbeyer avatar nicompte avatar packapotatoes avatar porglezomp avatar rubdos avatar russelltg avatar t-miller avatar theaustinjones avatar vitiral avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

artifact's Issues

fix lint errors

I appologize for anyone who is using the main branch right now, there are a lot of lint errors. I ended up doing a major refactoring in the web branch that I wanted to get in ASAP. They will be fixed soon.

have fmt tests use their own directory

Currently I am locking the TSIMPLE_DIR which enforces that tests don't run in parallel.

This really isn't very nice and should be changed back, with fmt having it's own directory to play with.

unresolved completed% may crash ls

while working on check I realized that artifacts whose completedness cannot be analyzed (.completed or .tested == -1) can still get through the woodwork (see warnings in link::set_completed)

ls needs to be configured to handle this case (i.e. blink -1 RED)

Windows build failure

Windows is failing to build because if the full path being used only for artifact_paths

This is a pain, but to fix we need to either:

  • remove the /?/ cruft from those paths
  • always canonicalize the path for all stored paths
  • Canonicalize all paths when validating only

I prefer the first, but it has security implications. I think the second is the best option

Display short path for location

Currently when doing rsk ls we get something like this:

|--|     0%     0% | TST-learn-partof  |  | /home/username/some/long/path/tutorial.rsk 

It would be nicer to have just tutorial.rsk instead of the whole /home/username/some/long/path/tutorial.rsk path. In fact, having the long path is even useless because only files beneath or at the same level of the .rsk folder are interpreted.
Having the same behaviour as git for displaying files would be great.

Web UI cleanups

  • Make the title "Design Documents"
  • create a "web UI" section in the wiki and link items in the web UI to it

have all commands return Ok(exit_code)

There are some commands where nothing went wrong (per say), but you still want an exit code to be non-zero.

This includes check and fmt -- I want fmt to return a non-zero exit code if anything requires formatting so it can be integrated into build systems.

The rest of the commands should do the same.

1.0: refactor design docs

the design docs have gotten a bit out of date and could use some love.

Before the 1.0 release work can really begin, they need to be refactored

Add headers to `rst ls` output

It's not immediately obvious what the different columns mean in the short format of rst ls. I eventually figured out that "D" means "Done" and "T" means "Tested", but a key would be nice. dpkg-query -l has a good example of what I mean.

Especially in the first parts of the tutorial when you only have artifacts and no code, it's really hard to tell what you're looking at.

windows: paths have `/` in certain places

The 'implemented-at' entry shows a '/' between the current folder and beginning of path from there.

Example:
Shows

implemented-at: C:\projects\rst/src\ui\mod.rs

when running from within rst folder.
Should be

C:\projects\rst\src\ui\mod.rs

create --export flag in ls command

create a --export TYPE flag for ls, where TYPE can be json

(in the future type can be at least toml or markdown as well)

rst ls PATTERN --type json [... other flags]

`rst -h` text is outdated

Calling rst -h as described in the README gives the following output:

rst 0.0.1
https://github.com/vitiral/rst
the requirements tracking tool made for developers. Call rst init -t for a tutorial

Cargo installed rst v0.1.4, so the reported version number is wrong (this should be a separate issue, perhaps, because rst -V does the same thing), and "-t" is an unrecognized flag for init, presumably superseded by the tutorial command.

1.0: clean up web ui

The web UI needs a lot of love

  • in list view, instead of collapsing enable/disable the whole column
  • get rid of eye/pen and instead make linkable artifacts bold and non linkable ones strike through
  • color artifact names (and done/tested) according to their completeness
  • in list, add search bar that searches in selected groups

1.0: export to static web-page

there is a proof of concept in branch static -- now I just need to put everything together and we will be able to export static web-pages! Horray!

v0.2.1 build unsuccessful

Sorry to say, I am not fluent in rust, nor can I make any sense of the error I got.

error[E0277]: the trait bound `T: std::clone::Clone` is not satisfied
  --> /home/rawr/.cargo/registry/src/github.com-1ecc6299db9ec823/rst_app-0.2.1/src/cmd/matches.rs:33:10
   |
33 |         .get_matches_from_safe(args)
   |          ^^^^^^^^^^^^^^^^^^^^^ trait `T: std::clone::Clone` not satisfied
   |
   = help: consider adding a `where T: std::clone::Clone` bound

I am building with cargo 14.0 and rust 1.13.0 under Archlinux, will provide more information if necessary.
(you might also want to change the project description from rst to rst_app )

Warnings when compiling last version

I know they are only warnings and they may be harmless but I was first scared when I got these messages when I compiled rst v0.1.5 (by the way, nice new name):

src/core/utils.rs:122:30: 122:31 warning: unused variable: `b`, #[warn(unused_variables)] on by default
src/core/utils.rs:122                 EoB::Both(a, b) => {
                                                   ^
src/core/utils.rs:127:28: 127:29 warning: unused variable: `b`, #[warn(unused_variables)] on by default
src/core/utils.rs:127                 EoB::Right(b) => relative.push(".."),
                                                 ^
src/lib.rs:57:1: 59:2 warning: function is never used: `main`, #[warn(dead_code)] on by default
src/lib.rs:57 fn main() {

I don't know Rust very much, but maybe it is better to clean these warnings for next release?

`rst ls` tries to load Vim swap files, and chokes

During rst tutorial 4, I had flash/load.py open when I ran rst ls SPC-load-format which would show that the SPC was completed. However, I got the following error instead until I closed the file:

ERROR: while reading from </{redacted}/flash/.load.py.swp>: stream did not contain valid UTF-8
ERROR: Parse Errors: encountered errors while finding locations

I'm fairly certain that Vim's swap file format is binary, and just happens to have a bunch of text-like data in it, so the error is true for what that's worth. I'm also not sure what should be done about it. Since I'm a Vim user, this is annoying, but I also understand this would be a generic tool and some people might want the ability to search any and every file in "code_paths".

I'm leaning toward suggesting a configuration option that defaults to ignoring files that start with ".". I believe that's a common enough system that it makes a reasonable default.

i should have been faster

i intended to finish my reStructuredText library one day.

i’m really sad i can’t use this name anymore 😒

don't format away comments

comments are good, don't destroy them.

Unfortunately rust's toml library doesn't support preserving comments, and neither do we until that gets fixed

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.