diff --git a/.github/workflows/contributors.yml b/.github/workflows/contributors.yml index 31fddd3..b58e91f 100644 --- a/.github/workflows/contributors.yml +++ b/.github/workflows/contributors.yml @@ -2,7 +2,7 @@ name: Monthly contributor report on: workflow_dispatch: schedule: - - cron: '3 2 1 * *' + - cron: '0 0 1 * *' permissions: contents: read @@ -12,41 +12,36 @@ jobs: name: contributor report runs-on: ubuntu-latest permissions: - issues: write + contents: write + pull-requests: write steps: - name: Check out repository code uses: actions/checkout@v4 - - - name: Get start and end dates - shell: bash - run: | - # Some date before the start of the Herb.jl project - start_date=2023-01-01 - - # Calculate the last day of the previous month - end_date=$(date -d "$start_date +1 month -1 day" +%Y-%m-%d) - - #Set an environment variable with the date range - echo "START_DATE=$start_date" >> "$GITHUB_ENV" - echo "END_DATE=$end_date" >> "$GITHUB_ENV" - name: Run contributor action - uses: github/contributors@v1 + uses: reubenj/contributors@v1.4.4 env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - START_DATE: ${{ env.START_DATE }} - END_DATE: ${{ env.END_DATE }} + START_DATE: "" + END_DATE: "" ORGANIZATION: Herb-AI - SPONSOR_INFO: "true" - LINK_TO_PROFILE: "true" + SPONSOR_INFO: "True" + LINK_TO_PROFILE: "True" - - name: Move contributors file to repo directory + - name: Rename file and remove JSON shell: bash - run: mv contibutors.md ${{ github.repository }}/CONTRIBUTORS.md - - - name: Add and commit CONTRIBUTORS.md - uses: EndBug/add-and-commit@v9 + run: | + rm contributors.json + mv contributors.md CONTRIBUTORS.md + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v6 with: - message: "Monthly contributors report" - default_author: github_actor + commit-message: Update CONTRIBUTORS.md + branch: update-contributors + title: Update CONTRIBUTORS.md + body: | + Updates to `CONTRIBUTORS.md`. + + Auto-generated by [`create-pull-request`](https://github.com/peter-evans/create-pull-request). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 996a3d3..e57adb3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,17 +1,65 @@ -# Herb development guidelines -Below are some guidelines for working on the Herb Program Synthesis framework. These rules are flexible, they can be updated when necessary. - -## Git -- Don't push directly to the main branch -- To add new functionality, create a new branch from the main branch and give it a meaningful name. Once everything works, create a merge request for moving the code back to the main branch and ideally have it reviewed by someone else. -- Make sure that the code in the main branch works and is compatible with the main branches from other repositories -- Create issues and keep them up-to-date - -## Code -- Add *useful* comments to your code -- Document functions using [docstrings](https://docs.julialang.org/en/v1/manual/documentation/#Writing-Documentation) -- Give clear names to functions, variables and structures -- Have a quick look at the [Julia style guide](https://docs.julialang.org/en/v1/manual/style-guide/). Some important things to highlight: - - Append `!` to names of functions that modify their arguments - - Module names are `CamelCase` - - Function names are generally `lowercase` +# Contributor Guide + +Thank you for contributing to Herb.jl. Below are some guidelines on how you can do so. + +## Overview Herb repositories + +The Herb.jl framework for program synthesis comprises multiple sub-packages with the following functionality: +- HerbCore.jl: Core functionality of the program synthesis library, including the representation and manipulation of expression trees, and abstract types for constraints and grammars. +- HerbGrammar.jl: Declaring grammars. +- HerbSpecification.jl: Specifying the program synthesis problems. Currently, only the input-output examples are supported, but we are working on other specification types (formal specifications, traces, rewards...). +- HerbSearch.jl: Search procedures for finding solution programs to a program synthesis problem. +- HerbInterpret.jl: Handling the interpretation of (candidate) programs, supporting arbitrary Julia expressions or other interpretors with provided evaluation functions. +- HerbConstraints.jl: Formulating, representing and using contraints. +- HerbBenchmarks.jl: a collection of problems for testing program synthesisers. We are collecting commonly used problems, standardising them, as finding new ones. +- Garden.jl: complete implementations of known synthesisers. This repository intends to set the standard baselines to use in research, as well as support users that only wish to apply program synthesisers to their problems. + +## Reporting Bugs + +If you find a bug, open a new issue in the appropriate repo. Please provide some details about the bug, including +- a description of the problem. +- a minimal example to reproduce the problem (by copy + paste). +- relevant error messages and logs. + +## Suggesting Features + +We encourage and welcome suggestions for new features. Please open a new issue and describe the desired feature in as much detail as you can, including an example of how you would like to use it. + +## Contributing Code + +### Workflow + +To contribute code, please follow these steps: +1. Fork the repository. +2. Clone your fork to your local machine. +3. Create a new branch (with a descriptive name) for your bug fix or feature. +4. Make changes in the new branch. +5. Test and document your code. +6. Push your changes to your fork of the repo. +7. Open a PR from the appropriate branch of your fork to the `dev` branch of the original repo. + +### Code quality guidelines + +- **Testing:** Make sure your code is well-tested, i.e., that you add new tests for your code changes and that all existing tests still pass. +- **Documentation:** Please update or add documentation as necessary. Follow the Julia guidelines for [writing documentation](https://docs.julialang.org/en/v1/manual/documentation/#Writing-Documentation). +- Please follow the [Julia style guide](https://docs.julialang.org/en/v1/manual/style-guide/). + +### Code changes to multiple sub-packages + +If the code you're developing requires changes to more than one Herb.jl sub-package, see [this description](https://github.com/Herb-AI/) on how to locally change to a specific version (branch) of a package. + +## Don't know how to contribute? + +Check the open issues in the individual repositories. We maintain a list of bugs and desired developments for each of our repositories. + +Have a program synthesiser you wish to be included? Implement it in [Garden](https://github.com/Herb-AI/Garden.jl), following the workflow above! If you are uncertain about the structure, please contact us. + +## Ongoing developments + +We are currently focusing on the following functionality: + - Machine learning-guided program synthesis + - Refactoring approach a la DreamCoder and KNORF + - Divide & conquer approaches a la EUSolver + - New benchmarks. + + Do contact us if you want to help! \ No newline at end of file diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 0000000..2b45b50 --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,42 @@ +# Contributors + +- Organization: Herb-AI + +| Total Contributors | Total Contributions | +| --- | --- | +| 30 | 1819 | + +| Username | Contribution Count | Commits | +| --- | --- | --- | +| @sebdumancic | 102 | [Herb-AI/HerbLanguage.jl](https://github.com/Herb-AI/HerbLanguage.jl/commits?author=sebdumancic), [Herb-AI/HerbProlog.jl](https://github.com/Herb-AI/HerbProlog.jl/commits?author=sebdumancic), [Herb-AI/ExprRules.jl](https://github.com/Herb-AI/ExprRules.jl/commits?author=sebdumancic), [Herb-AI/ContextExprRules.jl](https://github.com/Herb-AI/ContextExprRules.jl/commits?author=sebdumancic), [Herb-AI/HerbSWIPL.jl](https://github.com/Herb-AI/HerbSWIPL.jl/commits?author=sebdumancic), [Herb-AI/Julog.jl](https://github.com/Herb-AI/Julog.jl/commits?author=sebdumancic), [Herb-AI/Problog.jl](https://github.com/Herb-AI/Problog.jl/commits?author=sebdumancic), [Herb-AI/Herb.jl](https://github.com/Herb-AI/Herb.jl/commits?author=sebdumancic), [Herb-AI/HerbBenchmarks.jl](https://github.com/Herb-AI/HerbBenchmarks.jl/commits?author=sebdumancic), [Herb-AI/HerbEvaluation.jl](https://github.com/Herb-AI/HerbEvaluation.jl/commits?author=sebdumancic), [Herb-AI/HerbData.jl](https://github.com/Herb-AI/HerbData.jl/commits?author=sebdumancic), [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=sebdumancic), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=sebdumancic), [Herb-AI/HerbExamples.jl](https://github.com/Herb-AI/HerbExamples.jl/commits?author=sebdumancic), [Herb-AI/HerbConstraints.jl](https://github.com/Herb-AI/HerbConstraints.jl/commits?author=sebdumancic), [Herb-AI/HerbConstraintTranslator.jl](https://github.com/Herb-AI/HerbConstraintTranslator.jl/commits?author=sebdumancic), [Herb-AI/HerbCore.jl](https://github.com/Herb-AI/HerbCore.jl/commits?author=sebdumancic), [Herb-AI/HerbInterpret.jl](https://github.com/Herb-AI/HerbInterpret.jl/commits?author=sebdumancic), [Herb-AI/Garden.jl](https://github.com/Herb-AI/Garden.jl/commits?author=sebdumancic), | +| @rcnlee | 51 | [Herb-AI/ExprRules.jl](https://github.com/Herb-AI/ExprRules.jl/commits?author=rcnlee), | +| @tawheeler | 38 | [Herb-AI/ExprRules.jl](https://github.com/Herb-AI/ExprRules.jl/commits?author=tawheeler), | +| @mykelk | 19 | [Herb-AI/ExprRules.jl](https://github.com/Herb-AI/ExprRules.jl/commits?author=mykelk), | +| @xukai92 | 4 | [Herb-AI/ExprRules.jl](https://github.com/Herb-AI/ExprRules.jl/commits?author=xukai92), | +| @ancorso | 3 | [Herb-AI/ExprRules.jl](https://github.com/Herb-AI/ExprRules.jl/commits?author=ancorso), | +| @cobac | 1 | [Herb-AI/ExprRules.jl](https://github.com/Herb-AI/ExprRules.jl/commits?author=cobac), | +| @ztangent | 90 | [Herb-AI/Julog.jl](https://github.com/Herb-AI/Julog.jl/commits?author=ztangent), | +| @simeonschaub | 2 | [Herb-AI/Julog.jl](https://github.com/Herb-AI/Julog.jl/commits?author=simeonschaub), | +| @CrashBurnRepeat | 1 | [Herb-AI/Julog.jl](https://github.com/Herb-AI/Julog.jl/commits?author=CrashBurnRepeat), | +| @fplk | 1 | [Herb-AI/Julog.jl](https://github.com/Herb-AI/Julog.jl/commits?author=fplk), | +| @mschauer | 1 | [Herb-AI/Julog.jl](https://github.com/Herb-AI/Julog.jl/commits?author=mschauer), | +| @jaapdejong15 | 340 | [Herb-AI/Herb.jl](https://github.com/Herb-AI/Herb.jl/commits?author=jaapdejong15), [Herb-AI/HerbBenchmarks.jl](https://github.com/Herb-AI/HerbBenchmarks.jl/commits?author=jaapdejong15), [Herb-AI/HerbEvaluation.jl](https://github.com/Herb-AI/HerbEvaluation.jl/commits?author=jaapdejong15), [Herb-AI/HerbData.jl](https://github.com/Herb-AI/HerbData.jl/commits?author=jaapdejong15), [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=jaapdejong15), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=jaapdejong15), [Herb-AI/HerbExamples.jl](https://github.com/Herb-AI/HerbExamples.jl/commits?author=jaapdejong15), [Herb-AI/SpecificationExtraction.jl](https://github.com/Herb-AI/SpecificationExtraction.jl/commits?author=jaapdejong15), [Herb-AI/HerbConstraints.jl](https://github.com/Herb-AI/HerbConstraints.jl/commits?author=jaapdejong15), [Herb-AI/HerbCore.jl](https://github.com/Herb-AI/HerbCore.jl/commits?author=jaapdejong15), [Herb-AI/HerbInterpret.jl](https://github.com/Herb-AI/HerbInterpret.jl/commits?author=jaapdejong15), | +| @THinnerichs | 347 | [Herb-AI/Herb.jl](https://github.com/Herb-AI/Herb.jl/commits?author=THinnerichs), [Herb-AI/HerbBenchmarks.jl](https://github.com/Herb-AI/HerbBenchmarks.jl/commits?author=THinnerichs), [Herb-AI/HerbEvaluation.jl](https://github.com/Herb-AI/HerbEvaluation.jl/commits?author=THinnerichs), [Herb-AI/HerbData.jl](https://github.com/Herb-AI/HerbData.jl/commits?author=THinnerichs), [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=THinnerichs), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=THinnerichs), [Herb-AI/HerbExamples.jl](https://github.com/Herb-AI/HerbExamples.jl/commits?author=THinnerichs), [Herb-AI/SpecificationExtraction.jl](https://github.com/Herb-AI/SpecificationExtraction.jl/commits?author=THinnerichs), [Herb-AI/HerbConstraints.jl](https://github.com/Herb-AI/HerbConstraints.jl/commits?author=THinnerichs), [Herb-AI/HerbLearn.jl](https://github.com/Herb-AI/HerbLearn.jl/commits?author=THinnerichs), [Herb-AI/HerbCore.jl](https://github.com/Herb-AI/HerbCore.jl/commits?author=THinnerichs), [Herb-AI/Herb-AI.github.io](https://github.com/Herb-AI/Herb-AI.github.io/commits?author=THinnerichs), [Herb-AI/HerbInterpret.jl](https://github.com/Herb-AI/HerbInterpret.jl/commits?author=THinnerichs), [Herb-AI/HerbSpecification.jl](https://github.com/Herb-AI/HerbSpecification.jl/commits?author=THinnerichs), [Herb-AI/.github](https://github.com/Herb-AI/.github/commits?author=THinnerichs), [Herb-AI/Garden.jl](https://github.com/Herb-AI/Garden.jl/commits?author=THinnerichs), | +| @ReubenJ | 147 | [Herb-AI/Herb.jl](https://github.com/Herb-AI/Herb.jl/commits?author=ReubenJ), [Herb-AI/HerbBenchmarks.jl](https://github.com/Herb-AI/HerbBenchmarks.jl/commits?author=ReubenJ), [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=ReubenJ), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=ReubenJ), [Herb-AI/SpecificationExtraction.jl](https://github.com/Herb-AI/SpecificationExtraction.jl/commits?author=ReubenJ), [Herb-AI/HerbConstraints.jl](https://github.com/Herb-AI/HerbConstraints.jl/commits?author=ReubenJ), [Herb-AI/HerbCore.jl](https://github.com/Herb-AI/HerbCore.jl/commits?author=ReubenJ), [Herb-AI/HerbInterpret.jl](https://github.com/Herb-AI/HerbInterpret.jl/commits?author=ReubenJ), [Herb-AI/HerbSpecification.jl](https://github.com/Herb-AI/HerbSpecification.jl/commits?author=ReubenJ), [Herb-AI/Garden.jl](https://github.com/Herb-AI/Garden.jl/commits?author=ReubenJ), | +| @IssaHanou | 15 | [Herb-AI/Herb.jl](https://github.com/Herb-AI/Herb.jl/commits?author=IssaHanou), [Herb-AI/HerbData.jl](https://github.com/Herb-AI/HerbData.jl/commits?author=IssaHanou), [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=IssaHanou), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=IssaHanou), | +| @pwochner | 32 | [Herb-AI/Herb.jl](https://github.com/Herb-AI/Herb.jl/commits?author=pwochner), [Herb-AI/HerbBenchmarks.jl](https://github.com/Herb-AI/HerbBenchmarks.jl/commits?author=pwochner), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=pwochner), [Herb-AI/HerbCore.jl](https://github.com/Herb-AI/HerbCore.jl/commits?author=pwochner), [Herb-AI/HerbInterpret.jl](https://github.com/Herb-AI/HerbInterpret.jl/commits?author=pwochner), | +| @Pepijnk12 | 6 | [Herb-AI/Herb.jl](https://github.com/Herb-AI/Herb.jl/commits?author=Pepijnk12), [Herb-AI/HerbBenchmarks.jl](https://github.com/Herb-AI/HerbBenchmarks.jl/commits?author=Pepijnk12), [Herb-AI/HerbData.jl](https://github.com/Herb-AI/HerbData.jl/commits?author=Pepijnk12), [Herb-AI/HerbExamples.jl](https://github.com/Herb-AI/HerbExamples.jl/commits?author=Pepijnk12), [Herb-AI/HerbConstraints.jl](https://github.com/Herb-AI/HerbConstraints.jl/commits?author=Pepijnk12), [Herb-AI/HerbRegex.jl](https://github.com/Herb-AI/HerbRegex.jl/commits?author=Pepijnk12), | +| @stefstef00 | 20 | [Herb-AI/HerbBenchmarks.jl](https://github.com/Herb-AI/HerbBenchmarks.jl/commits?author=stefstef00), | +| @matteo-meluzzi | 9 | [Herb-AI/HerbBenchmarks.jl](https://github.com/Herb-AI/HerbBenchmarks.jl/commits?author=matteo-meluzzi), [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=matteo-meluzzi), | +| @RobbinBaauw | 34 | [Herb-AI/HerbBenchmarks.jl](https://github.com/Herb-AI/HerbBenchmarks.jl/commits?author=RobbinBaauw), [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=RobbinBaauw), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=RobbinBaauw), [Herb-AI/HerbConstraints.jl](https://github.com/Herb-AI/HerbConstraints.jl/commits?author=RobbinBaauw), | +| @Whebon | 255 | [Herb-AI/HerbBenchmarks.jl](https://github.com/Herb-AI/HerbBenchmarks.jl/commits?author=Whebon), [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=Whebon), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=Whebon), [Herb-AI/HerbConstraints.jl](https://github.com/Herb-AI/HerbConstraints.jl/commits?author=Whebon), [Herb-AI/HerbConstraintTranslator.jl](https://github.com/Herb-AI/HerbConstraintTranslator.jl/commits?author=Whebon), [Herb-AI/HerbCore.jl](https://github.com/Herb-AI/HerbCore.jl/commits?author=Whebon), | +| @nicolaefilat | 97 | [Herb-AI/HerbEvaluation.jl](https://github.com/Herb-AI/HerbEvaluation.jl/commits?author=nicolaefilat), [Herb-AI/HerbData.jl](https://github.com/Herb-AI/HerbData.jl/commits?author=nicolaefilat), [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=nicolaefilat), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=nicolaefilat), [Herb-AI/HerbConstraints.jl](https://github.com/Herb-AI/HerbConstraints.jl/commits?author=nicolaefilat), [Herb-AI/HerbCore.jl](https://github.com/Herb-AI/HerbCore.jl/commits?author=nicolaefilat), [Herb-AI/HerbInterpret.jl](https://github.com/Herb-AI/HerbInterpret.jl/commits?author=nicolaefilat), | +| @sourceCode4 | 117 | [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=sourceCode4), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=sourceCode4), [Herb-AI/HerbConstraintTranslator.jl](https://github.com/Herb-AI/HerbConstraintTranslator.jl/commits?author=sourceCode4), | +| @piotr-cichon | 13 | [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=piotr-cichon), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=piotr-cichon), | +| @sjerpsthomas | 10 | [Herb-AI/HerbSearch.jl](https://github.com/Herb-AI/HerbSearch.jl/commits?author=sjerpsthomas), [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=sjerpsthomas), [Herb-AI/HerbConstraints.jl](https://github.com/Herb-AI/HerbConstraints.jl/commits?author=sjerpsthomas), | +| @kwasielewski | 1 | [Herb-AI/HerbGrammar.jl](https://github.com/Herb-AI/HerbGrammar.jl/commits?author=kwasielewski), | +| @tsjerps-tud | 1 | [Herb-AI/HerbConstraints.jl](https://github.com/Herb-AI/HerbConstraints.jl/commits?author=tsjerps-tud), | +| @Floor97 | 50 | [Herb-AI/HerbConstraintTranslator.jl](https://github.com/Herb-AI/HerbConstraintTranslator.jl/commits?author=Floor97), | +| @dahkraf | 12 | [Herb-AI/HerbConstraintTranslator.jl](https://github.com/Herb-AI/HerbConstraintTranslator.jl/commits?author=dahkraf), | + + _this file was generated by the [Contributors GitHub Action](https://github.com/github/contributors)_ diff --git a/Project.toml b/Project.toml index 80bcf85..018ff11 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Herb" uuid = "c09c6b7f-4f63-49de-90d9-97a3563c0f4a" authors = ["Jaap de Jong ", "Tilman Hinnerichs ", "Sebastijan Dumancic "] -version = "0.3.0" +version = "0.4.0" [deps] HerbConstraints = "1fa96474-3206-4513-b4fa-23913f296dfc" @@ -15,7 +15,7 @@ Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" [compat] HerbConstraints = "^0.2.0" HerbCore = "^0.3.0" -HerbGrammar = "^0.3.0" +HerbGrammar = "^0.4.0" HerbInterpret = "^0.1.2" HerbSearch = "^0.3.0" HerbSpecification = "^0.1.0"