{"id":16163316,"url":"https://github.com/germanysources/fosswaresearch","last_synced_at":"2026-01-21T21:32:34.535Z","repository":{"id":55514838,"uuid":"153909223","full_name":"germanysources/FOSSwareSearch","owner":"germanysources","description":"Search engine for free and open source software on github, gitlab and other hosting services.","archived":false,"fork":false,"pushed_at":"2022-11-16T02:35:07.000Z","size":12955,"stargazers_count":1,"open_issues_count":4,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T18:35:29.714Z","etag":null,"topics":["github-api","gitlab-api","searching","sql"],"latest_commit_sha":null,"homepage":"https://germanysources.github.io/FOSSwareSearch","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/germanysources.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-20T13:37:42.000Z","updated_at":"2021-04-14T13:36:04.000Z","dependencies_parsed_at":"2023-01-21T19:00:19.697Z","dependency_job_id":null,"html_url":"https://github.com/germanysources/FOSSwareSearch","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/germanysources/FOSSwareSearch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/germanysources%2FFOSSwareSearch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/germanysources%2FFOSSwareSearch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/germanysources%2FFOSSwareSearch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/germanysources%2FFOSSwareSearch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/germanysources","download_url":"https://codeload.github.com/germanysources/FOSSwareSearch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/germanysources%2FFOSSwareSearch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28644055,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-api","gitlab-api","searching","sql"],"created_at":"2024-10-10T02:35:15.500Z","updated_at":"2026-01-21T21:32:34.520Z","avatar_url":"https://github.com/germanysources.png","language":"Java","readme":"# Free and open source software search engine #\n\u003cimg\nsrc=\"https://raw.githubusercontent.com/germanysources/FOSSwareSearch/master/docs/logo.png\" alt=\"logo\"\u003e\n\n## Idea ##\nThis application should help us to find open source projects and software repositories.\nIt is constructed for people how like the command line more than a complex UI.\nInstead of a algorithm choosing the best match for us, \nwe can decide actively which is the best match for our search.\nFor this purpose the search results are put in an [sqlite](https://sqlite.org/features.html) inmemory database.\nThis inmemory database gives us all the features of a RDBMS without a complex setup process.\n\n## Design Approach ##\nIt should use the search api of the hosting provider, if such a api\nexists. It should handle different hosting providers.\nThe search scope are projects, not issues or questions.\n\n## Definitions ##\n* The service www.github.com is called just github\n* The service www.gitlab.com is called just gitlab\n* Query without the prefix sql stands for the search term, we send to the hosting provider like github or gitlab.\n\n## Hosting provider ##\nThe search api from github and from gitlab are included. \nFor github we don't need an authorization token. For gitlab we need a personal\naccess token, which we create in your user profile.\n\n## Installation ##\nThe releases can be found at this repository. Since version 1.1.0 the zip\narchive FOSSwareSearch-{v}.zip is contained in the release package.\nThe zip archive doesn't contain the dependencies, instead of they are downloaded\nfrom the [central maven repository](https://mvnrepository.com). For installation\n[maven](maven.apache.org) is needed.\n\n### Installation steps: ###\n* extract the contents from the zip file in a new directory\n* run ```python Install.py``` (downloads the dependencies)\n* now you can run the application ```python fosss.py [searchTerm]```\n\nThere are 2 python scripts for running the application. ```runMain.py``` is\nonly included in the source package. It is supposed to run the application after\ncompiling it. ```fosss.py``` is supposed to run the released application.\n\n## User interface ##\nA command line interface is included. Before open the program we supplie\nthe search term (for example we want to know where the source code of a repository called curl is):\n```\npython fosss.py curl in:name\n```\nThe output will be:\n```\nFound 5 repositories. Filter or order them with your sql statement.\nsql\u003e\n```\nNow we can type in a sql query (for example order after stars and only with\nlanguage c or c++):\n```\nsql\u003eselect * from Repositories where planguage in ('C', 'C++') order by star_count asc view block\n```\nThe view block is a special extension for the output. See chapter sql\nsyntax. The output looks like this:\n```\n--------------------------------------------------------------------------------\n\nhttps://github.com/curl/curl\n\nA command line tool and library for transferring data with URL syntax, supporting HTTP, HTTPS, FTP, FTPS, GOPHER, TFTP, SCP, SFTP, SMB, TELNET, DICT, LDAP, LDAPS, FILE, IMAP, SMTP, POP3, RTSP and RTMP. libcurl offers a myriad of powerful features\n[c] [client] [curl] [ftp] [http] [https] [ldap] [libcurl] [library] [transfer-data] [user-agent]\nlicense_key             other\nlicense_description     Other\nplanguage               C\nhomepage                https://curl.haxx.se/\nstar_count              10828\nforks_count             2589\nlast_activity           21.10.2018\ncreated_at              18.03.2010\nopen_issues             62\nscore                   158\nsql\u003e\n```\nFirst the html url is shown, afterwards the description and the topics (if they exists).\n\nWe typed ```select * from Repositories```, so all properties are shown for\nthis repository.\n\nAfter the executing the sql query, we can type the next sql query or the command ```exit``` to quit the application.\n\n## Proxy settings ##\nThe proxy settings are coming from Java virtual machine proxy settings (see https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html#Proxies). \nSet them in the file $JAVA_HOME/lib/net.properties or supply them to the python-bootstrap-scripts (`fosss.py` or `runMain.py`).\n\n## SQL Syntax ##\nThe complete syntax of [sqlite](www.sqlite.org) is supported.\n\nFor output there is the non-sql extension ```view block```. It displays each\nrepository as a block. If we omit ```view block```, we can see the\nrepositories in a tabular view.\n\n### Non SQL statements ###\nFor fetching more results from github:\n```\nfetch X rows from github\n```\nIt means, we want to attach X (an integer value) search results to the\ndatabase. Not all search results are put immediately into the database. For\nexample only the first 20 results are put into the database. If we need more\nresults, we can type this command.\n\nFor fetching results from gitlab:\n```\nfetch rows from gitlab\n```\nThe gitlab search api loads all results with one api call. We can't split the\nresults into smaller packages.\n\nFor changing the search query(which is send to github or gitlab):\n```\nnew search [query]\n```\n[query] should be replaced by your query. Now the inmemory database is\nrefreshed with results of this new query.\n\n\n### Quit ###\nExit the application with ```exit``` command.\n\n## Database Scheme ##\nIn the table Repositories the repositories are stored with the following\nproperties:\n* html_url (for example https://github.com/curl/curl)\n* description Project description (string)\n* license_key (string)\n* license_description (string)\n* planguage main programming language (string)\n* homepage (string)\n* star_count (integer)\n* forks_count (integer)\n* last_activity (datetime format)\n* created_at (datetime format)\n* open_issues (integer)\n* score The score which github give to this repository (integer)\n\nThe topics are stored in the table RepositoryTopics. This table has just 2 key\nfields:\n* html_url (foreign key to Repositories.html_url)\n* topic (string)\n\n## Configuration ##\nThe configuration is saved in the file config.json (as can be seen in the javascript object notation).\nHere we can control the following parameters.\n\n### For searching with github: ###\n* **maxNoResults**: The numbers of results, that are put into database after\nexecuting the search query. If more results are available, we can fetch them\nextra. This is also the number of results, which are fetched from one api\ncall. If we choose here 500, everytime 500 search results are fetched, if\navailable. It's recommended to choose a little number like 10 or 20.\n\n* **FavoriteAdditions**: Here we can attach to the search term a suffix (for\n example ```language:C++```, if we only interested in C++\n programms). [At](https://help.github.com/articles/searching-for-repositories/)\n we can take a look at the syntax for this parameter.\n\n### For searching with gitlab: ###\n* **GitLabToken**: The personal access token. If we don't want to hard code it\ninto the config file, we can supplie it with the ```-t``` option while\nstarting the application.\n\n### For all hosting providers: ###\n* **HostingProvider**: An array, which hosting providers are used. Each hosting\n    provider has a unique key (1 stands for github.com, 2 stands for gitlab.com).\n* **InitialSQLQuery**: The sql query, which is executed after we received the\nresults from the hosting providers.\n\n### SQLite\nThe sqlite-driver needs a temporary-directory. If the folder /tmp is not\nwriteable, you can use the enviroment-variable ```ORG_SQLITE_TMPDIR``` to set\nan other tmporary-directory.\n\n## Build ##\n### Dependencies ###\nMaven is used for building the java part.\nAll dependencies are available in the central maven repository.\n\n### C part ###\nThe application contains a short native c part. This must be build extra with\nthe python script\n[make.py](https://github.com/germanysources/FOSSwareSearch/blob/master/make.py). The\npython script should compile, if gcc is installed.\n#### Compile for 64-bit ####\n`python make.py -m64`\n\n## Notes ##\nThis application uses preview features from the [github api v3](https://developer.github.com/v3/). This preview\nfeatures can be changed without any notice. So we don't have a forerun to change the\napplication, if the preview features are changing.\n\n## System/Library requirements ##\nThe application was tested on jre 8. The binaries are compiled for jre 8.\n\n## Contributing ##\nContributions are welcome. If you know an open source hosting provider, which\ncan be included in this application, you are welcome the integrate this\nprovider in the application.\nFor further information see [CONTRIBUTING.md](https://github.com/germanysources/FOSSwareSearch/blob/master/CONTRIBUTING.md).\n\n## Need help or have feedback? ##\n* Open an issue in the\n[issue tracker](https://github.com/germanysources/FOSSwareSearch/issues) for this repository\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgermanysources%2Ffosswaresearch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgermanysources%2Ffosswaresearch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgermanysources%2Ffosswaresearch/lists"}