Latest commit

History

9,088 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Apache Whimsy Project Overview

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers to access and manipulate data about Apache people, projects, and processes. Whimsy is both an Apache PMC, this codebase, and the live deployed instance of https://whimsy.apache.org/.

The ASF's Whimsy instance hosts static content, repository checkouts/clones, CGI scripts, Rack applications, Node.js applications, tools, and cron jobs. Note: features accessing private ASF data are restricted to committers, Members, or Officers of the ASF.

Every commit pushed to master is deployed within minutes to https://whimsy.apache.org/ using GitPubSub.

How Tos and Get The Code

Whimsy source code is hosted at: https://github.com/apache/whimsy.git and mirrored for Apache committers at: https://gitbox.apache.org/repos/asf/whimsy.git

How To Get Involved!

Since Whimsy hosts many independent tools that make finding or updating information at the ASF simpler, there are plenty of places for Apache committers to get involved. Bugs or improvement suggestions for the many tools available on Whimsy or list of public datafiles are always appreciated, and please join us on the public #whimsy channel on Slack.

If you have an idea for a new Whimsy tool, email us! The PMC supports a rich server environment, so deploying a new tool is as simple as proposing a .cgi with a bit of Ruby code. We also have deployments of Rack and Sinatra apps, and use JavaScript and Wunderbar for most of the UI building in many tools. The Whimsy server also supports direct access to Apache SVN or git repositories, making consuming data simple.

The Whimsy committers are always looking for new ideas to improve processes at Apache, and we can either help you get started or suggest how to approach just about any sort of "find this ASF data and streamline that process" ideas.

Most documentation is in the code or in the repo, and our dev@whimsical mailing list is active. Note that many Whimsy tools access committer- or member-private data, so some tools are access restricted.

Historical note: The live production whimsy.apache.org server was used for the previous board agenda tool and more before we became the Apache Whimsy top level project. That's why whimsy.apache.org is the production server, and mailing lists and a homepage are hosted on the whimsical.apache.org domain.

Whimsy Architecture - Live Instance

Whimsy is run in an Apache hosted VM with httpd, Rack, Ruby, and variety of other tools that directly interface with various parts of Apache organizational records.

Details for each type of deployed tool or script:

  • Static content Changes pushed to GitHub master will be automatically deployed - every commit triggers pygitpubsub to do an update, which may take a few minutes. Note that this includes the contents of scripts and applications too.

  • Repository checkouts/clones An copy of a number of repositories are updated every 10 minutes via a cron job. This is controlled by repository.yml. The whimsy VM is also subscribed to board@ and scans those emails for commit messages and will update the copy of foundation/board when commits happen.

  • CGI scripts any dependencies listed in a Gemfile will automatically be installed. A simple CGI:

    https://github.com/apache/whimsy/blob/master/www/test.cgihttps://whimsy.apache.org/test.cgi

  • Authentication for CGI Scripts See the DEVELOPMENT.md FAQ.

  • Rack applications run under Phusion Passenger under Apache httpd. Again, Gemfiles are used to specify dependencies. In addition to simply checking the application, one line per passenger application needs to be added to the puppet file under passenger: as seen in DEPLOYMENT.md.

    A sample rack application (two empty directories, and a one line file):

    https://github.com/apache/whimsy/tree/master/www/racktest

    https://whimsy.apache.org/racktest

    Authentication requirements will also need to be two phase, like with CGI above; but more common conditions can be handled at the "Rack" level instead of at the application level making use of Rack middleware such as:

    https://github.com/apache/whimsy/blob/master/lib/whimsy/asf/rack.rb#L56

  • Cron jobs are managed by puppet. See deployment for more information.

  • Generated JSON data files are automatically generated into the /public directory, to cache frequently used data for whimsy and other applications. These are usually run from a cron calling a www/roster/public_*.rb file. See also an overview of data dependencies and flow.

  • Data models for many Whimsy tools are in lib/whimsy/asf, and most views for tools are stored in www. Note that Whimsy has a wide variety of sometimes unrelated tools, so not everything here uses the same models.

About

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers

Topics

Resources

Code of conduct

Security policy

Stars

