[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7973":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":14,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":27,"discoverSource":28},7973,"sharetribe","sharetribe\u002Fsharetribe","Sharetribe Go is Sharetribe's old source-available marketplace software, which was also available as a hosted SaaS product. Sharetribe Go is no longer actively maintained.","https:\u002F\u002Fwww.sharetribe.com",null,"Ruby",2445,1327,164,2,0,1,62.07,"Other",false,"master",[22,23],"marketplace","platform","2026-06-12 04:00:36","# Sharetribe Go\n\n[![CircleCI](https:\u002F\u002Fcircleci.com\u002Fgh\u002Fsharetribe\u002Fsharetribe\u002Ftree\u002Fmaster.svg?style=svg)](https:\u002F\u002Fcircleci.com\u002Fgh\u002Fsharetribe\u002Fsharetribe\u002Ftree\u002Fmaster) [![Code Climate](https:\u002F\u002Fcodeclimate.com\u002Fgithub\u002Fsharetribe\u002Fsharetribe.png)](https:\u002F\u002Fcodeclimate.com\u002Fgithub\u002Fsharetribe\u002Fsharetribe)\n\n**IMPORTANT: Sharetribe Go is no longer actively maintained.**\n\nSharetribe's new marketplace builder, The New Sharetribe, replaces Sharetribe Go as the easiest, fastest way to build a marketplace. Learn more about [what The New Sharetribe means for Sharetribe Go](https:\u002F\u002Fwww.sharetribe.com\u002Ffrom-go-to-new-sharetribe).\n\nSharetribe Go remains source-available under the Sharetribe Community Public License.\n\nTo build and launch a marketplace without writing a single line of code, and extend indefinitely with custom code and scale to any size, head to the SaaS version of [The New Sharetribe](https:\u002F\u002Fwww.sharetribe.com).\n\n\n## Contents\n\n- [Technology stack](#technology-stack)\n- [Installation](#installation)\n- [Payments](#payments)\n- [Custom Landing Page](#custom-landing-page)\n- [Versioning](#versioning)\n- [Changes](#changes)\n- [Upgrade](#upgrade)\n- [Contribute](#contribute)\n- [Release](#release)\n- [Translation](#translation)\n- [Bug tracker](#bug-tracker)\n- [Documentation](#documentation)\n- [License](#license)\n\n## Technology stack\n\n- Ruby 3.4.8\n- Ruby on Rails 8.1.2\n- MySQL 8.4\n- React + jQuery\n- Node.js 18.16 (for compiling JavaScript assets)\n- \"what you see is what you get\" Editor [Mercury](http:\u002F\u002Fjejacks0n.github.io\u002Fmercury\u002F)\n- Deploy: Custom Script (not using Mina or Cap3)\n- Server: Heroku\n- Image hosting: Amazon S3\n- Background job: [delayed_job](https:\u002F\u002Fgithub.com\u002Fcollectiveidea\u002Fdelayed_job)\n- Gems:\n    -  [devise](https:\u002F\u002Fgithub.com\u002Fplataformatec\u002Fdevise) | Authentication\n    -  [omniauth-facebook](https:\u002F\u002Fgithub.com\u002Fmkdynamic\u002Fomniauth-facebook) | Third party login: Facebook\n    -  [haml](https:\u002F\u002Fgithub.com\u002Fhaml\u002Fhaml) and ERB | HTML templating\n    -  [mysql2](https:\u002F\u002Fgithub.com\u002Fbrianmario\u002Fmysql2) | MySQL library for Ruby\n    -  [paperclip](https:\u002F\u002Fgithub.com\u002Fthoughtbot\u002Fpaperclip) | Image upload management\n    -  [passenger](https:\u002F\u002Fgithub.com\u002Fphusion\u002Fpassenger) | Web application server\n    -  [react_on_rails](https:\u002F\u002Fgithub.com\u002Fshakacode\u002Freact_on_rails) | Integration of React + Webpack + Rails\n    -  factory_bot, capybara, rspec-rails, cucumber-rails, selenium-webdriver | Testing\n\n## Installation\n\n### Requirements\n\nBefore you get started, install the following:\n  * **Ruby**. See the version currently used above. We don't guarantee everything works with other versions. If you need multiple versions of Ruby, [RVM](https:\u002F\u002Frvm.io\u002F\u002F) or [rbenv](https:\u002F\u002Fgithub.com\u002Frbenv\u002Frbenv) is recommended.\n  * [**RubyGems**](http:\u002F\u002Frubygems.org\u002F)\n  * **Bundler**: `gem install bundler`\n  * **Node**. See the version currently used above. We don't guarantee everything works with other versions. If you need multiple versions of Node, consider using [n](https:\u002F\u002Fgithub.com\u002Ftj\u002Fn), [nvm](https:\u002F\u002Fgithub.com\u002Fcreationix\u002Fnvm), or [nenv](https:\u002F\u002Fgithub.com\u002Fryuone\u002Fnenv).\n  * [**Git**](http:\u002F\u002Fhelp.github.com\u002Fgit-installation-redirect)\n  * **A database**. Only MySQL (see the version currently used above) has been tested, so we give no guarantees that other databases (e.g. PostgreSQL) work. You can install MySQL Community Server two ways:\n    1. If you are on a Mac, use homebrew: `brew install mysql` (*highly* recommended). Also consider installing the [MySQL Preference Pane](https:\u002F\u002Fdev.mysql.com\u002Fdoc\u002Frefman\u002F5.1\u002Fen\u002Fosx-installation-prefpane.html) to control MySQL startup and shutdown. It is packaged with the MySQL downloadable installer, but can be easily installed as a stand-alone.\n    2. Download a [MySQL installer from here](http:\u002F\u002Fdev.mysql.com\u002Fdownloads\u002Fmysql\u002F)\n  * [**Sphinx**](http:\u002F\u002Fpat.github.com\u002Fts\u002Fen\u002Finstalling_sphinx.html). Version 2.1.4 has been used successfully, but newer versions should work as well. Make sure to enable MySQL support. If you're using OS X and have Homebrew installed, install it with `brew install sphinx --with-mysql`\n  * [**Imagemagick**](http:\u002F\u002Fwww.imagemagick.org). If you're using OS X and have Homebrew installed, install it with `brew install imagemagick`\n\n### Setting up the development environment\n\n1.  Get the code. Clone this git repository and check out the latest release:\n\n    ```bash\n    git clone git@github.com:sharetribe\u002Fsharetribe.git\n    cd sharetribe\n    git checkout latest\n    ```\n\n1.  Install the required gems by running the following command in the project root directory:\n\n    ```bash\n    bundle install\n    ```\n\n    **Note:** [`libv8` might fail to build with Clang 7.3](https:\u002F\u002Fgithub.com\u002Fcowboyd\u002Flibv8\u002Fpull\u002F207), in that case you can try installing V8 manually:\n\n    ```bash\n    brew tap homebrew\u002Fversions\n    brew install v8-315\n\n    gem install libv8 -v '3.16.14.13' -- --with-system-v8\n    gem install therubyracer -- --with-v8-dir=\u002Fusr\u002Flocal\u002Fopt\u002Fv8-315\n\n    bundle install\n    ```\n\n1.  Install node modules:\n\n    ```bash\n    npm install && ( cd client && npm install )\n    ```\n\n1.  Create a `database.yml` file by copying the example database configuration:\n\n    ```bash\n    cp config\u002Fdatabase.example.yml config\u002Fdatabase.yml\n    ```\n\n1.  Add your database configuration details to `config\u002Fdatabase.yml`. You will probably only need to fill in the password for the database(s).\n\n1.  Create a `config.yml` file by copying the example configuration file:\n\n    ```bash\n    cp config\u002Fconfig.example.yml config\u002Fconfig.yml\n    ```\n\n1.  Create and initialize the database:\n\n    ```bash\n    bundle exec rake db:create db:schema:load\n    ```\n\n1.  Run Sphinx index:\n\n    ```bash\n    bundle exec rake ts:index\n    ```\n\n    **Note:** If your MySQL server is configured for SSL, update the `config\u002Fthinking_sphinx.yml` file and uncomment the `mysql_ssl_ca` lines. Configure correct SSL certificate chain for connection to your database over SSL.\n\n1.  Start the Sphinx daemon:\n\n    ```bash\n    bundle exec rake ts:start\n    ```\n\n1.  Start the development server:\n\n    ```bash\n    foreman start -f Procfile.static\n    ```\n\n1.  Invoke the delayed job worker in a new console (open the project root folder):\n\n    ```bash\n    bundle exec rake jobs:work\n    ```\n\n\nCongratulations! Sharetribe should now be up and running for development purposes. Open a browser and go to the server URL (e.g. http:\u002F\u002Flvh.me:3000 or http:\u002F\u002Flvh.me:5000). Fill in the form to create a new marketplace and admin user. You should be now able to access your marketplace and modify it from the admin area.\n\n### Mailcatcher\n\nUse [Mailcatcher](http:\u002F\u002Fmailcatcher.me) to receive sent emails locally:\n\n1.  Install Mailcatcher:\n\n    ```bash\n    gem install mailcatcher\n    ```\n\n1.  Start it:\n\n    ```bash\n    mailcatcher\n    ```\n\n1.  Add the following lines to `config\u002Fconfig.yml`:\n\n    ```yml\n    development:\n      mail_delivery_method: smtp\n      smtp_email_address: \"localhost\"\n      smtp_email_port: 1025\n    ```\n\n1.  Open `http:\u002F\u002Flocalhost:1080` in your browser\n\n### Database migrations\n\nTo update your local database schema to the newest version, run database migrations with:\n\n  ```bash\n  bundle exec rake db:migrate\n  ```\n\n### Running tests\n\nTests are handled by [RSpec](http:\u002F\u002Frspec.info\u002F) for unit tests and [Cucumber](https:\u002F\u002Fcucumber.io\u002F) for acceptance tests.\n\nInstall the following extra dependencies:\n\n  * [**Chromedriver**](https:\u002F\u002Fchromedriver.chromium.org\u002Fhome). Make sure to\n    install a driver version that matches your browser's.\n\nRemember to follow *all* the steps listed in the [Setting up the development environment](#setting-up-the-development-environment) paragraph before running tests because some tests depend on webpack assets.\n\n1.  Navigate to the root directory of the sharetribe project\n\n1.  Initialize your test database:\n\n    ```bash\n    bundle exec rake test:prepare\n    ```\n\n    This needs to be rerun whenever you make changes to your database schema.\n\n1.  If Zeus isn't running, start it:\n\n    ```bash\n    zeus start\n    ```\n\n1.  To run unit tests, open another terminal and run:\n\n    ```bash\n    zeus rspec spec\n    ```\n\n1.  To run acceptance tests, open another terminal and run:\n\n    ```bash\n    zeus cucumber\n    ```\n\n    Note that running acceptance tests is slow and may take a long time to complete.\n\nTo automatically run unit tests when code is changed, start [Guard](https:\u002F\u002Fgithub.com\u002Fguard\u002Fguard):\n\n  ```bash\n  bundle exec guard\n  ```\n\n### Working with React, Webpack and Foreman\n\nSome components are created with React (see [documentation](https:\u002F\u002Fgithub.com\u002Fsharetribe\u002Fsharetribe\u002Fblob\u002Fmaster\u002Fclient\u002FREADME.md)) and they need to be built with Webpack. We have [Foreman](http:\u002F\u002Ftheforeman.org\u002F) Procfiles that can be used to run both Rails and Webpack:\n\n1.  React component static build\n\n    ```bash\n    foreman start -f Procfile.static\n    ```\n\n1.  React component & hot loading styleguide (http:\u002F\u002Flocalhost:9001\u002F)\n\n    ```bash\n    foreman start -f Procfile.hot\n    ```\n\n1.  If you need to debug the Rails parts of Sharetribe with [Pry](https:\u002F\u002Fgithub.com\u002Fpry\u002Fpry), it's not possible with Foreman due to a [known compatibility issue](https:\u002F\u002Fgithub.com\u002Fddollar\u002Fforeman\u002Fpull\u002F536). In this case we recommend running Rails with old-fashioned `rails server` and React builds with Foreman in a separate terminal. That way your `binding.pry` calls open nicely in the same window with the Rails process.\n\n1.  React component static build, React client only\n\n    ```bash\n    foreman start -f Procfile.client-static\n    ```\n\n1.  React component & hot loading styleguide (http:\u002F\u002Flocalhost:9001\u002F), React client only\n\n    ```bash\n    foreman start -f Procfile.client-hot\n    ```\n\n### Setting up Sharetribe for production\n\nBefore starting these steps, perform [steps 1-5 from above](#setting-up-the-development-environment).\n\n1.  Set `secret_key_base`\n\n    Generate secret key\n\n    ```bash\n    rake secret\n    ```\n\n    Add the following lines to `config\u002Fconfig.yml`:\n\n    ```yml\n    production:\n      secret_key_base: # add here the generated key\n    ```\n\n    (You can also set the `secret_key_base` environment variable, if you don't want to store the secret key in a file)\n\n1.  Create the database:\n\n    ```bash\n    RAILS_ENV=production bundle exec rake db:create\n    ```\n\n1.  Initialize your database:\n\n    ```bash\n    RAILS_ENV=production bundle exec rake db:schema:load\n    ```\n\n1.  Run Sphinx index:\n\n    ```bash\n    RAILS_ENV=production bundle exec rake ts:index\n    ```\n\n1.  Start the Sphinx daemon:\n\n    ```bash\n    RAILS_ENV=production bundle exec rake ts:start\n    ```\n\n1.  Precompile the assets:\n\n    ```bash\n    RAILS_ENV=production NODE_ENV=production bundle exec rake assets:precompile\n    ```\n\n1.  Invoke the delayed job worker:\n\n    ```bash\n    RAILS_ENV=production bundle exec rake jobs:work\n    ```\n\n1.  In a new console, open the project root folder and start the server:\n\n    ```bash\n    bundle exec rails server -e production\n    ```\n\n\nThe built-in WEBrick server (which was started in the last step above) should not be used in production due to performance reasons. A dedicated HTTP server such as [unicorn](http:\u002F\u002Funicorn.bogomips.org\u002F) is recommended.\n\nIt is not recommended to serve static assets from a Rails server in production. Instead, you should use a CDN (Content Delivery Network) service, such as [Amazon CloudFront](https:\u002F\u002Faws.amazon.com\u002Fcloudfront\u002F). To serve the assets from the CDN service, you need to change the `asset_host` configuration in the the `config\u002Fconfig.yml` file to point your CDN distribution.\n\nYou need to configure a couple scheduled tasks in order to properly run your marketplace in production. See the [Scheduled tasks](docs\u002Fscheduled_tasks.md) documentation.\n\n**For production use we recommend you to upgrade only when new version is released and not to follow the master branch.**\n\n#### Setting your domain\n\n1. In your database, change the value of the `domain` column in the `communities` table to match the hostname of your domain. For example, if the URL for your marketplace is http:\u002F\u002Fmymarketplace.myhosting.com, then the domain is `mymarketplace.myhosting.com`.\n\n1. Change the value of the `use_domain` column to `true` (or `1`) in the `communities` table.\n\n1. If you wish to enable [HTTP Strict Transport Security](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHTTP_Strict_Transport_Security) (recommended), set also the `hsts_max_age` column in `communities` table to a non-zero number of seconds. For instance `31536000 ` (1 year).\n\n\n#### Setting up S3\n\nIf you want to use S3 to host your images, you need to do a bit more configuration.\n\n1. Create a IAM role which has full S3 access.  Save the AWS access and secret keys.\n\n1. In the S3 console, create two buckets, one for upload and one for permanent storage.  For example `your-sharetribe-images` and `your-sharetribe-images-tmp`.\n\n1. Set the upload bucket (`your-sharetribe-images-tmp`) to have an expiration (for example, of 14 days) using [lifecycle management](https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonS3\u002Flatest\u002Fdev\u002Fobject-lifecycle-mgmt.html)\n\n1. [Enable CORS on the upload bucket](https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonS3\u002Flatest\u002Fdev\u002Fcors.html).\n\n1. Set the following configuration in your sharetribe `config.yml`: `s3_bucket_name: \"your-sharetribe-images\"` `s3_upload_bucket_name:  \"your-sharetribe-images-tmp\"`\n\n1. Add your AWS keys to the sharetribe app.  The best way to do that is via environment variables, rather than checking them into your `config.yml`.  Set the `aws_access_key_id` and `aws_secret_access_key` environment variables to the values for the IAM user.\n\n1. (Optional) When you enable S3, uploaded images are linked directly to the S3 bucket. If you want to serve these assets through CDN, you can set the `user_asset_host` configuration option in addition to `asset_host` in `config\u002Fconfig.yml`.\n\n\nHere's a sample CORS configuration that allows anyone to post to your bucket.  Note that you may want to lock down the origin host more tightly, depending on your needs.\n\n```\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003CCORSConfiguration xmlns=\"http:\u002F\u002Fs3.amazonaws.com\u002Fdoc\u002F2006-03-01\u002F\">\n    \u003CCORSRule>\n        \u003CAllowedOrigin>*\u003C\u002FAllowedOrigin>\n        \u003CAllowedMethod>GET\u003C\u002FAllowedMethod>\n        \u003CAllowedMethod>POST\u003C\u002FAllowedMethod>\n        \u003CMaxAgeSeconds>3000\u003C\u002FMaxAgeSeconds>\n        \u003CAllowedHeader>*\u003C\u002FAllowedHeader>\n    \u003C\u002FCORSRule>\n\u003C\u002FCORSConfiguration>\n```\n\n##### Troubleshooting S3 Setup\n\n* if you are having trouble uploading, look at the request using browser devtools and see what error statuses and messages are being sent.\n* double check that your AWS keys are being correctly set.\n* if you can upload images successfully, but the images aren't processed, make sure that the delayed-job worker is running.\n\n### Advanced settings\n\nDefault configuration settings are stored in `config\u002Fconfig.default.yml`. If you need to change these, use the `config\u002Fconfig.yml` file to override the defaults. You can also set configuration values to environment variables.\n\nReact components can be created using hot module replacement HMR technique in Styleguide (http:\u002F\u002Flocalhost:9001\u002F) path in local development environment. Webpack is used to bundle React components for deployments and hot loading. Related webpack configs can be found from folder sharetribe\u002Fclient\u002F\n\n### Unofficial installation instructions\n\nUse these instructions to set up and deploy Sharetribe for production in different environments. They have been put together by the developer community, and are not officially maintained by the Sharetribe core team. The instructions might be somewhat out of date.\n\n- [Deploying Sharetribe to Heroku](https:\u002F\u002Fgist.github.com\u002Fsvallory\u002Fd08e9baa88e18d691605) by [svallory](https:\u002F\u002Fgithub.com\u002Fsvallory)\n- [How to install Sharetribe on Centos 7.x](https:\u002F\u002Fmedium.com\u002F@resilientbeast\u002Fhow-to-install-sharetribe-on-centos-7-x-cbdb6d0366e5) by [Arek Hukalowicz](https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Farek-hukalowicz-8ab0228a\u002F)\n\n\n## Payments\n\nPayPal and Stripe are the two available payment gateways integrated.\n\nPayPal payments are only available on marketplaces hosted at [Sharetribe.com](https:\u002F\u002Fwww.sharetribe.com) due to special permissions needed from PayPal. We hope to add support for PayPal payments to the source available version of Sharetribe Go in the future.\n\nStripe can be used in the source available version, as long as your country and currency are supported.\n\n### Enable Stripe\n\nStarting from release 7.2.0, Stripe is supported.\n\nStripe API keys will be encrypted when stored so it is important to configure your own random encryption key.\nYou should fill the `app_encryption_key` variable in the `config\u002Fconfig.yml` file with a long random string, unique to your project.\n\nStripe can be configured from the admin panel, in the \"Payment settings\" section. Instructions on how to get Stripe API keys can be found there.\n\nIf Stripe isn't automatically enabled in the admin panel after upgrading to 7.2.0, you should run the following commands in your Rails console, where `\u003CID>` is your marketplace ID (probably `1`):\n`TransactionService::API::API.processes.create(community_id: \u003CID>, process: :preauthorize, author_is_seller: true)`\nand\n`TransactionService::API::API.settings.provision(community_id: \u003CID>, payment_gateway: :stripe, payment_process: :preauthorize, active: true)`.\n\n## Custom Landing Page\n\nSharetribe Go includes a Custom Landing Page add-on and editor. You can [learn more about it here](https:\u002F\u002Fwww.sharetribe.com\u002Fproducts\u002Fgo\u002Flanding-page\u002F).\n\nThe Custom Landing Page Editor should be available automatically, from [v9.1.0](https:\u002F\u002Fgithub.com\u002Fsharetribe\u002Fsharetribe\u002Freleases\u002Ftag\u002Fv9.1.0). If this is not the case, you can find plenty of useful information in the *[Landing Pages for Idiots Like Me](https:\u002F\u002Fwww.sharetribe.com\u002Fcommunity\u002Ft\u002Flanding-pages-for-idiots-like-me\u002F2788)* post written by [Jeremy D Evans](https:\u002F\u002Fgithub.com\u002Fjeremyevans6).\n\n## Versioning\n\nSharetribe follows [Semantic Versioning](http:\u002F\u002Fsemver.org\u002F) where possible.\n\nGiven a version number MAJOR.MINOR.PATCH, increment the:\n\n* MAJOR version when you make incompatible API changes,\n* MINOR version when you add functionality in a backwards-compatible manner, and\n* PATCH version when you make backwards-compatible bug fixes.\n\nSee the document [How Sharetribe applies Semantic Versioning](docs\u002Fsemantic-versioning.md) to read more how Semantic Versioning is applied in practice.\n\n## Changes\n\nSee [CHANGELOG.md](CHANGELOG.md) for detailed list of changes between releases.\n\n\n## Upgrade\n\nSee [UPGRADE.md](UPGRADE.md) for information about actions needed when upgrading.\n\nFor production use we recommend you to upgrade only when new version is released and not to follow the master branch.\n\n## Contribute\n\nWould you like to make Sharetribe better?\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for the steps to contribute.\n\n## Release\n\nSee [RELEASE.md](RELEASE.md) for information about how to make a new release.\n\n\n## Translation\n\nTranslations are available through YAML files in the `\u002Fconfig\u002Flocales` folder.\n\n\n## Bug tracker\n\nBrowse open issues and submit new ones in [Github Issues](http:\u002F\u002Fgithub.com\u002Fsharetribe\u002Fsharetribe\u002Fissues). After you have opened a new issue, the team will handle it according to these instructions: [How to handle Github Issues](https:\u002F\u002Fgithub.com\u002Fsharetribe\u002Fsharetribe\u002Fblob\u002Fmaster\u002Fdocs\u002Fhow-to-handle-github-issues.md).\n\nWe are dedicating the Github Issue only for bugs in the Sharetribe Go codebase.\n\n\n## Documentation\n\nMore detailed technical documentation is located in [docs\u002F](docs\u002F).\n\n\n## License\n\nSharetribe Go is source-available under the Sharetribe Community Public License. See [LICENSE](LICENSE) for details.\n","Sharetribe Go 是一个用于构建在线市场的开源软件，尽管它已不再被积极维护。项目基于 Ruby 和 Ruby on Rails 技术栈，结合了 MySQL 作为数据库、React + jQuery 作为前端框架，并使用 Amazon S3 进行图片托管。核心功能包括用户认证、第三方登录（如 Facebook）、图片上传管理和延迟任务处理等。适合那些希望快速搭建并自定义扩展的在线市场平台场景，尤其是对于有一定技术基础且偏好自行部署和管理的开发者或团队。","2026-06-11 03:15:26","top_language"]