# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Apache Project configurations
#
name: Apache Marvin-AI
short_name: Marvin-AI
unix_name: Marvin
incubator_name: incubator-marvin
incubator_slash_name: incubator/marvin
description: Apache MarvinAI is a platform for machine learning operations (ML-Ops)!

download: /marvin-platform-book/ch2_toolbox_installation/overview

dev_list: dev@marvin.apache.org
dev_list_subscribe: dev-subscribe@marvin.apache.org
dev_list_unsubscribe: dev-unsubscribe@marvin.apache.org
dev_list_archive: http://mail-archives.apache.org/mod_mbox/marvin-dev/
dev_list_archive_mailarchive: https://www.mail-archive.com/dev@marvin.apache.org/
dev_list_archive_markmail:

user_list:
user_list_subscribe:
user_list_unsubscribe:
user_list_archive:
user_list_archive_mailarchive:
user_list_archive_markmail:

commits_list: commits@marvin.apache.org
commits_list_subscribe: commits-subscribe@marvin.apache.org
commits_list_unsubscribe: commits-unsubscribe@marvin.apache.org
commits_list_archive: http://mail-archives.apache.org/mod_mbox/marvin-commits/
commits_list_archive_mailarchive: https://www.mail-archive.com/commits@marvin.apache.org/
commits_list_archive_markmail:

jira: MARVIN

source_repository: https://gitbox.apache.org/repos/asf/incubator-marvin.git
source_repository_mirror: https://github.com/apache/incubator-marvin

website_repository: https://gitbox.apache.org/repos/asf/incubator-marvin-website.git
website_repository_mirror: https://github.com/apache/incubator-marvin-website

podling: true