125 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

9,088 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Apache Whimsy Project Overview

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers to access and manipulate data about Apache people, projects, and processes. Whimsy is both an Apache PMC, this codebase, and the live deployed instance of https://whimsy.apache.org/.

The ASF's Whimsy instance hosts static content, repository checkouts/clones, CGI scripts, Rack applications, Node.js applications, tools, and cron jobs. Note: features accessing private ASF data are restricted to committers, Members, or Officers of the ASF.

Every commit pushed to master is deployed within minutes to https://whimsy.apache.org/ using GitPubSub.

How Tos and Get The Code

Whimsy source code is hosted at: https://github.com/apache/whimsy.git and mirrored for Apache committers at: https://gitbox.apache.org/repos/asf/whimsy.git

How To Get Involved!

Since Whimsy hosts many independent tools that make finding or updating information at the ASF simpler, there are plenty of places for Apache committers to get involved. Bugs or improvement suggestions for the many tools available on Whimsy or list of public datafiles are always appreciated, and please join us on the public #whimsy channel on Slack.

If you have an idea for a new Whimsy tool, email us! The PMC supports a rich server environment, so deploying a new tool is as simple as proposing a .cgi with a bit of Ruby code. We also have deployments of Rack and Sinatra apps, and use JavaScript and Wunderbar for most of the UI building in many tools. The Whimsy server also supports direct access to Apache SVN or git repositories, making consuming data simple.

The Whimsy committers are always looking for new ideas to improve processes at Apache, and we can either help you get started or suggest how to approach just about any sort of "find this ASF data and streamline that process" ideas.

Most documentation is in the code or in the repo, and our dev@whimsical mailing list is active. Note that many Whimsy tools access committer- or member-private data, so some tools are access restricted.

Historical note: The live production whimsy.apache.org server was used for the previous board agenda tool and more before we became the Apache Whimsy top level project. That's why whimsy.apache.org is the production server, and mailing lists and a homepage are hosted on the whimsical.apache.org domain.

Whimsy Architecture - Live Instance

Whimsy is run in an Apache hosted VM with httpd, Rack, Ruby, and variety of other tools that directly interface with various parts of Apache organizational records.

Details for each type of deployed tool or script:

  • Static content Changes pushed to GitHub master will be automatically deployed - every commit triggers pygitpubsub to do an update, which may take a few minutes. Note that this includes the contents of scripts and applications too.

  • Repository checkouts/clones An copy of a number of repositories are updated every 10 minutes via a cron job. This is controlled by repository.yml. The whimsy VM is also subscribed to board@ and scans those emails for commit messages and will update the copy of foundation/board when commits happen.

  • CGI scripts any dependencies listed in a Gemfile will automatically be installed. A simple CGI:

    https://github.com/apache/whimsy/blob/master/www/test.cgihttps://whimsy.apache.org/test.cgi

  • Authentication for CGI Scripts See the DEVELOPMENT.md FAQ.

  • Rack applications run under Phusion Passenger under Apache httpd. Again, Gemfiles are used to specify dependencies. In addition to simply checking the application, one line per passenger application needs to be added to the puppet file under passenger: as seen in DEPLOYMENT.md.

    A sample rack application (two empty directories, and a one line file):

    https://github.com/apache/whimsy/tree/master/www/racktest

    https://whimsy.apache.org/racktest

    Authentication requirements will also need to be two phase, like with CGI above; but more common conditions can be handled at the "Rack" level instead of at the application level making use of Rack middleware such as:

    https://github.com/apache/whimsy/blob/master/lib/whimsy/asf/rack.rb#L56

  • Cron jobs are managed by puppet. See deployment for more information.

  • Generated JSON data files are automatically generated into the /public directory, to cache frequently used data for whimsy and other applications. These are usually run from a cron calling a www/roster/public_*.rb file. See also an overview of data dependencies and flow.

  • Data models for many Whimsy tools are in lib/whimsy/asf, and most views for tools are stored in www. Note that Whimsy has a wide variety of sometimes unrelated tools, so not everything here uses the same models.

About

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers

Topics

Resources

Code of conduct

Security policy

Stars

125 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

