Skip to content
This repository has been archived by the owner on Oct 15, 2022. It is now read-only.

Commit

Permalink
update readme and add faq
Browse files Browse the repository at this point in the history
  • Loading branch information
hunterlang committed Feb 14, 2013
1 parent 679073c commit df96f60
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 2 deletions.
41 changes: 41 additions & 0 deletions FAQ.md
@@ -0,0 +1,41 @@
FAQ
===
## Can you help me?

Of course! Here are the easiest ways to contact someone who can help answer your questions:

* Join us on IRC at [#duckduckgo on Freenode](http://webchat.freenode.net/?channels=duckduckgo).
* Write the [discussion list](https://www.listbox.com/subscribe/?list_id=197814).
* Write us privately at open@duckduckgo.com.

### What if I don't know Perl?
If you don't know Perl, that's OK! Several <a href="https://github.com/duckduckgo/duckduckgo/Readme.md#overview">plugin types</a> are not in Perl. Also, if you know PHP, Ruby, or Python you should be able to write Goodies in Perl pretty easily using [this awesome cheat sheet](http://hyperpolyglot.org/scripting).

### Do you have any plugin ideas?
Yup! We maintain [a growing list](http://ideas.duckduckhack.com/). There are also improvement ideas for [Goodies](https://github.com/duckduckgo/zeroclickinfo-goodies/issues), [Spice](https://github.com/duckduckgo/zeroclickinfo-spice/issues), [Fathead](https://github.com/duckduckgo/zeroclickinfo-fathead/issues) and [Longtail](https://github.com/duckduckgo/zeroclickinfo-longtail/issues).

### How do I note that I've started on something?
In your initial pull request, please note the link on the [idea list](http://ideas.duckduckhack.com/). We'll move it to the "in process" bucket for you.

### Where I can report plugin bugs?
Submit GitHub issues in the [appropriate repo](http://github.com/duckduckgo).

### What if there are plugin conflicts?
The ultimate arbiter is the user, and that's the perspective we take. In other words, we ask "what is best for the user experience?" That said, it often makes sense to combine ideas into one, better plugin.

### Can I do something more complicated?
Maybe. There are a bunch more internal interfaces we haven't exposed yet, and we'd love to hear your ideas to influence that roadmap.

### What's the roadmap?
Here's what we're working on (in roughly in this order):

* better testing/file structure for spice plugins.
* better JS interface for spice plugin callback functions.
* better attribution.
* embedding plugins.
* better testing/file structure for fathead plugins.
* more defined structure for longtail plugins.
* better testing for longtail plugins.


**Are there other open source projects?** &nbsp;Yes! Check out the repositories in [our GitHub account](https://github.com/duckduckgo). You can email open@duckduckgo.com if you have any questions on those.
2 changes: 0 additions & 2 deletions README

This file was deleted.

75 changes: 75 additions & 0 deletions README.md
@@ -0,0 +1,75 @@
What is this?
===========
[DuckDuckGo](https://duckduckgo.com/) is a general purpose search engine. We've created a platform called DuckDuckHack that enables developers to write open source plugins on top of the search engine (like [add-ons for Firefox](https://addons.mozilla.org/en-US/firefox/addon/duckduckgo-ssl/?src=search)). DuckDuckGo plugins react to search queries and provide [useful](https://duckduckgo.com/?q=%40duckduckgo) [instant](https://duckduckgo.com/?q=roman+xvi) [answers](https://duckduckgo.com/?q=private+ips) above traditional links.

DuckDuckHack is very much a work in progress. Some plugin types have better interfaces than others. We will be improving the platform based on [your feedback](https://fiesta.cc/~duckduckhack).

This site will always have the latest platform information.

* For new plugins, follow [@duckduckhack](https://twitter.com/duckduckhack)
* For ongoing discussion: [DuckDuckHack list](https://www.listbox.com/subscribe/?list_id=197814)


Why should I make plugins?
===
We hope you will consider making DuckDuckGo plugins to:

* Improve results in areas you personally search and care about, e.g. [programming documentation](https://duckduckgo.com/?q=perl+split), [gaming](https://duckduckgo.com/?q=roll+3d12+%2B+4) or [entertainment](https://duckduckgo.com/?q=xkcd).
* Increase usage of your own projects, e.g. data and [APIs](https://duckduckgo.com/?q=cost+of+living+nyc+philadelphia).
* Learn something new.
* Attribution [on our site](https://duckduckgo.com/goodies.html) and [Twitter](https://twitter.com/duckduckhack) (working on more).
* See your code live on a [growing](https://duckduckgo.com/traffic.html) search engine!

Overview
====
There are currently four types of DuckDuckGo plugins:

### Goodies &mdash; calculations and cheat sheets.

* Examples: [reverse](https://duckduckgo.com/?q=reverse+test), [private ips](https://duckduckgo.com/?q=private+ip), [dice](https://duckduckgo.com/?q=throw+5+dice), [roman](https://duckduckgo.com/?q=roman+cvi), [passphrase](https://duckduckgo.com/?q=passphrase+4+words), [etc.](https://github.com/duckduckgo/zeroclickinfo-goodies/tree/master/lib/DDG/Goodie)
* Status: v1!
* Language: Perl
* Involves: processing the search query.

### Spice &mdash; external API calls.

* Examples: [xkcd](https://duckduckgo.com/?q=xkcd), [alternative to](https://duckduckgo.com/?q=alternative+to+picasa), [twitter](https://duckduckgo.com/?q=%40duckduckgo), [wordnik](https://duckduckgo.com/?q=random+word+3-5), [expatistan](https://duckduckgo.com/?q=cost+of+living+nyc+philadelphia), [etc.](https://github.com/duckduckgo/zeroclickinfo-spice/tree/master/lib/DDG/Spice)
* Status: v1 release candidate
* Language: JavaScript
* Involves: processing data from APIs.

### Fathead &mdash; keyword databases.

* Examples: [git](https://duckduckgo.com/?q=git+branch), [perl](https://duckduckgo.com/?q=perl+split), [final fantasy](http://duckduckgo.com/?q=gippal), [emoticons](http://duckduckgo.com/?q=%28%3E_%3C%29), [http](http://duckduckgo.com/?q=http+304), [etc.](https://github.com/duckduckgo/zeroclickinfo-fathead)
* Status: alpha
* Languages: Perl, Node, Ruby, Python (maybe others)
* Involves: generating information about specific queries.

### Longtail &mdash; full-text data.

* Examples: [wikipedia](https://duckduckgo.com/?q=snow+albedo), [lyrics](https://duckduckgo.com/?q=what%27s+my+age+again+lyrics), [stack overflow](https://duckduckgo.com/?q=nginx+apache), [etc.](https://github.com/duckduckgo/zeroclickinfo-longtail)
* Status: alpha
* Languages: Perl, Node, Ruby, Python (maybe others)
* Involves: formatting data sets to answer general queries.


Getting Started
===

**Step 1.** &nbsp;Decide what you want to work on. If you don't have any ideas, [start here](http://ideas.duckduckhack.com/).

**Step 2.** &nbsp;Figure out your plugin type (see Plugin Types above). If the right type is not obvious, please <a href="FAQ.md">ask us</a>. Sometimes multiple plugin types could work, and we can help you figure out which one would work best.

**Step 3.** &nbsp;Fork the right repository ([GitHub instructions](http://help.github.com/fork-a-repo/)):

* [Goodies](https://github.com/duckduckgo/zeroclickinfo-goodies) (Perl functions)
* [Spice](https://github.com/duckduckgo/zeroclickinfo-spice) (JavaScript functions)
* [Fathead](https://github.com/duckduckgo/zeroclickinfo-fathead) (Keyword data)
* [Longtail](https://github.com/duckduckgo/zeroclickinfo-longtail) (Full-text data)

**Step 4.** &nbsp;Now it's choose-your-own-adventure time!

* For **Goodies** or **Spice**, proceed to the [Basic tutorial](https://github.com/duckduckgo/zeroclickinfo-goodies) in the Goodies repository.

* For **Fathead**, check out the Readme in the [fathead repository](https://github.com/duckduckgo/zeroclickinfo-fathead).
* For **Longtail**, check out the Readme in the [longtail repository](https://github.com/duckduckgo/zeroclickinfo-longtail).

0 comments on commit df96f60

Please sign in to comment.