diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..24efddd --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,33 @@ +{ + "name": "Jekyll", + "image": "mcr.microsoft.com/devcontainers/jekyll:2-bullseye", + "onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}", + "postCreateCommand": "bash .devcontainer/post-create.sh", + "customizations": { + "vscode": { + "settings": { + "terminal.integrated.defaultProfile.linux": "zsh" + }, + "extensions": [ + // Liquid tags auto-complete + "killalau.vscode-liquid-snippets", + // Liquid syntax highlighting and formatting + "Shopify.theme-check-vscode", + // Shell + "timonwong.shellcheck", + "mkhl.shfmt", + // Common formatter + "EditorConfig.EditorConfig", + "esbenp.prettier-vscode", + "stylelint.vscode-stylelint", + "yzhang.markdown-all-in-one", + // Git + "mhutchie.git-graph", + // Spelling + "ltex-plus.vscode-ltex-plus", + // Linting + "DavidAnson.vscode-markdownlint" + ] + } + } +} \ No newline at end of file diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh new file mode 100644 index 0000000..a4bc282 --- /dev/null +++ b/.devcontainer/post-create.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +if [ -f package.json ]; then + bash -i -c "nvm install --lts && nvm install-latest-npm" + npm i + npm run build +fi + +# Install dependencies for shfmt extension +curl -sS https://webi.sh/shfmt | sh &>/dev/null + +# Add OMZ plugins +git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting +git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions +sed -i -E "s/^(plugins=\()(git)(\))/\1\2 zsh-syntax-highlighting zsh-autosuggestions\3/" ~/.zshrc + +# Avoid git log use less +echo -e "\nunset LESS" >>~/.zshrc diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..2b740bf --- /dev/null +++ b/.editorconfig @@ -0,0 +1,19 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +# Unix-style newlines with a newline ending every file +end_of_line = lf +insert_final_newline = true + +[*.{js,css,scss}] +quote_type = single + +[*.{yml,yaml}] +quote_type = double + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..262d6bd --- /dev/null +++ b/.gitattributes @@ -0,0 +1,16 @@ +# Set default behavior to automatically normalize line endings. +* text=auto + +# Force bash scripts to always use LF line endings so that if a repo is accessed +# in Unix via a file share from Windows, the scripts will work. +*.sh text eol=lf + +# Force batch scripts to always use CRLF line endings so that if a repo is accessed +# in Windows via a file share from Linux, the scripts will work. +*.{cmd,[cC][mM][dD]} text eol=crlf +*.{bat,[bB][aA][tT]} text eol=crlf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary +*.ico binary diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..481fbd7 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: weekly + day: sunday + labels: [] diff --git a/.github/workflows/pages-deploy.yml b/.github/workflows/pages-deploy.yml new file mode 100644 index 0000000..84feb34 --- /dev/null +++ b/.github/workflows/pages-deploy.yml @@ -0,0 +1,71 @@ +name: "Build and Deploy" +on: + push: + branches: + - main + - use-chirpy + - add-content + paths-ignore: + - .gitignore + - README.md + - LICENSE + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + submodules: true + + - name: Setup Pages + id: pages + uses: actions/configure-pages@v4 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.3 + bundler-cache: true + + - name: Build site + run: bundle exec jekyll b -d "_site${{ steps.pages.outputs.base_path }}" + env: + JEKYLL_ENV: "production" + + - name: Test site + run: | + bundle exec htmlproofer _site \ + \-\-disable-external \ + \-\-ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/" + + - name: Upload site artifact + uses: actions/upload-pages-artifact@v3 + with: + path: "_site${{ steps.pages.outputs.base_path }}" + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7dd7cef --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Bundler cache +.bundle +vendor +Gemfile.lock + +# Jekyll cache +.jekyll-cache +.jekyll-metadata +_site + +# RubyGems +*.gem + +# NPM dependencies +node_modules +package-lock.json + +# IDE configurations +.idea +.vscode/* +!.vscode/settings.json +!.vscode/extensions.json +!.vscode/tasks.json + +# Misc +_sass/vendors +assets/js/dist diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..58062c5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "assets/lib"] + path = assets/lib + url = https://github.com/cotes2020/chirpy-static-assets.git diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..66bfec8 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "ms-vscode-remote.remote-containers", + "ltex-plus.vscode-ltex-plus", + "DavidAnson.vscode-markdownlint" + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5e8a04f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,30 @@ +{ + // Prettier + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + // Shopify Liquid + "files.associations": { + "*.html": "liquid" + }, + "[markdown]": { + "editor.defaultFormatter": "yzhang.markdown-all-in-one" + }, + // Formatter + "[html][liquid]": { + "editor.defaultFormatter": "Shopify.theme-check-vscode" + }, + "[shellscript]": { + "editor.defaultFormatter": "mkhl.shfmt" + }, + // Disable vscode built-in stylelint + "css.validate": false, + "scss.validate": false, + "less.validate": false, + // Stylint extension settings + "stylelint.snippet": ["css", "scss"], + "stylelint.validate": ["css", "scss"], + // Run tasks in macOS + "terminal.integrated.profiles.osx": { + "zsh": { "path": "/bin/zsh", "args": ["-l", "-i"] } + } +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..7f0fdb8 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,26 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Run Jekyll Server", + "type": "shell", + "command": "./tools/run.sh", + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": [], + "detail": "Runs the Jekyll server with live reload." + }, + { + "label": "Build Jekyll Site", + "type": "shell", + "command": "./tools/test.sh", + "group": { + "kind": "build" + }, + "problemMatcher": [], + "detail": "Build the Jekyll site for production." + } + ] +} diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..8502018 --- /dev/null +++ b/Gemfile @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "jekyll-theme-chirpy", "~> 7.4", ">= 7.4.1" + +gem "html-proofer", "~> 5.0", group: :test + +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", ">= 1", "< 3" + gem "tzinfo-data" +end + +gem "wdm", "~> 0.2.0", :platforms => [:mingw, :x64_mingw, :mswin] diff --git a/README.md b/README.md index 4cf1fc0..d710459 100644 --- a/README.md +++ b/README.md @@ -1,157 +1,7 @@ # GSoC @ JabRef e.V. -## Shortcuts +This repository holds the project ideas and other GSoC related information. -| [GSoC'26 Ideas](ideas-2026.md) | [Applicaton](applicaton.md) | [JabRef @ GitHub](https://github.com/JabRef) | -| :---------------------------------------------------: | ---------------------------------------------------- | -------------------------------------------------------------- | -| [![GSoC logo](assets/gsoc-square.png)](ideas-2026.md) | [![template icon](assets/template.png)](application.md) | [![GitHub icon](assets/github.png)](https://github.com/JabRef) | +See it rendered at . -## Introduction - -[Google Summer of Code](https://google.github.io/gsocguides/student/index) is a *global, online program that brings new contributors into open source software organizations*. -See [GSoC - how it works](https://summerofcode.withgoogle.com/how-it-works) - -JabRef e.V. has been a Google Summer of Code 2019, 2021, 2022, 2024, and 2025 mentoring organization (completed). - -## About JabRef - -JabRef is a powerful, open source, cross-platform citation and reference management tool designed to help researchers stay organized and efficient. With JabRef, you can effortlessly collect, organize, and manage your literature sources, giving you more time to focus on what truly matters: your research. - -By contributing to JabRef, you contribute to advancing global research. Trusted by over 10,000 researchers worldwide, JabRef plays a vital role in shaping the future of academic and scientific discovery. Your skills and creativity can help push the boundaries of what JabRef can achieve. - -Built in Java, JabRef is designed with a strong emphasis on high-quality, modern, and maintainable code. As a contributor, you’ll have the opportunity to enhance your technical skills, deepen your understanding of Java development, and learn best practices in open source collaboration. Whether you're a beginner or an experienced developer, working on JabRef will help you grow as a programmer while making a meaningful impact on a tool that supports researchers around the globe. - -## Want to work with us? - -We are passionate about open source and pride ourselves on fostering collaboration within a diverse and inclusive community. -JabRef is dedicated to providing a welcoming environment for newcomers to open source, making it an ideal starting point for anyone motivated and eager to contribute. -With [four successful years](https://www.gsocorganizations.dev/organization/jabref-e.v./) of [Google Summer of Code (GSoC)](https://summerofcode.withgoogle.com/) participation, we’ve achieved significant milestones in enhancing JabRef as a user-friendly research tool. - -Each project has been a meaningful step toward empowering researchers worldwide. -As a GSoC participant with JabRef, you'll have the opportunity to grow your technical skills, coding expertise, and open source experience. -Beyond the invaluable learning, participants receive a stipend from Google and gain access to a global professional network that can open doors for their future. - -Based on the nature of the project, we are looking for candidates with an interest in research. -Are you already drafting a proposal for your PhD thesis? Great! -Are you currently pursuing a Master’s degree and still undecided about your next steps? That is also welcome. -Even if you are simply exploring research as a possible path, we would be glad to hear from you. - -See our [ideas](ideas-2026.md) page. We would love to hear your own ideas as well! - -In addition to the [Google Summer of Code requirements for a proposal](https://google.github.io/gsocguides/student/writing-a-proposal), proposals for JabRef: - -- must be your own work, -- must show that you are familiar with programming in general and know Java, -- must show that you also know how to use Git and CLI utils. - -We strongly encourage you to contribute to JabRef before GSoC begins or before submitting your proposal. Please take a look at the [`good first issues`](https://github.com/JabRef/jabref/issues?q=sort%3Aupdated-desc%20is%3Aissue%20is%3Aopen%20label%3A%22good%20first%20issue%22) and try to solve one or two of them. This will help you become familiar with our codebase, tooling, and contribution workflow. Prior contributions are an important positive signal during proposal evaluation and help us understand how you approach real-world development tasks within the project. - -Our final selection decisions are based on a holistic evaluation that includes: - -- the quality and clarity of your final PDF proposal, -- our interactions with you during the application period, reflecting how you communicate, your level of engagement, and your willingness to learn, -- and your previous contributions to JabRef, as described above. - -Start with [application.md](applicaton.md). - -## How to Contribute - -Contribution to JabRef is described in [our contributing guidelines](https://github.com/JabRef/jabref/blob/main/CONTRIBUTING.md). - -Please read this document thoroughly, as it explains our workflows, coding standards, and review process. Following these guidelines helps avoid common mistakes, makes your contributions easier to review, and ensures that your work integrates smoothly with the project. Students who skip this step often face delays or frustration, so investing a bit of time upfront will save you and the mentors considerable effort. - -## Getting help - -We are happy to support you as you contribute to JabRef or work on your GSoC proposal. JabRef has a large and active community, including maintainers, contributors, and other members, who can provide guidance when needed. -Following these practices helps your questions get answered efficiently and keeps the community productive: - -- Be polite and patient. Community members and mentors have their own schedules and may not respond immediately. -- Check if your question has been asked before and do some research. -- Provide enough context and details: explain what you tried, what worked or didn’t, and any relevant information. - -Depending on the situation: - -- For questions about JabRef in general or about some GSoC project idea: ask publicly, so others can benefit. -- For questions about your own proposal: ask your possible mentors directly. - -## Community etiquette - -Everyone in the community has to be polite and respectful, and consider everyone else a member of a team and not a competitor. - -One should be considerate to everyone else's time. -We would like to have quality discussions, and not answer questions that are already documented, or available on [DeepWiki](https://deepwiki.com/jabref/jabref) or GitHub. -This doesn't mean you can't ask questions, but a clueless user and a lazy developer are two different things. - -Tell things as you see them. -Be polite, but don't sugar coat it. -You don't have to apologize every time you make a mistake; but avoid repeating it again. - -**Important Notice about GSoC:** - -Before the program officially opens for applications, **please do not ask questions about GSoC timelines, requirements, or selection processes**. These details are not yet finalized, and we cannot provide guidance before the official announcement. - -You are, however, encouraged to *contribute to JabRef at any time*: fix issues, propose ideas, participate in discussions, and explore the codebase. It is also fine to discuss features or technical ideas that may later become GSoC projects, but only as **standalone technical discussions** — please do not link them to GSoC planning, proposals, or selection questions. - -## Right fit - -When we start interacting with you during the application period, we have several ways to see if you are the right fit; see how you compare to our perfect student; - -- you are patient to apply every suggestion during a pull request review, -- you care about our project beyond the specific task you are working on; you care about changes to documentation, tests, releases, issues, etc, -- your conversation with us is more than the topic you are working on, but flows naturally to any topic, -- you are able to have a proper technical discussion; and understands the value of the discussion in itself, -- you don't just say yes and do something because a mentor says so, -- you are interested in our community and follow our code of conduct and guidelines, -- you keep working with our community even if you are not accepted, -- you have contributed to our project before the application period, -- you can engage in tight feedback loops around design discussions in proposal drafts, -- you don't remain ignorant of our software or what our project does, -- you always write in public, and never write to a mentor in private unless the mentor has asked for that, -- you work on a project our community needs, regardless of your personal interests, -- you don't just fix issues, but you also get involved in other people's work. - -## Cheating - -When we suspect cheating we are to report it to the GSoC coordinator. -We have a list of behaviors we look for. -We don't make that list available. - -Your proposal, source code and other submissions must be your own work, and not the work of others. -Except where the work of others is minimal, and duly credited and quoted. -See [Cheating](https://google.github.io/gsocguides/mentor/selecting-students-and-mentors#cheating-and-proposals-from-outer-space). - -> We consider mindless usage of AI an attempt to impersonate someone you are not, and classify it as cheating too. - -Thanks for reading all the way to the end! - -## Archives of GSoC Projects - -- [GSoC 2025 ‐ Git Support for JabRef](https://github.com/JabRef/jabref/wiki/GSoC-2025-%E2%80%90-Git-Support-for-JabRef) -- [GSoC 2025 - LSP](https://github.com/JabRef/jabref/wiki/GSoC-2025-%E2%80%90-LSP) -- [GSoC 2025 - Walkthrough and Welcome Tab](https://github.com/JabRef/jabref/wiki/GSoC-2025-%E2%80%90-Walkthrough-and-Welcome-Tab) -- [GSoC 2024 ‐ Improved CSL Support (and more LibreOffice‐JabRef integration enhancements)](https://github.com/JabRef/jabref/wiki/GSoC-2024-%E2%80%90-Improved-CSL-Support-(and-more-LibreOffice%E2%80%90JabRef-integration-enhancements)) -- [GSoC 2024 - Lucene Search Backend Integration](https://github.com/JabRef/jabref/wiki/GSoC-2024-%E2%80%90-Lucene-Search-Backend-Integration) -- [GSoC 2024 ‐ AI‐Powered Summarization and “Interaction” with Academic Papers](https://github.com/JabRef/jabref/wiki/GSoC-2024-%E2%80%90-AI%E2%80%90Powered-Summarization-and-%E2%80%9CInteraction%E2%80%9D-with-Academic-Papers) -- [GSoC 2022 — Implement a Three Way Merge UI for merging BibTeX entries](https://github.com/JabRef/jabref/wiki/GSoC-2022-%E2%80%94-Implement-a-Three-Way-Merge-UI-for-merging-BibTeX-entries) -- [GSoC 2021 - Improve PDF support in JabRef](https://github.com/JabRef/jabref/wiki/GSoC-2021---Improve-pdf-support-in-JabRef) -- [GSoC 2021 - Microsoft Word Integration](https://github.com/JabRef/JabRef-Word-Addin/wiki/GSOC-2021-Microsoft-Word-Integration) -- [GSoC 2019 - Bidirectional Integration — Paper Writing — LaTeX and JabRef 5.0](https://gist.github.com/davidemdot/ca69c21081964d5d56cc18bae68251e3) - -## Useful Links - -- [Google Summer of Code main page](https://summerofcode.withgoogle.com/) -- [How to Prepare for GSoC](https://www.geeksforgeeks.org/blogs/how-to-prepare-for-gsoc-google-summer-of-code/) -- [Google's guide on making first contact](https://google.github.io/gsocguides/student/making-first-contact) -- [Elements of a Quality Proposal](https://google.github.io/gsocguides/student/writing-a-proposal#elements-of-a-quality-proposal) -- [Participating organizations](https://www.gsocorganizations.dev/) -- [GSoC stipends](https://developers.google.com/open-source/gsoc/help/student-stipends?hl=en): starting at 750 USD, depending on the country. -- [GSoC timeline](https://developers.google.com/open-source/gsoc/timeline) - - latest proposal deadline: TBA - - coding until: TBA 18:00 UTC (can be extended under conditions) -- [awesome-java](https://github.com/akullpp/awesome-java) - -## Acknowledgements - -This page is heavily inspired by [Sugar Lab's GSoC repository](https://github.com/sugarlabs/GSoC). -This page includes text by [@quozl](https://github.com/quozl) from a work-in-progress document shared among mentors of several organizations, titled "Tips for finding the right GSoC student for your org". -Thank you for sharing! +Content is available at [_posts](_posts) directory. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..4dc961e --- /dev/null +++ b/_config.yml @@ -0,0 +1,226 @@ +# The Site Configuration + +# Import the theme +theme: jekyll-theme-chirpy + +# The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm +# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed, +# otherwise, the layout language will use the default value of 'en'. +lang: en + +# Change to your timezone › https://zones.arilyn.cc +timezone: + +# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md +# ↓ -------------------------- + +title: GSoC @ JabRef # the main title + +tagline: Google Summer of Code # it will display as the subtitle + +description: >- # used by seo meta and the atom feed + Information about GSoC at JabRef + +# Fill in the protocol & hostname for your site. +# E.g. 'https://username.github.io', note that it does not end with a '/'. +url: "https://jabref.github.io" + +github: + username: JabRef # change to your GitHub username + +#twitter: +# username: twitter_username # change to your Twitter username + +social: + # Change to your full name. + # It will be displayed as the default author of the posts and the copyright owner in the Footer + name: JabRef e.V. + email: noreply@jabref.org # change to your email address + links: + # The first element serves as the copyright owner's link + # - https://twitter.com/username # change to your Twitter homepage + - https://github.com/JabRef # change to your GitHub homepage + # Uncomment below to add more social links + # - https://www.facebook.com/username + - https://www.linkedin.com/company/jabref + +# Site Verification Settings +webmaster_verifications: + google: # fill in your Google verification code + bing: # fill in your Bing verification code + alexa: # fill in your Alexa verification code + yandex: # fill in your Yandex verification code + baidu: # fill in your Baidu verification code + facebook: # fill in your Facebook verification code + +# ↑ -------------------------- +# The end of `jekyll-seo-tag` settings + +# Web Analytics Settings +analytics: + google: + id: # fill in your Google Analytics ID + goatcounter: + id: # fill in your GoatCounter ID + umami: + id: # fill in your Umami ID + domain: # fill in your Umami domain + matomo: + id: # fill in your Matomo ID + domain: # fill in your Matomo domain + cloudflare: + id: # fill in your Cloudflare Web Analytics token + fathom: + id: # fill in your Fathom Site ID + +# Page views settings +pageviews: + provider: # now only supports 'goatcounter' + +# Prefer color scheme setting. +# +# Note: Keep empty will follow the system prefer color by default, +# and there will be a toggle to switch the theme between dark and light +# on the bottom left of the sidebar. +# +# Available options: +# +# light — Use the light color scheme +# dark — Use the dark color scheme +# +theme_mode: # [light | dark] + +# The CDN endpoint for media resources. +# Notice that once it is assigned, the CDN url +# will be added to all media resources (site avatar, posts' images, audio and video files) paths starting with '/' +# +# e.g. 'https://cdn.com' +cdn: + +# the avatar on sidebar, support local or CORS resources +avatar: + +# The URL of the site-wide social preview image used in SEO `og:image` meta tag. +# It can be overridden by a customized `page.image` in front matter. +social_preview_image: # string, local or CORS resources + +# boolean type, the global switch for TOC in posts. +toc: true + +comments: + # Global switch for the post-comment system. Keeping it empty means disabled. + provider: # [disqus | utterances | giscus] + # The provider options are as follows: + disqus: + shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname + # utterances settings › https://utteranc.es/ + utterances: + repo: # / + issue_term: # < url | pathname | title | ...> + # Giscus options › https://giscus.app + giscus: + repo: # / + repo_id: + category: + category_id: + mapping: # optional, default to 'pathname' + strict: # optional, default to '0' + input_position: # optional, default to 'bottom' + lang: # optional, default to the value of `site.lang` + reactions_enabled: # optional, default to the value of `1` + +# Self-hosted static assets, optional › https://github.com/cotes2020/chirpy-static-assets +assets: + self_host: + enabled: true # boolean, keep empty means false + # specify the Jekyll environment, empty means both + # only works if `assets.self_host.enabled` is 'true' + env: production # [development | production] + +pwa: + enabled: true # The option for PWA feature (installable) + cache: + enabled: true # The option for PWA offline cache + # Paths defined here will be excluded from the PWA cache. + # Usually its value is the `baseurl` of another website that + # shares the same domain name as the current website. + deny_paths: + # - "/example" # URLs match `/example/*` will not be cached by the PWA + +paginate: 10 + +# The base URL of your site +baseurl: "/GSoC" + +# ------------ The following options are not recommended to be modified ------------------ + +kramdown: + footnote_backlink: "↩︎" + syntax_highlighter: rouge + syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options + css_class: highlight + # default_lang: console + span: + line_numbers: false + block: + line_numbers: true + start_line: 1 + +collections: + tabs: + output: true + sort_by: order + +defaults: + - scope: + path: "" # An empty string here means all files in the project + type: posts + values: + layout: post + comments: true # Enable comments in posts. + toc: true # Display TOC column in posts. + # DO NOT modify the following parameter unless you are confident enough + # to update the code of all other post links in this project. + permalink: /posts/:title/ + - scope: + path: _drafts + values: + comments: false + - scope: + path: "" + type: tabs # see `site.collections` + values: + layout: page + permalink: /:title/ + +sass: + style: compressed + +compress_html: + clippings: all + comments: all + endings: all + profile: false + blanklines: false + ignore: + envs: [development] + +exclude: + - "*.gem" + - "*.gemspec" + - docs + - tools + - README.md + - LICENSE + - purgecss.js + - "*.config.js" + - "package*.json" + +jekyll-archives: + enabled: [categories, tags] + layouts: + category: category + tag: tag + permalinks: + tag: /tags/:name/ + category: /categories/:name/ diff --git a/_data/contact.yml b/_data/contact.yml new file mode 100644 index 0000000..f3b0bde --- /dev/null +++ b/_data/contact.yml @@ -0,0 +1,31 @@ +- type: github + icon: "fab fa-github" + +- type: rss + icon: "fas fa-rss" + noblank: true +# Uncomment and complete the url below to enable more contact options +# +- type: mastodon + icon: "fab fa-mastodon" # icons powered by + url: "https://foojay.social/@jabref" # Fill with your Mastodon account page, rel="me" will be applied for verification +# +- type: linkedin + icon: "fab fa-linkedin" # icons powered by + url: "https://www.linkedin.com/company/jabref/" # Fill with your Linkedin homepage +# +# - type: stack-overflow +# icon: 'fab fa-stack-overflow' +# url: '' # Fill with your stackoverflow homepage +# +# - type: bluesky +# icon: 'fa-brands fa-bluesky' +# url: '' # Fill with your Bluesky profile link +# +# - type: reddit +# icon: 'fa-brands fa-reddit' +# url: '' # Fill with your Reddit profile link +# +# - type: threads +# icon: 'fa-brands fa-threads' +# url: '' # Fill with your Threads profile link diff --git a/_data/share.yml b/_data/share.yml new file mode 100644 index 0000000..30e2252 --- /dev/null +++ b/_data/share.yml @@ -0,0 +1,42 @@ +# Sharing options at the bottom of the post. +# Icons from + +platforms: + - type: Telegram + icon: "fab fa-telegram" + link: "https://t.me/share/url?url=URL&text=TITLE" + + # Uncomment below if you need to. + # + - type: Linkedin + icon: "fab fa-linkedin" + link: "https://www.linkedin.com/feed/?shareActive=true&shareUrl=URL" + # + - type: Weibo + icon: "fab fa-weibo" + link: "https://service.weibo.com/share/share.php?title=TITLE&url=URL" + # + # - type: Mastodon + # icon: "fa-brands fa-mastodon" + # # See: https://github.com/justinribeiro/share-to-mastodon#properties + # instances: + # - label: mastodon.social + # link: "https://mastodon.social/" + # - label: mastodon.online + # link: "https://mastodon.online/" + # - label: fosstodon.org + # link: "https://fosstodon.org/" + # - label: photog.social + # link: "https://photog.social/" + # + # - type: Bluesky + # icon: "fa-brands fa-bluesky" + # link: "https://bsky.app/intent/compose?text=TITLE%20URL" + # + - type: Reddit + icon: "fa-brands fa-square-reddit" + link: "https://www.reddit.com/submit?url=URL&title=TITLE" + # + # - type: Threads + # icon: "fa-brands fa-square-threads" + # link: "https://www.threads.net/intent/post?text=TITLE%20URL" diff --git a/_plugins/posts-lastmod-hook.rb b/_plugins/posts-lastmod-hook.rb new file mode 100644 index 0000000..1fd6ecf --- /dev/null +++ b/_plugins/posts-lastmod-hook.rb @@ -0,0 +1,14 @@ +#!/usr/bin/env ruby +# +# Check for changed posts + +Jekyll::Hooks.register :posts, :post_init do |post| + + commit_num = `git rev-list --count HEAD "#{ post.path }"` + + if commit_num.to_i > 1 + lastmod_date = `git log -1 --pretty="%ad" --date=iso "#{ post.path }"` + post.data['last_modified_at'] = lastmod_date + end + +end diff --git a/_posts/.placeholder b/_posts/.placeholder new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/_posts/.placeholder @@ -0,0 +1 @@ + diff --git a/application.md b/_posts/2025-12-24-application.md similarity index 97% rename from application.md rename to _posts/2025-12-24-application.md index 70edb28..819f893 100644 --- a/application.md +++ b/_posts/2025-12-24-application.md @@ -1,4 +1,10 @@ -# Application for GSoC +--- +title: Application for GSoC +author: jabref +categories: ["gsoc2026"] +tags: [ "process" ] +pin: true +--- A good proposal is structured, complete and backed by your code contributions. We want you to be honest and realistic while writing your proposal. diff --git a/_posts/2025-12-24-own-project.md b/_posts/2025-12-24-own-project.md new file mode 100644 index 0000000..22b0ff9 --- /dev/null +++ b/_posts/2025-12-24-own-project.md @@ -0,0 +1,18 @@ +--- +title: "{Your own project}" +author: jabref +categories: ["gsoc2026"] +tags: ["project-idea"] +--- + +The list of projects is by no means a closed list. +You can propose other projects. JabRef offers various places where it can be improved. +Think as a user or talk to other users. +The following places are a good start: + +- Big projects: +- General list of feature requests: +- Candidates of university projects, the large ones: +- Issues tagged with GSoC: +- The [GitHub issue tracker](https://github.com/JabRef/jabref/issues) might serve as an additional source of inspiration) +- Switch to Apache Velocity: diff --git a/_posts/2025-12-25-past-gsoc.md b/_posts/2025-12-25-past-gsoc.md new file mode 100644 index 0000000..610fe13 --- /dev/null +++ b/_posts/2025-12-25-past-gsoc.md @@ -0,0 +1,20 @@ +--- +title: Past Completed GSoC Projects +description: >- + JabRef's participation in GSoC +author: jabref +categories: [] +tags: [] +pin: true +--- + +- [GSoC 2025 ‐ Git Support for JabRef](https://github.com/JabRef/jabref/wiki/GSoC-2025-%E2%80%90-Git-Support-for-JabRef) +- [GSoC 2025 - LSP](https://github.com/JabRef/jabref/wiki/GSoC-2025-%E2%80%90-LSP) +- [GSoC 2025 - Walkthrough and Welcome Tab](https://github.com/JabRef/jabref/wiki/GSoC-2025-%E2%80%90-Walkthrough-and-Welcome-Tab) +- [GSoC 2024 ‐ Improved CSL Support (and more LibreOffice‐JabRef integration enhancements)](https://github.com/JabRef/jabref/wiki/GSoC-2024-%E2%80%90-Improved-CSL-Support-(and-more-LibreOffice%E2%80%90JabRef-integration-enhancements)) +- [GSoC 2024 - Lucene Search Backend Integration](https://github.com/JabRef/jabref/wiki/GSoC-2024-%E2%80%90-Lucene-Search-Backend-Integration) +- [GSoC 2024 ‐ AI‐Powered Summarization and “Interaction” with Academic Papers](https://github.com/JabRef/jabref/wiki/GSoC-2024-%E2%80%90-AI%E2%80%90Powered-Summarization-and-%E2%80%9CInteraction%E2%80%9D-with-Academic-Papers) +- [GSoC 2022 — Implement a Three Way Merge UI for merging BibTeX entries](https://github.com/JabRef/jabref/wiki/GSoC-2022-%E2%80%94-Implement-a-Three-Way-Merge-UI-for-merging-BibTeX-entries) +- [GSoC 2021 - Improve PDF support in JabRef](https://github.com/JabRef/jabref/wiki/GSoC-2021---Improve-pdf-support-in-JabRef) +- [GSoC 2021 - Microsoft Word Integration](https://github.com/JabRef/JabRef-Word-Addin/wiki/GSOC-2021-Microsoft-Word-Integration) +- [GSoC 2019 - Bidirectional Integration — Paper Writing — LaTeX and JabRef 5.0](https://gist.github.com/davidemdot/ca69c21081964d5d56cc18bae68251e3) diff --git a/_posts/2025-12-26-abbreviations.md b/_posts/2025-12-26-abbreviations.md new file mode 100644 index 0000000..3564eb6 --- /dev/null +++ b/_posts/2025-12-26-abbreviations.md @@ -0,0 +1,28 @@ +--- +title: Improved Journal Abbreviations +author: jabref +categories: ["gsoc2026"] +tags: ["project-idea", "size-small"] +--- + +Currently, JabRef has a single list of journal abbreviations. This list is a combined list of the `.csv` files at . +Instead of the dropdown of JabRef should not show a single "JabRef built in list", but should show the various lists we offer: built-in lists, external lists, custom lists. +Then, one can enable and disable with a click. This eases the users to find issues in abbreviation lists and allows users to customize the lists according to their field (e.g., physics, information science, ...). + +Fore more context, see: and list of all abbreviation issues: . Please also check existing pull requests and comments on them. + +**Skills required:** + +- Java, JavaFX + +**Expected Outcome:** + +A UI view which allows selecting/including journal abbreviations by category. + +**Possible Mentors:** + +[@calixtus](https://github.com/calixtus), [@koppor](https://github.com/koppor) + +**Project size:** + +- 90h (small) to medium diff --git a/_posts/2025-12-26-gsoc-and-jabref.md b/_posts/2025-12-26-gsoc-and-jabref.md new file mode 100644 index 0000000..6f122a5 --- /dev/null +++ b/_posts/2025-12-26-gsoc-and-jabref.md @@ -0,0 +1,152 @@ +--- +title: GSoC @ JabRef e.V. +description: >- + JabRef's participation in GSoC +author: jabref +categories: ["gsoc2026"] +tags: [ "process" ] +pin: true +--- + +## Shortcuts + +| [GSoC'26 Ideas](https://jabref.github.io/GSoC/tags/project-idea/) | [Application](https://jabref.github.io/GSoC/posts/application) | [JabRef @ GitHub](https://github.com/JabRef) | +| :--------------------------------------------------------------------------------------: | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------- | +| [![GSoC logo](assets/gsoc-square.png)](https://jabref.github.io/GSoC/tags/project-idea/) | [![template icon](assets/template.png)](https://jabref.github.io/GSoC/posts/application) | [![GitHub icon](assets/github.png)](https://github.com/JabRef) | + +## Introduction + +[Google Summer of Code](https://google.github.io/gsocguides/student/index) is a *global, online program that brings new contributors into open source software organizations*. +See [GSoC - how it works](https://summerofcode.withgoogle.com/how-it-works) + +JabRef e.V. has been a Google Summer of Code 2019, 2021, 2022, 2024, and 2025 mentoring organization (completed). + +## About JabRef + +JabRef is a powerful, open source, cross-platform citation and reference management tool designed to help researchers stay organized and efficient. With JabRef, you can effortlessly collect, organize, and manage your literature sources, giving you more time to focus on what truly matters: your research. + +By contributing to JabRef, you contribute to advancing global research. Trusted by over 10,000 researchers worldwide, JabRef plays a vital role in shaping the future of academic and scientific discovery. Your skills and creativity can help push the boundaries of what JabRef can achieve. + +Built in Java, JabRef is designed with a strong emphasis on high-quality, modern, and maintainable code. As a contributor, you’ll have the opportunity to enhance your technical skills, deepen your understanding of Java development, and learn best practices in open source collaboration. Whether you're a beginner or an experienced developer, working on JabRef will help you grow as a programmer while making a meaningful impact on a tool that supports researchers around the globe. + +## Want to work with us? + +We are passionate about open source and pride ourselves on fostering collaboration within a diverse and inclusive community. +JabRef is dedicated to providing a welcoming environment for newcomers to open source, making it an ideal starting point for anyone motivated and eager to contribute. +With [four successful years](https://www.gsocorganizations.dev/organization/jabref-e.v./) of [Google Summer of Code (GSoC)](https://summerofcode.withgoogle.com/) participation, we’ve achieved significant milestones in enhancing JabRef as a user-friendly research tool. + +Each project has been a meaningful step toward empowering researchers worldwide. +As a GSoC participant with JabRef, you'll have the opportunity to grow your technical skills, coding expertise, and open source experience. +Beyond the invaluable learning, participants receive a stipend from Google and gain access to a global professional network that can open doors for their future. + +Based on the nature of the project, we are looking for candidates with an interest in research. +Are you already drafting a proposal for your PhD thesis? Great! +Are you currently pursuing a Master’s degree and still undecided about your next steps? That is also welcome. +Even if you are simply exploring research as a possible path, we would be glad to hear from you. + +See our [project-idea](https://jabref.github.io/GSoC/tags/project-idea/) tag. We would love to hear your own ideas as well! + +In addition to the [Google Summer of Code requirements for a proposal](https://google.github.io/gsocguides/student/writing-a-proposal), proposals for JabRef: + +- must be your own work, +- must show that you are familiar with programming in general and know Java, +- must show that you also know how to use Git and CLI utils. + +We strongly encourage you to contribute to JabRef before GSoC begins or before submitting your proposal. Please take a look at the [`good first issues`](https://github.com/JabRef/jabref/issues?q=sort%3Aupdated-desc%20is%3Aissue%20is%3Aopen%20label%3A%22good%20first%20issue%22) and try to solve one or two of them. This will help you become familiar with our codebase, tooling, and contribution workflow. Prior contributions are an important positive signal during proposal evaluation and help us understand how you approach real-world development tasks within the project. + +Our final selection decisions are based on a holistic evaluation that includes: + +- the quality and clarity of your final PDF proposal, +- our interactions with you during the application period, reflecting how you communicate, your level of engagement, and your willingness to learn, +- and your previous contributions to JabRef, as described above. + +Start with [our Application for GSoC page](https://jabref.github.io/GSoC/posts/application). + +## How to Contribute + +Contribution to JabRef is described in [our contributing guidelines](https://github.com/JabRef/jabref/blob/main/CONTRIBUTING.md). + +Please read this document thoroughly, as it explains our workflows, coding standards, and review process. Following these guidelines helps avoid common mistakes, makes your contributions easier to review, and ensures that your work integrates smoothly with the project. Students who skip this step often face delays or frustration, so investing a bit of time upfront will save you and the mentors considerable effort. + +## Getting help + +We are happy to support you as you contribute to JabRef or work on your GSoC proposal. JabRef has a large and active community, including maintainers, contributors, and other members, who can provide guidance when needed. +Following these practices helps your questions get answered efficiently and keeps the community productive: + +- Be polite and patient. Community members and mentors have their own schedules and may not respond immediately. +- Check if your question has been asked before and do some research. +- Provide enough context and details: explain what you tried, what worked or didn’t, and any relevant information. + +Depending on the situation: + +- For questions about JabRef in general or about some GSoC project idea: ask publicly, so others can benefit. +- For questions about your own proposal: ask your possible mentors directly. + +## Community etiquette + +Everyone in the community has to be polite and respectful, and consider everyone else a member of a team and not a competitor. + +One should be considerate to everyone else's time. +We would like to have quality discussions, and not answer questions that are already documented, or available on [DeepWiki](https://deepwiki.com/jabref/jabref) or GitHub. +This doesn't mean you can't ask questions, but a clueless user and a lazy developer are two different things. + +Tell things as you see them. +Be polite, but don't sugar coat it. +You don't have to apologize every time you make a mistake; but avoid repeating it again. + +**Important Notice about GSoC:** + +Before the program officially opens for applications, **please do not ask questions about GSoC timelines, requirements, or selection processes**. These details are not yet finalized, and we cannot provide guidance before the official announcement. + +You are, however, encouraged to *contribute to JabRef at any time*: fix issues, propose ideas, participate in discussions, and explore the codebase. It is also fine to discuss features or technical ideas that may later become GSoC projects, but only as **standalone technical discussions** — please do not link them to GSoC planning, proposals, or selection questions. + +## Right fit + +When we start interacting with you during the application period, we have several ways to see if you are the right fit; see how you compare to our perfect student; + +- you are patient to apply every suggestion during a pull request review, +- you care about our project beyond the specific task you are working on; you care about changes to documentation, tests, releases, issues, etc, +- your conversation with us is more than the topic you are working on, but flows naturally to any topic, +- you are able to have a proper technical discussion; and understands the value of the discussion in itself, +- you don't just say yes and do something because a mentor says so, +- you are interested in our community and follow our code of conduct and guidelines, +- you keep working with our community even if you are not accepted, +- you have contributed to our project before the application period, +- you can engage in tight feedback loops around design discussions in proposal drafts, +- you don't remain ignorant of our software or what our project does, +- you always write in public, and never write to a mentor in private unless the mentor has asked for that, +- you work on a project our community needs, regardless of your personal interests, +- you don't just fix issues, but you also get involved in other people's work. + +## Cheating + +When we suspect cheating we are to report it to the GSoC coordinator. +We have a list of behaviors we look for. +We don't make that list available. + +Your proposal, source code and other submissions must be your own work, and not the work of others. +Except where the work of others is minimal, and duly credited and quoted. +See [Cheating](https://google.github.io/gsocguides/mentor/selecting-students-and-mentors#cheating-and-proposals-from-outer-space). + +> We consider mindless usage of AI an attempt to impersonate someone you are not, and classify it as cheating too. + +Thanks for reading all the way to the end! + +## Useful Links + +- [Google Summer of Code main page](https://summerofcode.withgoogle.com/) +- [How to Prepare for GSoC](https://www.geeksforgeeks.org/blogs/how-to-prepare-for-gsoc-google-summer-of-code/) +- [Google's guide on making first contact](https://google.github.io/gsocguides/student/making-first-contact) +- [Elements of a Quality Proposal](https://google.github.io/gsocguides/student/writing-a-proposal#elements-of-a-quality-proposal) +- [Participating organizations](https://www.gsocorganizations.dev/) +- [GSoC stipends](https://developers.google.com/open-source/gsoc/help/student-stipends?hl=en): starting at 750 USD, depending on the country. +- [GSoC timeline](https://developers.google.com/open-source/gsoc/timeline) + - latest proposal deadline: TBA + - coding until: TBA 18:00 UTC (can be extended under conditions) +- [awesome-java](https://github.com/akullpp/awesome-java) + +## Acknowledgements + +This page is heavily inspired by [Sugar Lab's GSoC repository](https://github.com/sugarlabs/GSoC). +This page includes text by [@quozl](https://github.com/quozl) from a work-in-progress document shared among mentors of several organizations, titled "Tips for finding the right GSoC student for your org". +Thank you for sharing! diff --git a/_posts/2025-12-26-libreoffice.md b/_posts/2025-12-26-libreoffice.md new file mode 100644 index 0000000..5134ffd --- /dev/null +++ b/_posts/2025-12-26-libreoffice.md @@ -0,0 +1,47 @@ +--- +title: Improved LibreOffice-JabRef integration +author: jabref +categories: ["gsoc2026"] +tags: ["project-idea", "size-small", "size-medium", "size-large"] +--- + +**Description:** + +JabRef can connect to LibreOffice to offer premier reference management by allowing users to cite library entries directly into the document, and then generate bibliographies based on the cited entries. See [JabRef LibreOffice Integration](https://docs.jabref.org/cite/openofficeintegration). + +We have a collection of independent projects available for the LibreOffice/OpenOffice integration feature of JabRef. + +1. **BST style support:** Currently, custom styles (JStyles) and CSL styles are supported. In the LaTeX-world, BST styles (specified via `.bst` files) are still popular. JabRef already has BST support, but it is currently not accessible via the UI. + + - Expected deliverable: It should be possible to select a `.bst` file, which is then used for rendering into the LibreOffice document. [Details: [#624](https://github.com/JabRef/jabref/issues/624)] + +2. **Improved support for CSL styles:** Support for CSL styles in the LibreOffice integration has been a popular new feature in JabRef that [users look forward to](https://discourse.jabref.org/t/error-when-connecting-to-libreoffice/5431/14?u=subhramit). This project aims to enhance the integration further by introducing **Footnote-based citation support for CSL styles**. Currently, using CSL styles in footnotes of the LibreOffice document causes unexpected behavior, especially for numeric styles. There should be a proper definition of the "global order" of the citations so that they can be used in footnotes. This problem is already solved for JStyles (see a high-level overview [here](https://devdocs.jabref.org/code-howtos/openoffice/order-of-appearance.html)), so the solution needs to be extended/adapted for CSL styles (and BST styles, if project 1 is also undertaken). + + - Expected deliverable: It is possible to use CSL styles in the footnotes of the documents, without any unexpected/broken ordering in the bibliography or numeric citations. [Tracking issue: [#12484](https://github.com/JabRef/jabref/issues/12484)] + +3. **Cross-compatibility with other reference management software**: In case of CSL styles, reference management software like [Zotero](https://www.zotero.org/) and [Mendeley](https://www.mendeley.com/) can read each other's citations in LibreOffice. This is made possible by following a specific format of document annotations, embedding information in CSL JSON. In JabRef, the internal format of references is currently a JabRef-custom format. It should be changed to a format used by Zotero, so that cross-compatibility can be ensured. +See the discussion at for details. This includes: +i) Implementation of that format, ii) Implementation of a converter from the "old" JabRef-Format to the new one. The converter could be implemented within OpenOffice (similar to [JabRef_LibreOffice_Converter](https://github.com/teertinker/JabRef_LibreOffice_Converter?tab=readme-ov-file#jabref_libreoffice_converter)). + + - Expected deliverable: One can seamlessly switch working with LibreOffice documents having citations from Zotero and JabRef. + +4. **Seamless citation style type switching:** JabRef in LibreOffice should support auto-updation of references when switching from CSL-based formats to JStyle (or BST)-based formats and back. Currently, if the user messes up and realizes that they had to use another style family, the workaround is to re-cite all entries again with the new style, then refresh the bibliography. This may not be very user-friendly when citation styles need to be updated when submitting papers to different journals (one use-case), or simply because of last-minute change in decisions. For this project, the starting step will be unifying the "reference mark" (document annotation) format for all these style types, so that the entry information can be parsed across styles. This project thus goes very well coupled with Project 1 and Project 3. + + - Expected deliverable: On changing style type (CSL/BST/JStyle), all references in the documents should seamlessly adapt to the new style. + +**Skills required:** + +- Java, JavaFX + +**Possible Mentors:** + +[@Siedlerchr](https://github.com/Siedlerchr), [@subhramit](https://github.com/subhramit) + +**Project size:** + +- **350h (large)**: If (Project 1 + Project 2 + Project 3 + Project 4) + +- **175h (medium)**: If (Project 1 + Project 2) **OR** (Project 2 + Project 3) **OR** (Project 1 + Project 3) + +- **90h (small)**: If Project 1 **OR** Project 2 **OR** Project 3 + diff --git a/_posts/2025-12-26-native-image.md b/_posts/2025-12-26-native-image.md new file mode 100644 index 0000000..2ec3e53 --- /dev/null +++ b/_posts/2025-12-26-native-image.md @@ -0,0 +1,51 @@ +--- +title: JabRef components as native images +author: jabref +categories: ["gsoc2026"] +tags: ["project-idea", "size-medium"] +--- + +JabRef consists of multiple parts: JabKit, JabLS, JabSrv, and JabRef (the GUI). + +JabKit is the command-line tool of JabRef offering all the "cool" functionality using a command-line interface. Currently, JabKit is distributed by jpackage and JBang. JPackage creates an installer and portable version. The startup time is way too long for a CLI application. While the installer and portable version include a JDK, JBang downloads the JRE for itself and "just" downloads the Maven artifact jablib to enable execution. + +In the Java compiler space, there is the option of [GraalVM and "native image"](https://www.graalvm.org/latest/reference-manual/native-image/). This enables generating an executable file (.exe on Windows) which promises a faster startup. + +This GSoC project has two phases: + +- Phase 1: Adapt JabKit+jablib to be compatible with `graalvm-native` +- Phase 2: Adapt JabGui to be compatible with `graalvm-native` +- Phase 3: Adapt JabLS to be compatible with `graalvm-native` +- Phase 4: Adapt JabSrv to be compatible to `graalvm-native` + +Especially phase 2 might require exchanging libraries in JabRef. + +**Why is this a nice project?** + +One can learn about fields of Java known to a little group of developers only. One touches areas very new in the Java space. Finally, one can learn about [WASM-compiling of Java](https://github.com/oracle/graal/issues/3391). + +**Expected outcomes:** + +- jabkit.exe (JabRef's CLI tool) +- jabref.exe (JabRef GUI) +- jabls.exe +- jabsrv.exe + +**Skills required:** + +- Strong Java-coding skills +- Endurance, because this project might include much trial-and-error + +**Possible Mentors:** + +[@koppor](https://github.com/koppor), [@InAnYan](https://github.com/InAnYan/), [@calixtus](https://github.com/calixtus) + +**Links:** + +- Source of JabKit: https://github.com/JabRef/jabref/tree/main/jabkit +- Initial PR trying it https://github.com/JabRef/jabref-koppor/pull/693 +- JBang runner for JabKit: https://github.com/JabRef/jabref/tree/main/.jbang#running-jabkit + +**Project size:** + +175h (medium) diff --git a/_posts/2025-12-26-ocr.md b/_posts/2025-12-26-ocr.md new file mode 100644 index 0000000..dc48477 --- /dev/null +++ b/_posts/2025-12-26-ocr.md @@ -0,0 +1,49 @@ +--- +title: Improve handling of older documents by OCR and AI +author: jabref +categories: ["gsoc2026"] +tags: ["project-idea", "size-small"] +--- + +JabRef, a comprehensive literature management software, currently supports both handling metadata and text-based PDF documents. However, a significant limitation arises with scanned PDFs, particularly historical articles, which are not text-searchable due to their image-based format. This project aims to bridge this gap by integrating advanced OCR (Optical Character Recognition) technology, enabling full-text search in scanned PDFs. + +**Useful links:** +- [OCR Integration in JabRef - Meta Issue](https://github.com/JabRef/jabref/issues/13267) +- A Document AI Package: https://github.com/deepdoctection/deepdoctection +- Hand-written text recognition in historical documents: https://github.com/githubharald/SimpleHTR#handwritten-text-recognition-with-tensorflow +- Java OCR with Tesseract: [Baeldung Guide](https://www.baeldung.com/java-ocr-tesseract) +- Tesseract OCR Library: [Official Documentation](https://tesseract-ocr.github.io/) +- OCRmyPDF Installation and Usage: [GitHub Repository](https://github.com/ocrmypdf/OCRmyPDF#installation) +- ChatOCR and ChatGPT Integration: [Blog Article](https://www.blogmojo.de/chatgpt-plugin/chatocr/) +- AI-Powered OCR: [Addepto Blog](https://addepto.com/blog/ai-powered-ocr-optical-character-recognition-enhancing-accuracy-and-efficiency-in-document-analysis/) +- Tika OCR Integration: [Apache Tika Wiki](https://cwiki.apache.org/confluence/display/tika/tikaocr) +- Surya AI powered OCR, apparently better than Tesseract, but coded in python [VikParuchuri/Surya](https://github.com/VikParuchuri/surya) +- SOTA (October 2025) language model for OCR: [PaddleOCR-VL](https://huggingface.co/PaddlePaddle/PaddleOCR-VL); Supported by [llama.cpp with PR 16701](https://github.com/ggml-org/llama.cpp/pull/16701) + +**Some aspects:** + +1. Add an option to call an OCR engine from JabRef, e.g., cloud based or local installs +2. Define a common interface to support multiple OCR engines +3. Provide a good default set of settings for the OCR engines +4. Support expert configuration of the settings +5. Add the extracted text as a layer to the pdf so that Apache Lucene can parse it +6. Add an option to further process the text with Grobid for training and metadata extraction + +**Expected outcome:** + +A) Develop a common interface within JabRef to accommodate multiple OCR engines, ensuring flexibility and expandability. +B) Enable expert users to fine-tune OCR settings, catering to specific needs or document formats. +C) Incorporate the OCR-extracted text as a searchable layer in PDFs, allowing Apache Lucene to index and look for the content. + +**Skills required:** + +- Proficiency in Java programming. +- A keen interest and curiosity in document processing and AI technologies. + +**Possible mentors:** + +[@Siedlerchr](https://github.com/Siedlerchr), [@InAnYan](https://github.com/InAnYan/), [@calixtus](https://github.com/calixtus), [@subhramit](https://github.com/subhramit) + +**Project size:** + +90h (small) diff --git a/_posts/2025-12-26-postgres.md b/_posts/2025-12-26-postgres.md new file mode 100644 index 0000000..5b80d0d --- /dev/null +++ b/_posts/2025-12-26-postgres.md @@ -0,0 +1,32 @@ +--- +title: Use PostgreSQL as full GUI data backend for JabRef +author: jabref +categories: ["gsoc2026"] +tags: ["project-idea", "size-medium"] +--- + +Currently, JabRef GUI holds all entries in memory. It even converts LaTeX to Unicode and vice versa to support better search. While this is a great UX, this leads to a huge memory consumption. The more "proper" way is to use a database (such as PostgreSQL) to store the entries. Then, not all entries need to be loaded in memory. The first step is to introduce a data-access layer: The maintable should read from SQL database, not from all in-memory. Possible future work may be: and . + +There can be an initial phase to evaluate whether PostgreSQL is the right DBMS as backend for JabRef. For instance, DuckDB and SQLite were also discussed. Currently, PostgeSQL turned out best (especially for handling regular expression search on the database itself), but things may have changed in 2026. + +This is issue . + +**Skills required:** + +- PostgreSQL, Java, JavaFX + +**Code places to start to look at:** + +- org.jabref.gui.maintable.MainTableFieldValueFormatter#formatFieldsValues + +**Starting points:** + +- Document the maintable of JabRef using Markdown and UML (starting point: `org.jabref.gui.util.ValueTableCellFactory`) + +**Possible Mentors:** + +[@koppor](https://github.com/koppor), [@InAnYan](https://github.com/InAnYan/), [@calixtus](https://github.com/calixtus) + +**Project size:** + +175h (medium) diff --git a/_posts/2025-12-26-slr.md b/_posts/2025-12-26-slr.md new file mode 100644 index 0000000..021503d --- /dev/null +++ b/_posts/2025-12-26-slr.md @@ -0,0 +1,32 @@ +--- +title: Improved SLR Support +author: jabref +categories: ["gsoc2026"] +tags: ["project-idea", "size-medium"] +--- + +With the ever-growing number of publications in computer science and other fields of research, conducting secondary studies becomes necessary to summarize the current state of the art. For software engineering research, Kitchenham popularized the systematic literature review (SLR) method to address this issue. The main idea is to systematically identify and analyze the majority of relevant publications on a specific topic. This is usually an activity that takes extensive manual effort. Some tool support does exist, but the full potential of tools has not been exploited yet. JabRef also offers basic functionality for systematic literature reviews that is used by a number of researchers to systematically "harvest" related work based on the fetching capabilities of JabRef. While using the feature, various additional feature requests came up. For instance, created search queries are currently transformed internally by JabRef to the query format of the publisher. It should also be possible to directly input a query at the publisher site, e.g., for IEEE or ACM. + +More background information: [Paper: Systematic Literature Tools: Are we there yet?](https://ceur-ws.org/Vol-2839/paper13.pdf); **[Presentation](https://speakerdeck.com/koppor/systematic-literature-tools-are-we-there-yet-zeus-2021)**. + +One key aspect would be the improvement of the fetcher infrastructure in JabRef to better adapt to new and changing Publisher/Journal websites and to offer a more direct integration. As an inspiration, see [BibDesk](https://bibdesk.sourceforge.io/). + +Example SLRs: + +**Expected outcome:** + +An advanced SLR functionality, where a researcher is supported to execute a systematic-literature-review. + +We did an initial project organization at . + +**Skills required:** + +- Java, JavaFX + +**Possible mentors:** + +[@koppor](https://github.com/koppor), [@calixtus](https://github.com/calixtus), [@subhramit](https://github.com/subhramit) + +**Project size:** + +175h (medium) diff --git a/_posts/2025-12-26-zotero.md b/_posts/2025-12-26-zotero.md new file mode 100644 index 0000000..688c3c0 --- /dev/null +++ b/_posts/2025-12-26-zotero.md @@ -0,0 +1,20 @@ +--- +title: Sync with Zotero Storage +author: jabref +categories: ["gsoc2026"] +tags: ["project-idea", "size-medium"] +--- + +Zotero is an alternative to JabRef with features focused on collaboration (and less on BibTeX quality). Zotero offers a [Storage](https://www.zotero.org/storage). It would be great if JabRef could synchronize with the storage. + +Zotero offers an [API](https://www.zotero.org/support/dev/web_api/v3/start) to access the data. It should be used to synchronize data from and to Zotero. + +Special attention should be put on synchronization of data if the local BibTeX file changes in parallel. Different scenarios of synchronization should be regarded. This knowledge should also be used to enhance the git support and OneDrive/Dropbox support. + +**Possible Mentors:** + +[@koppor](https://github.com/koppor), [@InAnYan](https://github.com/InAnYan/), [@calixtus](https://github.com/calixtus), [@subhramit](https://github.com/subhramit) + +**Project size:** + +175h (medium) diff --git a/_tabs/about.md b/_tabs/about.md new file mode 100644 index 0000000..2c74700 --- /dev/null +++ b/_tabs/about.md @@ -0,0 +1,11 @@ +--- +# the default layout is 'page' +icon: fas fa-info-circle +order: 4 +--- + +This is the GSoC page for JabRef. +Find the main JabRef page at . + +- Legal disclaimer: +- Datenschutz: diff --git a/_tabs/archives.md b/_tabs/archives.md new file mode 100644 index 0000000..c3abc59 --- /dev/null +++ b/_tabs/archives.md @@ -0,0 +1,5 @@ +--- +layout: archives +icon: fas fa-archive +order: 3 +--- diff --git a/_tabs/categories.md b/_tabs/categories.md new file mode 100644 index 0000000..2d241be --- /dev/null +++ b/_tabs/categories.md @@ -0,0 +1,5 @@ +--- +layout: categories +icon: fas fa-stream +order: 1 +--- diff --git a/_tabs/tags.md b/_tabs/tags.md new file mode 100644 index 0000000..ded3adc --- /dev/null +++ b/_tabs/tags.md @@ -0,0 +1,5 @@ +--- +layout: tags +icon: fas fa-tags +order: 2 +--- diff --git a/assets/lib b/assets/lib new file mode 160000 index 0000000..93e0345 --- /dev/null +++ b/assets/lib @@ -0,0 +1 @@ +Subproject commit 93e03454edf879bdf8abe34b9715b9fea4da0ee8 diff --git a/ideas-2026.md b/ideas-2026.md deleted file mode 100644 index 020c345..0000000 --- a/ideas-2026.md +++ /dev/null @@ -1,247 +0,0 @@ -# GSoC 2026 Ideas - -This page lists a number of **ideas** for potential projects to be carried out by the persons participating in Google Summer of Code 2026. -This is by no means a closed list, so the possible contributors can **feel free to propose alternative activities related to the project** (the [list of feature requests](http://discourse.jabref.org/c/features) and the [GitHub issue tracker](https://github.com/JabRef/jabref/issues) might serve as an additional source of inspiration). -Students are strongly encouraged to discuss their ideas with the developers and the community to improve their proposal until submission (e.g., using the [Gitter Channel](https://gitter.im/JabRef/jabref) or the [forum](http://discourse.jabref.org/)). -It's also a good idea to start working on [one of the smaller issues](https://github.com/JabRef/jabref/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) to make yourself familiar with [the contribution process](https://github.com/JabRef/jabref/blob/master/CONTRIBUTING.md). -Successful pull requests increase the chance of being accepted as a mentee. - -## JabRef components as native images - -JabRef consists of multiple parts: JabKit, JabLS, JabSrv, and JabRef (the GUI). - -JabKit is the command-line tool of JabRef offering all the "cool" functionality using a command-line interface. Currently, JabKit is distributed by jpackage and JBang. JPackage creates an installer and portable version. The startup time is way too long for a CLI application. While the installer and portable version include a JDK, JBang downloads the JRE for itself and "just" downloads the Maven artifact jablib to enable execution. - -In the Java compiler space, there is the option of [GraalVM and "native image"](https://www.graalvm.org/latest/reference-manual/native-image/). This enables generating an executable file (.exe on Windows) which promises a faster startup. - -This GSoC project has two phases: - -- Phase 1: Adapt JabKit+jablib to be compatible with `graalvm-native` -- Phase 2: Adapt JabGui to be compatible with `graalvm-native` -- Phase 3: Adapt JabLS to be compatible with `graalvm-native` -- Phase 4: Adapt JabSrv to be compatible to `graalvm-native` - -Especially phase 2 might require exchanging libraries in JabRef. - -**Why is this a nice project?** - -One can learn about fields of Java known to a little group of developers only. One touches areas very new in the Java space. Finally, one can learn about [WASM-compiling of Java](https://github.com/oracle/graal/issues/3391). - -**Expected outcomes:** - -- jabkit.exe (JabRef's CLI tool) -- jabref.exe (JabRef GUI) -- jabls.exe -- jabsrv.exe - -**Skills required:** - -- Strong Java-coding skills -- Endurance, because this project might include much trial-and-error - -**Possible Mentors:** - -[@koppor](https://github.com/koppor), [@InAnYan](https://github.com/InAnYan/), [@calixtus](https://github.com/calixtus) - -**Links:** - -- Source of JabKit: https://github.com/JabRef/jabref/tree/main/jabkit -- Initial PR trying it https://github.com/JabRef/jabref-koppor/pull/693 -- JBang runner for JabKit: https://github.com/JabRef/jabref/tree/main/.jbang#running-jabkit - -**Project size:** - -175h (medium) - -## Sync with Zotero Storage - -Zotero is an alternative to JabRef with features focused on collaboration (and less on BibTeX quality). Zotero offers a [Storage](https://www.zotero.org/storage). It would be great if JabRef could synchronize with the storage. - -Zotero offers an [API](https://www.zotero.org/support/dev/web_api/v3/start) to access the data. It should be used to synchronize data from and to Zotero. - -Special attention should be put on synchronization of data if the local BibTeX file changes in parallel. Different scenarios of synchronization should be regarded. This knowledge should also be used to enhance the git support and OneDrive/Dropbox support. - -**Possible Mentors:** - -[@koppor](https://github.com/koppor), [@InAnYan](https://github.com/InAnYan/), [@calixtus](https://github.com/calixtus), [@subhramit](https://github.com/subhramit) - -**Project size:** - -175h (medium) - -## Use PostgreSQL as full GUI data backend for JabRef - -Currently, JabRef GUI holds all entries in memory. It even converts LaTeX to Unicode and vice versa to support better search. While this is a great UX, this leads to a huge memory consumption. The more "proper" way is to use a database (such as PostgreSQL) to store the entries. Then, not all entries need to be loaded in memory. The first step is to introduce a data-access layer: The maintable should read from SQL database, not from all in-memory. Possible future work may be: and . - -There can be an initial phase to evluate whether PostgreSQL is the right DBMS as backend for JabRef. For instance, DuckDB and SQLite were also discussed. Currently, PostgeSQL turned out best (especially for handling regular expression search on the database itself), but things may have changed in 2026. - -This is issue https://github.com/JabRef/jabref/issues/12708 - -**Skills required:** - -- PostgreSQL, Java, JavaFX - -**Code places to start to look at:** - -- org.jabref.gui.maintable.MainTableFieldValueFormatter#formatFieldsValues - -**Starting points:** - -- Document the maintable of JabRef using Markdown and UML (starting point: `org.jabref.gui.util.ValueTableCellFactory`) - -**Possible Mentors:** - -[@koppor](https://github.com/koppor), [@InAnYan](https://github.com/InAnYan/), [@calixtus](https://github.com/calixtus) - -## Improve handling of older documents by OCR and AI - -JabRef, a comprehensive literature management software, currently supports both handling metadata and text-based PDF documents. However, a significant limitation arises with scanned PDFs, particularly historical articles, which are not text-searchable due to their image-based format. This project aims to bridge this gap by integrating advanced OCR (Optical Character Recognition) technology, enabling full-text search in scanned PDFs. - -**Useful links:** -- [OCR Integration in JabRef - Meta Issue](https://github.com/JabRef/jabref/issues/13267) -- A Document AI Package: https://github.com/deepdoctection/deepdoctection -- Hand-written text recognition in historical documents: https://github.com/githubharald/SimpleHTR#handwritten-text-recognition-with-tensorflow -- Java OCR with Tesseract: [Baeldung Guide](https://www.baeldung.com/java-ocr-tesseract) -- Tesseract OCR Library: [Official Documentation](https://tesseract-ocr.github.io/) -- OCRmyPDF Installation and Usage: [GitHub Repository](https://github.com/ocrmypdf/OCRmyPDF#installation) -- ChatOCR and ChatGPT Integration: [Blog Article](https://www.blogmojo.de/chatgpt-plugin/chatocr/) -- AI-Powered OCR: [Addepto Blog](https://addepto.com/blog/ai-powered-ocr-optical-character-recognition-enhancing-accuracy-and-efficiency-in-document-analysis/) -- Tika OCR Integration: [Apache Tika Wiki](https://cwiki.apache.org/confluence/display/tika/tikaocr) -- Surya AI powered OCR, apparently better than Tesseract, but coded in python [VikParuchuri/Surya](https://github.com/VikParuchuri/surya) -- SOTA (October 2025) language model for OCR: [PaddleOCR-VL](https://huggingface.co/PaddlePaddle/PaddleOCR-VL); Supported by [llama.cpp with PR 16701](https://github.com/ggml-org/llama.cpp/pull/16701) - -**Some aspects:** - -1. Add an option to call an OCR engine from JabRef, e.g., cloud based or local installs -2. Define a common interface to support multiple OCR engines -3. Provide a good default set of settings for the OCR engines -4. Support expert configuration of the settings -5. Add the extracted text as a layer to the pdf so that Apache Lucene can parse it -6. Add an option to further process the text with Grobid for training and metadata extraction - -**Expected outcome:** - -A) Develop a common interface within JabRef to accommodate multiple OCR engines, ensuring flexibility and expandability. -B) Enable expert users to fine-tune OCR settings, catering to specific needs or document formats. -C) Incorporate the OCR-extracted text as a searchable layer in PDFs, allowing Apache Lucene to index and look for the content. - -**Skills required:** - -- Proficiency in Java programming. -- A keen interest and curiosity in document processing and AI technologies. - -**Possible mentors:** - -[@Siedlerchr](https://github.com/Siedlerchr), [@InAnYan](https://github.com/InAnYan/), [@calixtus](https://github.com/calixtus), [@subhramit](https://github.com/subhramit) - -**Project size:** - -90h (small) - -## Improved LibreOffice-JabRef integration - -**Description:** - -JabRef can connect to LibreOffice to offer premier reference management by allowing users to cite library entries directly into the document, and then generate bibliographies based on the cited entries. See [JabRef LibreOffice Integration](https://docs.jabref.org/cite/openofficeintegration). - -We have a collection of independent projects available for the LibreOffice/OpenOffice integration feature of JabRef. - -1. **BST style support:** Currently, custom styles (JStyles) and CSL styles are supported. In the LaTeX-world, BST styles (specified via `.bst` files) are still popular. JabRef already has BST support, but it is currently not accessible via the UI. - - - Expected deliverable: It should be possible to select a `.bst` file, which is then used for rendering into the LibreOffice document. [Details: [#624](https://github.com/JabRef/jabref/issues/624)] - -2. **Improved support for CSL styles:** Support for CSL styles in the LibreOffice integration has been a popular new feature in JabRef that [users look forward to](https://discourse.jabref.org/t/error-when-connecting-to-libreoffice/5431/14?u=subhramit). This project aims to enhance the integration further by introducing **Footnote-based citation support for CSL styles**. Currently, using CSL styles in footnotes of the LibreOffice document causes unexpected behavior, especially for numeric styles. There should be a proper definition of the "global order" of the citations so that they can be used in footnotes. This problem is already solved for JStyles (see a high-level overview [here](https://devdocs.jabref.org/code-howtos/openoffice/order-of-appearance.html)), so the solution needs to be extended/adapted for CSL styles (and BST styles, if project 1 is also undertaken). - - - Expected deliverable: It is possible to use CSL styles in the footnotes of the documents, without any unexpected/broken ordering in the bibliography or numeric citations. [Tracking issue: [#12484](https://github.com/JabRef/jabref/issues/12484)] - -3. **Cross-compatibility with other reference management software**: In case of CSL styles, reference management software like [Zotero](https://www.zotero.org/) and [Mendeley](https://www.mendeley.com/) can read each other's citations in LibreOffice. This is made possible by following a specific format of document annotations, embedding information in CSL JSON. In JabRef, the internal format of references is currently a JabRef-custom format. It should be changed to a format used by Zotero, so that cross-compatibility can be ensured. -See the discussion at for details. This includes: -i) Implementation of that format, ii) Implementation of a converter from the "old" JabRef-Format to the new one. The converter could be implemented within OpenOffice (similar to [JabRef_LibreOffice_Converter](https://github.com/teertinker/JabRef_LibreOffice_Converter?tab=readme-ov-file#jabref_libreoffice_converter)). - - - Expected deliverable: One can seamlessly switch working with LibreOffice documents having citations from Zotero and JabRef. - -4. **Seamless citation style type switching:** JabRef in LibreOffice should support auto-updation of references when switching from CSL-based formats to JStyle (or BST)-based formats and back. Currently, if the user messes up and realizes that they had to use another style family, the workaround is to re-cite all entries again with the new style, then refresh the bibliography. This may not be very user-friendly when citation styles need to be updated when submitting papers to different journals (one use-case), or simply because of last-minute change in decisions. For this project, the starting step will be unifying the "reference mark" (document annotation) format for all these style types, so that the entry information can be parsed across styles. This project thus goes very well coupled with Project 1 and Project 3. - - - Expected deliverable: On changing style type (CSL/BST/JStyle), all references in the documents should seamlessly adapt to the new style. - -**Skills required:** - -- Java, JavaFX - -**Possible Mentors:** - -[@Siedlerchr](https://github.com/Siedlerchr), [@subhramit](https://github.com/subhramit) - -**Project size:** - -- **350h (large)**: If (Project 1 + Project 2 + Project 3 + Project 4) - -- **175h (medium)**: If (Project 1 + Project 2) **OR** (Project 2 + Project 3) **OR** (Project 1 + Project 3) - -- **90h (small)**: If Project 1 **OR** Project 2 **OR** Project 3 - -## Improved SLR Support - -**Description:** - -With the ever-growing number of publications in computer science and other fields of research, conducting secondary studies becomes necessary to summarize the current state of the art. For software engineering research, Kitchenham popularized the systematic literature review (SLR) method to address this issue. The main idea is to systematically identify and analyze the majority of relevant publications on a specific topic. This is usually an activity that takes extensive manual effort. Some tool support does exist, but the full potential of tools has not been exploited yet. JabRef also offers basic functionality for systematic literature reviews that is used by a number of researchers to systematically "harvest" related work based on the fetching capabilities of JabRef. While using the feature, various additional feature requests came up. For instance, created search queries are currently transformed internally by JabRef to the query format of the publisher. It should also be possible to directly input a query at the publisher site, e.g., for IEEE or ACM. - -More background information: [Paper: Systematic Literature Tools: Are we there yet?](https://ceur-ws.org/Vol-2839/paper13.pdf); **[Presentation](https://speakerdeck.com/koppor/systematic-literature-tools-are-we-there-yet-zeus-2021)**. - -One key aspect would be the improvement of the fetcher infrastructure in JabRef to better adapt to new and changing Publisher/Journal websites and to offer a more direct integration. As an inspiration, see [BibDesk](https://bibdesk.sourceforge.io/). - -Example SLRs: https://dl.acm.org/doi/full/10.1145/3690632 - -**Expected outcome:** - -An advanced SLR functionality, where a researcher is supported to execute a systematic-literature-review. - -We did an initial project organization at https://github.com/users/koppor/projects/2. - -**Skills required:** - -- Java, JavaFX - -**Possible mentors:** - -[@koppor](https://github.com/koppor), [@calixtus](https://github.com/calixtus), [@subhramit](https://github.com/subhramit) - -**Project size:** - -175h (medium) - -## Improved Journal Abbreviations - -Currently, JabRef has a single list of journal abbreviations. This list is a combined list of the `.csv` files at . -Instead of the dropdown of JabRef should not show a single "JabRef built in list", but should show the various lists we offer: built-in lists, external lists, custom lists. -Then, one can enable and disable with a click. This eases the users to find issues in abbreviation lists and allows users to customize the lists according to their field (e.g., physics, information science, ...). - -Fore more context, see: and list of all abbreviation issues: . Please also check existing pull requests and comments on them. - -**Skills required:** - -- Java, JavaFX - -**Possible Mentors:** - -[@calixtus](https://github.com/calixtus), [@koppor](https://github.com/koppor) - -**Project size:** - -- 90h (small) to medium - -**Expected Outcome:** - -A UI view which allows selecting/including journal abbreviations by category. - -## {Your own project} - -You can propose other projects. JabRef offers various places where it can be improved. -Think as a user or talk to other users. -The following places are a good start: - -- Switch to Apache Velocity: -- Big projects: -- General list of feature requests: -- Candidates of university projects, the large ones: -- Issues tagged with GSoC: diff --git a/index.html b/index.html new file mode 100644 index 0000000..1357b08 --- /dev/null +++ b/index.html @@ -0,0 +1,4 @@ +--- +layout: home +# Index page +--- diff --git a/tools/run.sh b/tools/run.sh new file mode 100755 index 0000000..0efc452 --- /dev/null +++ b/tools/run.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +# +# Run jekyll serve and then launch the site + +prod=false +command="bundle exec jekyll s -l" +host="127.0.0.1" + +help() { + echo "Usage:" + echo + echo " bash /path/to/run [options]" + echo + echo "Options:" + echo " -H, --host [HOST] Host to bind to." + echo " -p, --production Run Jekyll in 'production' mode." + echo " -h, --help Print this help information." +} + +while (($#)); do + opt="$1" + case $opt in + -H | --host) + host="$2" + shift 2 + ;; + -p | --production) + prod=true + shift + ;; + -h | --help) + help + exit 0 + ;; + *) + echo -e "> Unknown option: '$opt'\n" + help + exit 1 + ;; + esac +done + +command="$command -H $host" + +if $prod; then + command="JEKYLL_ENV=production $command" +fi + +if [ -e /proc/1/cgroup ] && grep -q docker /proc/1/cgroup; then + command="$command --force_polling" +fi + +echo -e "\n> $command\n" +eval "$command" diff --git a/tools/test.sh b/tools/test.sh new file mode 100755 index 0000000..331de1c --- /dev/null +++ b/tools/test.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash +# +# Build and test the site content +# +# Requirement: html-proofer, jekyll +# +# Usage: See help information + +set -eu + +SITE_DIR="_site" + +_config="_config.yml" + +_baseurl="" + +help() { + echo "Build and test the site content" + echo + echo "Usage:" + echo + echo " bash $0 [options]" + echo + echo "Options:" + echo ' -c, --config "" Specify config file(s)' + echo " -h, --help Print this information." +} + +read_baseurl() { + if [[ $_config == *","* ]]; then + # multiple config + IFS="," + read -ra config_array <<<"$_config" + + # reverse loop the config files + for ((i = ${#config_array[@]} - 1; i >= 0; i--)); do + _tmp_baseurl="$(grep '^baseurl:' "${config_array[i]}" | sed "s/.*: *//;s/['\"]//g;s/#.*//")" + + if [[ -n $_tmp_baseurl ]]; then + _baseurl="$_tmp_baseurl" + break + fi + done + + else + # single config + _baseurl="$(grep '^baseurl:' "$_config" | sed "s/.*: *//;s/['\"]//g;s/#.*//")" + fi +} + +main() { + # clean up + if [[ -d $SITE_DIR ]]; then + rm -rf "$SITE_DIR" + fi + + read_baseurl + + # build + JEKYLL_ENV=production bundle exec jekyll b \ + -d "$SITE_DIR$_baseurl" -c "$_config" + + # test + bundle exec htmlproofer "$SITE_DIR" \ + --disable-external \ + --ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/" +} + +while (($#)); do + opt="$1" + case $opt in + -c | --config) + _config="$2" + shift + shift + ;; + -h | --help) + help + exit 0 + ;; + *) + # unknown option + help + exit 1 + ;; + esac +done + +main