9,088 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Apache Whimsy Project Overview

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers to access and manipulate data about Apache people, projects, and processes. Whimsy is both an Apache PMC, this codebase, and the live deployed instance of https://whimsy.apache.org/.

The ASF's Whimsy instance hosts static content, repository checkouts/clones, CGI scripts, Rack applications, Node.js applications, tools, and cron jobs. Note: features accessing private ASF data are restricted to committers, Members, or Officers of the ASF.

Every commit pushed to master is deployed within minutes to https://whimsy.apache.org/ using GitPubSub.

How Tos and Get The Code

Whimsy source code is hosted at: https://github.com/apache/whimsy.git and mirrored for Apache committers at: https://gitbox.apache.org/repos/asf/whimsy.git

How To Get Involved!

Since Whimsy hosts many independent tools that make finding or updating information at the ASF simpler, there are plenty of places for Apache committers to get involved. Bugs or improvement suggestions for the many tools available on Whimsy or list of public datafiles are always appreciated, and please join us on the public #whimsy channel on Slack.

If you have an idea for a new Whimsy tool, email us! The PMC supports a rich server environment, so deploying a new tool is as simple as proposing a .cgi with a bit of Ruby code. We also have deployments of Rack and Sinatra apps, and use JavaScript and Wunderbar for most of the UI building in many tools. The Whimsy server also supports direct access to Apache SVN or git repositories, making consuming data simple.

The Whimsy committers are always looking for new ideas to improve processes at Apache, and we can either help you get started or suggest how to approach just about any sort of "find this ASF data and streamline that process" ideas.

Most documentation is in the code or in the repo, and our dev@whimsical mailing list is active. Note that many Whimsy tools access committer- or member-private data, so some tools are access restricted.

Historical note: The live production whimsy.apache.org server was used for the previous board agenda tool and more before we became the Apache Whimsy top level project. That's why whimsy.apache.org is the production server, and mailing lists and a homepage are hosted on the whimsical.apache.org domain.

Whimsy Architecture - Live Instance

Whimsy is run in an Apache hosted VM with httpd, Rack, Ruby, and variety of other tools that directly interface with various parts of Apache organizational records.

Details for each type of deployed tool or script:

  • Static content Changes pushed to GitHub master will be automatically deployed - every commit triggers pygitpubsub to do an update, which may take a few minutes. Note that this includes the contents of scripts and applications too.

  • Repository checkouts/clones An copy of a number of repositories are updated every 10 minutes via a cron job. This is controlled by repository.yml. The whimsy VM is also subscribed to board@ and scans those emails for commit messages and will update the copy of foundation/board when commits happen.

  • CGI scripts any dependencies listed in a Gemfile will automatically be installed. A simple CGI:

    https://github.com/apache/whimsy/blob/master/www/test.cgihttps://whimsy.apache.org/test.cgi

  • Authentication for CGI Scripts See the DEVELOPMENT.md FAQ.

  • Rack applications run under Phusion Passenger under Apache httpd. Again, Gemfiles are used to specify dependencies. In addition to simply checking the application, one line per passenger application needs to be added to the puppet file under passenger: as seen in DEPLOYMENT.md.

    A sample rack application (two empty directories, and a one line file):

    https://github.com/apache/whimsy/tree/master/www/racktest

    https://whimsy.apache.org/racktest

    Authentication requirements will also need to be two phase, like with CGI above; but more common conditions can be handled at the "Rack" level instead of at the application level making use of Rack middleware such as:

    https://github.com/apache/whimsy/blob/master/lib/whimsy/asf/rack.rb#L56

  • Cron jobs are managed by puppet. See deployment for more information.

  • Generated JSON data files are automatically generated into the /public directory, to cache frequently used data for whimsy and other applications. These are usually run from a cron calling a www/roster/public_*.rb file. See also an overview of data dependencies and flow.

  • Data models for many Whimsy tools are in lib/whimsy/asf, and most views for tools are stored in www. Note that Whimsy has a wide variety of sometimes unrelated tools, so not everything here uses the same models.

About

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers

Topics

Resources

Code of conduct

Security policy

Stars

125 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

