All projects on Ohloh are automatically updated on a rotating basis. Most projects on Ohloh are updated every 48 hours, but we are occasionally slower than this. Our server farm prioritizes new projects over updates to existing ones, so during heavy traffic periods we may fall behind on updates.
A chart of our update progress and more detailed explanation can be found on the status page.
If you are looking for support for updating your enlistment, please review the question below on what to do if Ohloh fails to download your project’s source code, or contact us on the forums
Although the number of computer languages supported by Ohloh is growing rapidly, there are always more languages to be implemented.
Languages are indentified and analyzed by Ohcount, an open source line counting application. The source code and bug tracker are available at the Ohcount GitHub repository. We happily accept source code patches to add support for new languages.
Every edit to Ohloh is recorded in the Edit History, and you can undo any change.
From the main project page on Ohloh, click the Edit History link in the left sidebar. This will take you to the list of all edits made to this project.
The very oldest edit to the project will be the “Project created” item. Click UNDO on this item to remove the project from Ohloh.
Ohloh Code is a free public code search engine for 10+ billion lines of open source code.
The Ohloh Code search database is populated and updated from a new, automated integration with Ohloh’s project list. We’ve rebuilt the code search engine (also available for private code search: www.blackducksoftware.com/code-sight). We’ve migrated the entire code base from .NET to Java (our team’s language of choice).
We’ve enhanced the technology along the way, including:
- Scalability for indexing and searching 10+ BLOCs
- Self-service project code additions and updates through user input on Ohloh.net
- Support for multiple code locations per project
- De-duplication of identical files in a project, with pointers to multiple occurrences of a file across branches or versions
- Filtering/faceting of search results
- Smoother UI design for search users
- Syntax highlighting for 10 new languages (43 total) including user requests for XML, OCaml, Haskell, F#
- Improved ranking of search results with relevant snippets for the matched files
- Other user requests, including preservation of the underscore in search queries
Ohloh (ohloh.net) and Ohloh Code (code.ohloh.net) are the cornerstones of our vision to create the most comprehensive and free resource for developers to find and explore open source projects and code.
All of this this will be a leap forward for the site, but we know that there is more we need to do. We will continue to invest in improving the site, addressing the shortcomings we are aware of and further improving and enhancing the search experience to meet your needs. Please use our Forums or Meta>Support to submit your feedback. Thank you!
Ohloh Code provides various ways to restrict or expand search results by using special operators on your search terms, including:
· Search for phrases
You can search for phrases such as “public event” by enclosing the search term in double quotes.
When using CamelCase, the terms are queried as separate terms. To search as a single term, keep everything lowercase — foreachtag.
· Class Definitions
Search for classes whose name contains <search term>.
For example, searching for ‘cdef:parser’ will return files with class names containing ‘parser’.
· Method Definitions
Search for methods whose name contains <search term>
For example, searching for ‘mdef:insert’ will return files with method names containing ‘insert’
· Interface Definitions
Search for interfaces whose name contains <search term>
For example, searching for ‘idef:configuration’ will return files with interface names containing ‘configuration’.
· Compound Definitions
Search for classes named ‘tree’ with a method named ‘insert’
For example, searching for ‘cdef:tree mdef:insert’ will return files with classes named ‘tree’ with a method named ‘insert’
· Search Syntax
Note: With the exception of CamelCase, searches are case-insensitive. Searching for ‘Xml’ is the same as searching for ‘XML’ is the same as search for ‘xML’ etc.
· Example Searches
- <search terms> within files and file names.<search terms>sort
- Classes whose names contain <search terms>cdef:<search terms>cdef:tree
- Functions whose names contain<search terms>fndef:<search terms>fndef:main
- Interfaces whose names contain <search terms>idef:<search terms>idef:tree
- Methods whose names contain <search terms>mdef:<search terms>mdef:compute
- Structures whose names contain <search terms>sdef:<search terms>sdef:rect
- Files with exact matches to text between quotes“<search terms>”“lock thread”
- Compound searchescdef:util mdef:unzip
- Other operators:
- ctor: Constructor definitions
- edef: Enum definitions
- ctordec: Constructor declarations
- fdef: Field definitions
- dtor: Destructor definitions
- odef: Object definitions
- dtordec: Destructor declarations
- tdef: Type definitions
- fndec: Function declarations
- udef: Union definitions
- mdec: Method declarations
Note: Ohloh Code does not, at this time, support regular expressions. That said, we are currently underway with a number of important improvements to both the data and features in Ohloh Code, so we would like to hear from you with some examples of the queries that you submit in the regex realm and what results you’d like to see returned so that we can best provide the related functionality and nice ranking around those results. Please visit the Ohloh forum. Thank you!
Ohloh Code indexes all text files for search.
Ohloh Code has additional syntax-highlighting for 43 programming languages:
- Classic Basic
- DOS batch script
- DTX for TeX/LaTeX
- Emacs Lisp
- Fortran (Fixed-format)
- Fortran (Free-format)
- Objective Caml
- OpenGL Shading
- shell script
- Structured Basic
- Vim Script
- Visual Basic
- XML Schema
- XSL Transformation
We are using the Ohloh.net project list for populating projects. If your project, its metadata, and its code are specified on Ohloh, then it will be added to the queue for addition to Ohloh Code.
Internet search engines are not “code-knowledgeable”, and also include the noise of non-code results.
Ohloh Code allows you to search or filter specifically for class, method, and interface definitions. Ohloh Code also provides syntax-highlighting and further project code browsing for better understanding of a particular open source file or project.
Black Duck Code Search IDE plug-ins are available for Eclipse and Microsoft Visual Studio, in addition to browser plug-ins for Firefox and Chrome. These plug-ins will enable you to search the billions of lines of open source code published on code.ohloh.net in addition to any code that you have indexed using Black Duck Code Sight. Download plugins here.
Ohloh supports Subversion, Git, CVS, Mercurial, and Bazaar.
More systems may be added in the future if there is enough demand, so email us if your favorite system is not supported. In the meantime, you may be able to use a conversion tool to create a mirror of your repository that Ohloh can process.
We constantly monitor our system for failed downloads, so usually you don’t need to do anything. However, if the download process remains stuck for a day or two, there may be some special issues we’ll need to look at. Please contact us on the forums and we’ll investigate the enlistment.
Please resist the temptation to add the same repository again. It will almost certainly fail again, and may complicate the original download.
Common causes of failed downloads:
* The source control server timed out, or there were network issues. Downloading the entire history of a project can take a long time, and many source control servers can be unreliable. This is by far the most frequent cause of failure.
* The CVS server does not support the “rlog” command. This is required by our system.
* The Subversion server does not support the “info” command. This is required by our system.
* The Subversion repository is corrupted, or someone actually checked a hidden .svn folder into the repository. We can usually work around this issue by skipping over the revisions which are corrupted; let us know if this is the case in your repository.
Not directly. Our system does more than analyze a snapshot of the code. We examine the full history of all changes to the code, and attribute each one to an individual contributor. A simple tarball of the source code doesn’t contain this history.
All is not lost, however. If you insist on working around this, you could simply push your code into a repository, then upload it to Ohloh. This can be done fairly easily. You could use a free online forge service, or perhaps the easiest workaround is to import the project into a local Git repository and then open access to it so that Ohloh can upload it. You can find Git here.
If it’s possible, the best solution is to import all of the history from the old repository into the new repository, preserving a continuous timeline of ongoing development.
If you can’t do this, Ohloh does support multiple repositories per project. In this case, all of the activity from both repositories will be combined to make a single report. However, this doesn’t usually work out well because the old repository still contains a full copy of the code even though it has been duplicated in the new repository. This results in the project showing twice the actual number of lines of code. Unfortunately, Ohloh doesn’t have any current solution to this problem.
An alternative solution is to create a separate project for each repository and label them accordingly (for example, “My Project 1.0″ and “My Project 2.0″).
Yes. If some developers on a project have used different name spellings in the source control system, you can combine these names together using contributor aliases. To create aliases,
- Open the “Edit” tab of the project page, and click the “Aliases” sub-menu. This might take you to http://www.ohloh.net/projects/3692/aliases if your project were 3692.
- Click the “add a new alias” button.
- Pick a name you previously used from the first drop-down, then choose the name you prefer from the second drop-down (the one you already claimed most likely).
If you have more than 2 contributions, you may need to repeat this.
A contributor alias applies to all of the repositories in a single project. This feature cannot be used to combine statistics from more than one project.
Avatar images on Ohloh are provided by Gravatar, a service which allows you to use a single avatar image across all Gravatar-enabled web sites. Sign up for a free Gravatar account to associate your email address with an avatar image.
Go to your profile page by clicking the “My Profile” button on the top of your browser. Now click the Edit tab and then the Change Password link.
Your kudos are not lost, they are merely not visible until the next nightly update.
All new accounts on Ohloh are assigned a default KudoRank of 1. Ohloh recalculates kudo scores only once each day. If you take actions that will change your KudoRank, you will not see the change until after the daily update.
For example, there may already be some kudos associated with some code you wrote for a project. If you associate this code with your Ohloh account, it may take 24 hours before these kudos are transfered to your account. During this time, the project report and your account page will both show your existing account KudoRank, which is only 1 if your account is new.
I contributed to a project under two names but Ohloh won’t let me claim the second name. Do you support this?
Yes. Confusingly, you have to use the alias feature.
What goes into your stack is completely up to you. Add any open source projects you use: tools, libraries, frameworks, etc.
There are three ways:
1. From the main page of a project, e.g. Subversion, click on I USE THIS in the Users area:
You’ll now be able to pick the stack to add the project to, or can pick to create a new stack with this project.
- From your stacks page, you can navigate to one of your stacks. The Recommendations panel will pick projects you’re likely to find interesting. Click I USE IT on any suggestion you like:
- Also on the same page, you can also directly add a project using Add Project.
A stack is the set of programs that are combined to create a software system. The most common example of a stack is LAMP (Linux, Apache, MySQL, and PHP/Perl/Python). On Ohloh, a stack is a collection of all the open source projects you use.
Your stacks page has a New Stack button on the top right. Click it and you have a new stack. Change the stack name and description by clicking on them and typing.
Consider creating a different stack for each software system you develop, maintain, use. For instance, your database server likely runs a stack that is quite different from your development machine which might be quite different from your webserver. Some other stacks: Home, Gaming. Add whatever you want.
Ohloh now counts the number of people who use a project, rather than number of stacks. Including a project in multiple stacks will not increase it’s User count.
Ask your users to come to Ohloh, register for an account and stack your project. This increases your User count and makes your project more appealing to potential users.
Ohloh has stack widgets that you can embed. Click Embed on the stacks or an individual stack page to get started.
Here’s a sample:
It might be because the page is being rendered by IE6 in quirks mode. If you have control of the page, you can fix this by adding a xhtml preamble, e.g.:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
We test Ohloh.net in the following operating systems and browser versions. We assume a minimum screen resolution of 1024 x 768 px
- Chrome (Only the currently supported release version)
- Firefox (Latest auto-updated version)
Windows 7 and Windows 8
- IE 9, IE 10 and later
- Chrome (above version(s))
- Firefox (above version(s))
- Chrome (above version(s))
- Safari (Versions 5.x and 6.x and later)
- Firefox (above version(s))