# 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 MarvinAI
short_name: MarvinAI
unix_name: MarvinAI
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: MARVINAI

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