9,088 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Apache Whimsy Project Overview

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers to access and manipulate data about Apache people, projects, and processes. Whimsy is both an Apache PMC, this codebase, and the live deployed instance of https://whimsy.apache.org/.

The ASF's Whimsy instance hosts static content, repository checkouts/clones, CGI scripts, Rack applications, Node.js applications, tools, and cron jobs. Note: features accessing private ASF data are restricted to committers, Members, or Officers of the ASF.

Every commit pushed to master is deployed within minutes to https://whimsy.apache.org/ using GitPubSub.

How Tos and Get The Code

Whimsy source code is hosted at: https://github.com/apache/whimsy.git and mirrored for Apache committers at: https://gitbox.apache.org/repos/asf/whimsy.git

How To Get Involved!

Since Whimsy hosts many independent tools that make finding or updating information at the ASF simpler, there are plenty of places for Apache committers to get involved. Bugs or improvement suggestions for the many tools available on Whimsy or list of public datafiles are always appreciated, and please join us on the public #whimsy channel on Slack.

If you have an idea for a new Whimsy tool, email us! The PMC supports a rich server environment, so deploying a new tool is as simple as proposing a .cgi with a bit of Ruby code. We also have deployments of Rack and Sinatra apps, and use JavaScript and Wunderbar for most of the UI building in many tools. The Whimsy server also supports direct access to Apache SVN or git repositories, making consuming data simple.

The Whimsy committers are always looking for new ideas to improve processes at Apache, and we can either help you get started or suggest how to approach just about any sort of "find this ASF data and streamline that process" ideas.

Most documentation is in the code or in the repo, and our dev@whimsical mailing list is active. Note that many Whimsy tools access committer- or member-private data, so some tools are access restricted.

Historical note: The live production whimsy.apache.org server was used for the previous board agenda tool and more before we became the Apache Whimsy top level project. That's why whimsy.apache.org is the production server, and mailing lists and a homepage are hosted on the whimsical.apache.org domain.

Whimsy Architecture - Live Instance

Whimsy is run in an Apache hosted VM with httpd, Rack, Ruby, and variety of other tools that directly interface with various parts of Apache organizational records.

Details for each type of deployed tool or script:

  • Static content Changes pushed to GitHub master will be automatically deployed - every commit triggers pygitpubsub to do an update, which may take a few minutes. Note that this includes the contents of scripts and applications too.

  • Repository checkouts/clones An copy of a number of repositories are updated every 10 minutes via a cron job. This is controlled by repository.yml. The whimsy VM is also subscribed to board@ and scans those emails for commit messages and will update the copy of foundation/board when commits happen.

  • CGI scripts any dependencies listed in a Gemfile will automatically be installed. A simple CGI:

    https://github.com/apache/whimsy/blob/master/www/test.cgihttps://whimsy.apache.org/test.cgi

  • Authentication for CGI Scripts See the DEVELOPMENT.md FAQ.

  • Rack applications run under Phusion Passenger under Apache httpd. Again, Gemfiles are used to specify dependencies. In addition to simply checking the application, one line per passenger application needs to be added to the puppet file under passenger: as seen in DEPLOYMENT.md.

    A sample rack application (two empty directories, and a one line file):

    https://github.com/apache/whimsy/tree/master/www/racktest

    https://whimsy.apache.org/racktest

    Authentication requirements will also need to be two phase, like with CGI above; but more common conditions can be handled at the "Rack" level instead of at the application level making use of Rack middleware such as:

    https://github.com/apache/whimsy/blob/master/lib/whimsy/asf/rack.rb#L56

  • Cron jobs are managed by puppet. See deployment for more information.

  • Generated JSON data files are automatically generated into the /public directory, to cache frequently used data for whimsy and other applications. These are usually run from a cron calling a www/roster/public_*.rb file. See also an overview of data dependencies and flow.

  • Data models for many Whimsy tools are in lib/whimsy/asf, and most views for tools are stored in www. Note that Whimsy has a wide variety of sometimes unrelated tools, so not everything here uses the same models.

About

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers

Topics

Resources

Code of conduct

Security policy

Stars

125 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

