GithubHelp home page GithubHelp logo

search's Introduction

Impact

Build Status

Impact is a Modelica package manager.

ImpactLogo

The concept was first presented in impact - A Modelica Package Manager

Michael Tiller, Dietmar Winkler (2014). impact - A Modelica Package Manager, Proceedings of the 10th International Modelica Conference, March 10-12, 2014, Lund, Sweden http://dx.doi.org/10.3384/ecp14096543

A follow-up paper Where impact got Going explained the new resolution algorithm used by impact to identify library dependencies.

Michael Tiller, Dietmar Winkler (2015). Where impact got Going, Proceedings of the 11th International Modelica Conference, September 21-23, 2015, Versailles, France http://dx.doi.org/10.3384/ecp15118725

Further motivation for why we need to have package management for mathematical models can be found in Bret Victor's excellent essay What Can a Technologist Do about Climate Change? where he asks the question "What if there were an 'npm' for scientific models?". Of course, our answer would be "there already is". ๐Ÿ˜ƒ

Search Applications

Not only can impact be used as a package manager, but the indices that it creates can also be used to drive a web application that helps users explore the set of available Modelica libraries. That web application can be found at:

http://impact.github.io

The source code for the web application is also open source and is hosted on GitHub as well.

History

Impact was initially development in Python which is also the version presented in the Modelica 2014 paper.

Based on user feedback it became apparent that having to rely on a Python run-time environment installed in order to use impact might become an issue.

Therefore it was decided to switch to a Go language implementation in an attempt to create a static executable that is compatible with the impact scheme for Modelica package management without the need for any additional run-time support (e.g., Node.js, Python).

Version history

Available versions can be grouped into:

Installation

Self-contained executable binaries are available under the release section for a whole range of operating systems.

Simply download the matching archive and extract its content to a place that suits you best (preferable inside a directory which is part of your executable system $PATH).

Conventions

Impact follows a "convention over configuration" philosophy. That means that if you follow some reasonable conventions (that generally reflect best practices), the system should work without the need for any manual configuration. Here are the conventions that Impact expects:

  • The name of the repository should match (case included) the name of your library.

  • Semantic Versioning - To identify a library release, simply attach a tag to the release that is a semantic version (an optional "v" at the start of the tag name is allowed).

  • Place the package.mo file for your library in one of the following locations within the repository:

    • ./package.mo (i.e., at the root of the repository)

    • ./<LibraryName>/package.mo (i.e., within a directory sharing the name of the library)

    • ./<LibraryName> <Version>/package.mo (i.e., within a directory sharing the name of the library followed by a space followed by the tag name, without any leading v present)

Building

To build this, you need to have Go installed. Go will create the proper build environment for you. All you need to specify is:

$ export GOPATH=/some/path

and then run:

$ go get github.com/impact/impact/impact

which will automatically clone a copy of the git repository and all its dependencies, compile impact and put them in a structure like

$GOPATH/
  bin/
  pkg/
  src/
    github.com/impact/impact

To build as static executable again, just run:

$ go install

from inside

$GOPATH/src/github.com/impact/impact/impact

This will create a static executable of called impact in $GOPATH/bin.

Cross Compiling

The impact/Makefile includes targets to build cross-compiled executables.

In order to be able to cross-compile you need to have built GO for all the compilation targets.

Under Ubuntu Linux

Those are already available in the repo:

$ sudo apt-get install golang-$GOOS-$GOARCH

The available $GOOS and $GOARCH variants are documented in the Go-lang documentation.

Under OSX

The cross compiling Go compiler can be installed with the command:

  $ brew install go --cross-compile-common

License

See LICENSE file

Development

The development takes place on https://github.com/impact/impact

For more information on how to contribute please look at CONTRIBUTING.md.

You may report any issues with using the Issues button.

Contributions in shape of Pull Requests are always welcome.

search's People

Contributors

dietmarw avatar mtiller avatar xie-dongping avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

search's Issues

Add routes

Use routes to allow selection of a single library and, perhaps, even represent the search term.

Spinner

Add a spinner when index is loading.

public version "newer" than source version

I'm not sure how the version is currently reflected. The search repo is currently at version 1.0.3 but the public deployed version already at 1.0.4. Shouldn't source repo be at least as new as the public version?

Add a "Back to search results" button on the detailed view

Currently when one clicks on the library name and gets to the detailed library description then that page is missing a "Back to search results" button. I know that the browsers back button and the impact logo gets you there but people don't expect that anymore. So having a small button with "<- back" or similar would help.

Add semantic version

We should add a semantic version to this and then publish it on the web page somewhere so people know what version they are using.

What badges to display.

I'd like to discuss what kind of badges we should (if at all) include in the more detailed search results.

Main groups are:

  • Origin:
    • Modelica Association :
    • 3rd-party (unaffiliated with the MA)
  • License:
    Should we still mark unlicensed libraries as currently done? E.g.,
  • Status:
    • last activity during the last year:
    • last activity more than a year:
    • marked as obsolete in the descripton:

I see there is a danger of overdoing this. Maybe a simple list without badges is cleaner.

Star button does nothing

In the search window, we get a button N stars, but the button does nothing when I click it. I don't know what I expect it would do, but I really want to click it.

Switch to using redux

Sharing of the index (when it gets loaded) would be improved by using redux which adds an "elm-ish" like approach to state (which looks very cool).

Combine library page with search page

When thinking of moving the generation of the current library page I wondered if we perhaps should not combine that page with the search page.

What I have in mind is a page that by default displays all the libraries in the groups:

  • MA libs standard conform
  • MA libs
  • 3rd party libs

and if the user types something in the search field it basically acts as a filter and only displays libraries matching the filter criteria but still with the group in which they reside.

Link to released package

It would be nice if the release buttons of the found libs would actually link to the released lib. Thanks.

Semantic sorting

MSL 3.2.1+build.2 is sorted before 3.2.1+build.3 which should be the other way round.

Add support for emoji icons

Search for "xml" in the search field. The only hit contains an emoji Icon in its description which is displayed as text.

Display also libraries w/o releases?

Currently modelica.org/libraries lists all libraries of the modelica and modelica-3rdparty accounts. Also those that haven't yet (or never had) a proper release. Also listing those in impact would encourage people to get their libraries listed by impact and might lead to people getting involved.

I see of course a problem here. Which is that the nature of impact itself is to index installable releases of libraries. Not sure how to solve this so that the search part also lists others.
Ideas?

Set cursor to search field

After landing on impact.github.io it would be nice if the cursor would be instantly at the search field for rapid typing. Thanks.

Multiple references

Complex, ObsoleteModelica3, Modelica and ModelicaServices are refering to the same library.

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.