9,088 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Apache Whimsy Project Overview

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers to access and manipulate data about Apache people, projects, and processes. Whimsy is both an Apache PMC, this codebase, and the live deployed instance of https://whimsy.apache.org/.

The ASF's Whimsy instance hosts static content, repository checkouts/clones, CGI scripts, Rack applications, Node.js applications, tools, and cron jobs. Note: features accessing private ASF data are restricted to committers, Members, or Officers of the ASF.

Every commit pushed to master is deployed within minutes to https://whimsy.apache.org/ using GitPubSub.

How Tos and Get The Code

Whimsy source code is hosted at: https://github.com/apache/whimsy.git and mirrored for Apache committers at: https://gitbox.apache.org/repos/asf/whimsy.git

How To Get Involved!

Since Whimsy hosts many independent tools that make finding or updating information at the ASF simpler, there are plenty of places for Apache committers to get involved. Bugs or improvement suggestions for the many tools available on Whimsy or list of public datafiles are always appreciated, and please join us on the public #whimsy channel on Slack.

If you have an idea for a new Whimsy tool, email us! The PMC supports a rich server environment, so deploying a new tool is as simple as proposing a .cgi with a bit of Ruby code. We also have deployments of Rack and Sinatra apps, and use JavaScript and Wunderbar for most of the UI building in many tools. The Whimsy server also supports direct access to Apache SVN or git repositories, making consuming data simple.

The Whimsy committers are always looking for new ideas to improve processes at Apache, and we can either help you get started or suggest how to approach just about any sort of "find this ASF data and streamline that process" ideas.

Most documentation is in the code or in the repo, and our dev@whimsical mailing list is active. Note that many Whimsy tools access committer- or member-private data, so some tools are access restricted.

Historical note: The live production whimsy.apache.org server was used for the previous board agenda tool and more before we became the Apache Whimsy top level project. That's why whimsy.apache.org is the production server, and mailing lists and a homepage are hosted on the whimsical.apache.org domain.

Whimsy Architecture - Live Instance

Whimsy is run in an Apache hosted VM with httpd, Rack, Ruby, and variety of other tools that directly interface with various parts of Apache organizational records.

Details for each type of deployed tool or script:

  • Static content Changes pushed to GitHub master will be automatically deployed - every commit triggers pygitpubsub to do an update, which may take a few minutes. Note that this includes the contents of scripts and applications too.

  • Repository checkouts/clones An copy of a number of repositories are updated every 10 minutes via a cron job. This is controlled by repository.yml. The whimsy VM is also subscribed to board@ and scans those emails for commit messages and will update the copy of foundation/board when commits happen.

  • CGI scripts any dependencies listed in a Gemfile will automatically be installed. A simple CGI:

    https://github.com/apache/whimsy/blob/master/www/test.cgihttps://whimsy.apache.org/test.cgi

  • Authentication for CGI Scripts See the DEVELOPMENT.md FAQ.

  • Rack applications run under Phusion Passenger under Apache httpd. Again, Gemfiles are used to specify dependencies. In addition to simply checking the application, one line per passenger application needs to be added to the puppet file under passenger: as seen in DEPLOYMENT.md.

    A sample rack application (two empty directories, and a one line file):

    https://github.com/apache/whimsy/tree/master/www/racktest

    https://whimsy.apache.org/racktest

    Authentication requirements will also need to be two phase, like with CGI above; but more common conditions can be handled at the "Rack" level instead of at the application level making use of Rack middleware such as:

    https://github.com/apache/whimsy/blob/master/lib/whimsy/asf/rack.rb#L56

  • Cron jobs are managed by puppet. See deployment for more information.

  • Generated JSON data files are automatically generated into the /public directory, to cache frequently used data for whimsy and other applications. These are usually run from a cron calling a www/roster/public_*.rb file. See also an overview of data dependencies and flow.

  • Data models for many Whimsy tools are in lib/whimsy/asf, and most views for tools are stored in www. Note that Whimsy has a wide variety of sometimes unrelated tools, so not everything here uses the same models.

About

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers

Topics

Resources

Code of conduct

Security policy

Stars

125 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

9,088 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Apache Whimsy Project Overview

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers to access and manipulate data about Apache people, projects, and processes. Whimsy is both an Apache PMC, this codebase, and the live deployed instance of https://whimsy.apache.org/.

The ASF's Whimsy instance hosts static content, repository checkouts/clones, CGI scripts, Rack applications, Node.js applications, tools, and cron jobs. Note: features accessing private ASF data are restricted to committers, Members, or Officers of the ASF.

Every commit pushed to master is deployed within minutes to https://whimsy.apache.org/ using GitPubSub.

How Tos and Get The Code

Whimsy source code is hosted at: https://github.com/apache/whimsy.git and mirrored for Apache committers at: https://gitbox.apache.org/repos/asf/whimsy.git

How To Get Involved!

Since Whimsy hosts many independent tools that make finding or updating information at the ASF simpler, there are plenty of places for Apache committers to get involved. Bugs or improvement suggestions for the many tools available on Whimsy or list of public datafiles are always appreciated, and please join us on the public #whimsy channel on Slack.

If you have an idea for a new Whimsy tool, email us! The PMC supports a rich server environment, so deploying a new tool is as simple as proposing a .cgi with a bit of Ruby code. We also have deployments of Rack and Sinatra apps, and use JavaScript and Wunderbar for most of the UI building in many tools. The Whimsy server also supports direct access to Apache SVN or git repositories, making consuming data simple.

The Whimsy committers are always looking for new ideas to improve processes at Apache, and we can either help you get started or suggest how to approach just about any sort of "find this ASF data and streamline that process" ideas.

Most documentation is in the code or in the repo, and our dev@whimsical mailing list is active. Note that many Whimsy tools access committer- or member-private data, so some tools are access restricted.

Historical note: The live production whimsy.apache.org server was used for the previous board agenda tool and more before we became the Apache Whimsy top level project. That's why whimsy.apache.org is the production server, and mailing lists and a homepage are hosted on the whimsical.apache.org domain.

Whimsy Architecture - Live Instance

Whimsy is run in an Apache hosted VM with httpd, Rack, Ruby, and variety of other tools that directly interface with various parts of Apache organizational records.

Details for each type of deployed tool or script:

  • Static content Changes pushed to GitHub master will be automatically deployed - every commit triggers pygitpubsub to do an update, which may take a few minutes. Note that this includes the contents of scripts and applications too.

  • Repository checkouts/clones An copy of a number of repositories are updated every 10 minutes via a cron job. This is controlled by repository.yml. The whimsy VM is also subscribed to board@ and scans those emails for commit messages and will update the copy of foundation/board when commits happen.

  • CGI scripts any dependencies listed in a Gemfile will automatically be installed. A simple CGI:

    https://github.com/apache/whimsy/blob/master/www/test.cgihttps://whimsy.apache.org/test.cgi

  • Authentication for CGI Scripts See the DEVELOPMENT.md FAQ.

  • Rack applications run under Phusion Passenger under Apache httpd. Again, Gemfiles are used to specify dependencies. In addition to simply checking the application, one line per passenger application needs to be added to the puppet file under passenger: as seen in DEPLOYMENT.md.

    A sample rack application (two empty directories, and a one line file):

    https://github.com/apache/whimsy/tree/master/www/racktest

    https://whimsy.apache.org/racktest

    Authentication requirements will also need to be two phase, like with CGI above; but more common conditions can be handled at the "Rack" level instead of at the application level making use of Rack middleware such as:

    https://github.com/apache/whimsy/blob/master/lib/whimsy/asf/rack.rb#L56

  • Cron jobs are managed by puppet. See deployment for more information.

  • Generated JSON data files are automatically generated into the /public directory, to cache frequently used data for whimsy and other applications. These are usually run from a cron calling a www/roster/public_*.rb file. See also an overview of data dependencies and flow.

  • Data models for many Whimsy tools are in lib/whimsy/asf, and most views for tools are stored in www. Note that Whimsy has a wide variety of sometimes unrelated tools, so not everything here uses the same models.

About

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers

Topics

Resources

Code of conduct

Security policy

Stars

125 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

9,088 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Apache Whimsy Project Overview

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers to access and manipulate data about Apache people, projects, and processes. Whimsy is both an Apache PMC, this codebase, and the live deployed instance of https://whimsy.apache.org/.

The ASF's Whimsy instance hosts static content, repository checkouts/clones, CGI scripts, Rack applications, Node.js applications, tools, and cron jobs. Note: features accessing private ASF data are restricted to committers, Members, or Officers of the ASF.

Every commit pushed to master is deployed within minutes to https://whimsy.apache.org/ using GitPubSub.

How Tos and Get The Code

Whimsy source code is hosted at: https://github.com/apache/whimsy.git and mirrored for Apache committers at: https://gitbox.apache.org/repos/asf/whimsy.git

How To Get Involved!

Since Whimsy hosts many independent tools that make finding or updating information at the ASF simpler, there are plenty of places for Apache committers to get involved. Bugs or improvement suggestions for the many tools available on Whimsy or list of public datafiles are always appreciated, and please join us on the public #whimsy channel on Slack.

If you have an idea for a new Whimsy tool, email us! The PMC supports a rich server environment, so deploying a new tool is as simple as proposing a .cgi with a bit of Ruby code. We also have deployments of Rack and Sinatra apps, and use JavaScript and Wunderbar for most of the UI building in many tools. The Whimsy server also supports direct access to Apache SVN or git repositories, making consuming data simple.

The Whimsy committers are always looking for new ideas to improve processes at Apache, and we can either help you get started or suggest how to approach just about any sort of "find this ASF data and streamline that process" ideas.

Most documentation is in the code or in the repo, and our dev@whimsical mailing list is active. Note that many Whimsy tools access committer- or member-private data, so some tools are access restricted.

Historical note: The live production whimsy.apache.org server was used for the previous board agenda tool and more before we became the Apache Whimsy top level project. That's why whimsy.apache.org is the production server, and mailing lists and a homepage are hosted on the whimsical.apache.org domain.

Whimsy Architecture - Live Instance

Whimsy is run in an Apache hosted VM with httpd, Rack, Ruby, and variety of other tools that directly interface with various parts of Apache organizational records.

Details for each type of deployed tool or script:

  • Static content Changes pushed to GitHub master will be automatically deployed - every commit triggers pygitpubsub to do an update, which may take a few minutes. Note that this includes the contents of scripts and applications too.

  • Repository checkouts/clones An copy of a number of repositories are updated every 10 minutes via a cron job. This is controlled by repository.yml. The whimsy VM is also subscribed to board@ and scans those emails for commit messages and will update the copy of foundation/board when commits happen.

  • CGI scripts any dependencies listed in a Gemfile will automatically be installed. A simple CGI:

    https://github.com/apache/whimsy/blob/master/www/test.cgihttps://whimsy.apache.org/test.cgi

  • Authentication for CGI Scripts See the DEVELOPMENT.md FAQ.

  • Rack applications run under Phusion Passenger under Apache httpd. Again, Gemfiles are used to specify dependencies. In addition to simply checking the application, one line per passenger application needs to be added to the puppet file under passenger: as seen in DEPLOYMENT.md.

    A sample rack application (two empty directories, and a one line file):

    https://github.com/apache/whimsy/tree/master/www/racktest

    https://whimsy.apache.org/racktest

    Authentication requirements will also need to be two phase, like with CGI above; but more common conditions can be handled at the "Rack" level instead of at the application level making use of Rack middleware such as:

    https://github.com/apache/whimsy/blob/master/lib/whimsy/asf/rack.rb#L56

  • Cron jobs are managed by puppet. See deployment for more information.

  • Generated JSON data files are automatically generated into the /public directory, to cache frequently used data for whimsy and other applications. These are usually run from a cron calling a www/roster/public_*.rb file. See also an overview of data dependencies and flow.

  • Data models for many Whimsy tools are in lib/whimsy/asf, and most views for tools are stored in www. Note that Whimsy has a wide variety of sometimes unrelated tools, so not everything here uses the same models.

About

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers

Topics

Resources

Code of conduct

Security policy

Stars

125 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

9,088 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Apache Whimsy Project Overview

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers to access and manipulate data about Apache people, projects, and processes. Whimsy is both an Apache PMC, this codebase, and the live deployed instance of https://whimsy.apache.org/.

The ASF's Whimsy instance hosts static content, repository checkouts/clones, CGI scripts, Rack applications, Node.js applications, tools, and cron jobs. Note: features accessing private ASF data are restricted to committers, Members, or Officers of the ASF.

Every commit pushed to master is deployed within minutes to https://whimsy.apache.org/ using GitPubSub.

How Tos and Get The Code

Whimsy source code is hosted at: https://github.com/apache/whimsy.git and mirrored for Apache committers at: https://gitbox.apache.org/repos/asf/whimsy.git

How To Get Involved!

Since Whimsy hosts many independent tools that make finding or updating information at the ASF simpler, there are plenty of places for Apache committers to get involved. Bugs or improvement suggestions for the many tools available on Whimsy or list of public datafiles are always appreciated, and please join us on the public #whimsy channel on Slack.

If you have an idea for a new Whimsy tool, email us! The PMC supports a rich server environment, so deploying a new tool is as simple as proposing a .cgi with a bit of Ruby code. We also have deployments of Rack and Sinatra apps, and use JavaScript and Wunderbar for most of the UI building in many tools. The Whimsy server also supports direct access to Apache SVN or git repositories, making consuming data simple.

The Whimsy committers are always looking for new ideas to improve processes at Apache, and we can either help you get started or suggest how to approach just about any sort of "find this ASF data and streamline that process" ideas.

Most documentation is in the code or in the repo, and our dev@whimsical mailing list is active. Note that many Whimsy tools access committer- or member-private data, so some tools are access restricted.

Historical note: The live production whimsy.apache.org server was used for the previous board agenda tool and more before we became the Apache Whimsy top level project. That's why whimsy.apache.org is the production server, and mailing lists and a homepage are hosted on the whimsical.apache.org domain.

Whimsy Architecture - Live Instance

Whimsy is run in an Apache hosted VM with httpd, Rack, Ruby, and variety of other tools that directly interface with various parts of Apache organizational records.

Details for each type of deployed tool or script:

  • Static content Changes pushed to GitHub master will be automatically deployed - every commit triggers pygitpubsub to do an update, which may take a few minutes. Note that this includes the contents of scripts and applications too.

  • Repository checkouts/clones An copy of a number of repositories are updated every 10 minutes via a cron job. This is controlled by repository.yml. The whimsy VM is also subscribed to board@ and scans those emails for commit messages and will update the copy of foundation/board when commits happen.

  • CGI scripts any dependencies listed in a Gemfile will automatically be installed. A simple CGI:

    https://github.com/apache/whimsy/blob/master/www/test.cgihttps://whimsy.apache.org/test.cgi

  • Authentication for CGI Scripts See the DEVELOPMENT.md FAQ.

  • Rack applications run under Phusion Passenger under Apache httpd. Again, Gemfiles are used to specify dependencies. In addition to simply checking the application, one line per passenger application needs to be added to the puppet file under passenger: as seen in DEPLOYMENT.md.

    A sample rack application (two empty directories, and a one line file):

    https://github.com/apache/whimsy/tree/master/www/racktest

    https://whimsy.apache.org/racktest

    Authentication requirements will also need to be two phase, like with CGI above; but more common conditions can be handled at the "Rack" level instead of at the application level making use of Rack middleware such as:

    https://github.com/apache/whimsy/blob/master/lib/whimsy/asf/rack.rb#L56

  • Cron jobs are managed by puppet. See deployment for more information.

  • Generated JSON data files are automatically generated into the /public directory, to cache frequently used data for whimsy and other applications. These are usually run from a cron calling a www/roster/public_*.rb file. See also an overview of data dependencies and flow.

  • Data models for many Whimsy tools are in lib/whimsy/asf, and most views for tools are stored in www. Note that Whimsy has a wide variety of sometimes unrelated tools, so not everything here uses the same models.

About

Apache Whimsy is a collection of useful organizational tools used by the ASF and Apache committers

Topics

Resources

Code of conduct

Security policy

Stars

125 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages